@inditextech/weave-sdk 0.25.0 → 0.26.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
@@ -1,6 +1,6 @@
1
1
  import Konva from "konva";
2
2
  import "konva/lib/types";
3
- import { WEAVE_AWARENESS_LAYER_ID, WEAVE_DEFAULT_TRANSFORM_PROPERTIES, WEAVE_EXPORT_BACKGROUND_COLOR, WEAVE_EXPORT_FILE_FORMAT, WEAVE_EXPORT_FORMATS, WEAVE_INSTANCE_STATUS, WEAVE_NODE_CUSTOM_EVENTS, WEAVE_NODE_LAYER_ID, WEAVE_NODE_POSITION, WEAVE_UTILITY_LAYER_ID } from "@inditextech/weave-types";
3
+ import { WEAVE_AWARENESS_LAYER_ID, WEAVE_DEFAULT_TRANSFORM_PROPERTIES, WEAVE_EXPORT_BACKGROUND_COLOR, WEAVE_EXPORT_FILE_FORMAT, WEAVE_EXPORT_FORMATS, WEAVE_INSTANCE_STATUS, WEAVE_NODE_CUSTOM_EVENTS, WEAVE_NODE_LAYER_ID, WEAVE_NODE_POSITION, WEAVE_STORE_CONNECTION_STATUS, WEAVE_UTILITY_LAYER_ID } from "@inditextech/weave-types";
4
4
  import { getYjsDoc, getYjsValue, observeDeep, syncedStore } from "@syncedstore/core";
5
5
  import { Doc, UndoManager } from "yjs";
6
6
  import React from "react";
@@ -15612,6 +15612,9 @@ var WeaveStore = class {
15612
15612
  if (!this.supportsUndoManager) throw new Error("Undo manager not supported");
15613
15613
  this.undoManager.redo();
15614
15614
  }
15615
+ handleConnectionStatusChange(status) {
15616
+ this.instance.emitEvent("onStoreConnectionStatusChange", status);
15617
+ }
15615
15618
  };
15616
15619
 
15617
15620
  //#endregion
@@ -16352,12 +16355,12 @@ var WeaveCopyPasteNodesPlugin = class extends WeavePlugin {
16352
16355
  initEvents() {
16353
16356
  const stage = this.instance.getStage();
16354
16357
  window.addEventListener("keydown", async (e) => {
16355
- if (e.key === "c" && (e.ctrlKey || e.metaKey)) {
16358
+ if (stage.isFocused() && e.key === "c" && (e.ctrlKey || e.metaKey)) {
16356
16359
  e.preventDefault();
16357
16360
  await this.performCopy();
16358
16361
  return;
16359
16362
  }
16360
- if (e.key === "v" && (e.ctrlKey || e.metaKey)) {
16363
+ if (stage.isFocused() && e.key === "v" && (e.ctrlKey || e.metaKey)) {
16361
16364
  e.preventDefault();
16362
16365
  if (!this.enabled) return;
16363
16366
  try {
@@ -16388,10 +16391,6 @@ var WeaveCopyPasteNodesPlugin = class extends WeavePlugin {
16388
16391
  stage.container().focus();
16389
16392
  return;
16390
16393
  }
16391
- if (e.key === "Escape") {
16392
- this.cancel();
16393
- return;
16394
- }
16395
16394
  });
16396
16395
  }
16397
16396
  mapToPasteNodes() {
@@ -16514,6 +16513,9 @@ var WeaveCopyPasteNodesPlugin = class extends WeavePlugin {
16514
16513
  //#endregion
16515
16514
  //#region src/nodes/node.ts
16516
16515
  const augmentKonvaStageClass = () => {
16516
+ Konva.Stage.prototype.isFocused = function() {
16517
+ return false;
16518
+ };
16517
16519
  Konva.Stage.prototype.isMouseWheelPressed = function() {
16518
16520
  return false;
16519
16521
  };
@@ -16528,6 +16530,8 @@ const augmentKonvaNodeClass = (config) => {
16528
16530
  };
16529
16531
  Konva.Node.prototype.movedToContainer = function() {};
16530
16532
  Konva.Node.prototype.updatePosition = function() {};
16533
+ Konva.Node.prototype.triggerCrop = function() {};
16534
+ Konva.Node.prototype.closeCrop = function() {};
16531
16535
  Konva.Node.prototype.resetCrop = function() {};
16532
16536
  };
16533
16537
  var WeaveNode = class {
@@ -18132,7 +18136,7 @@ var WeaveRegisterManager = class {
18132
18136
 
18133
18137
  //#endregion
18134
18138
  //#region package.json
18135
- var version = "0.25.0";
18139
+ var version = "0.26.1";
18136
18140
 
18137
18141
  //#endregion
18138
18142
  //#region src/managers/setup.ts
@@ -18486,11 +18490,13 @@ var WeavePluginsManager = class {
18486
18490
  //#endregion
18487
18491
  //#region src/weave.ts
18488
18492
  var Weave = class extends Emittery {
18493
+ initialized = false;
18489
18494
  status = WEAVE_INSTANCE_STATUS.IDLE;
18490
18495
  constructor(weaveConfig, stageConfig) {
18491
18496
  super();
18492
18497
  Konva.showWarnings = false;
18493
18498
  this.id = v4_default();
18499
+ this.initialized = false;
18494
18500
  this.config = weaveConfig;
18495
18501
  this.logger = new WeaveLogger(this.config?.logger ?? {
18496
18502
  disabled: false,
@@ -18521,9 +18527,11 @@ var Weave = class extends Emittery {
18521
18527
  setupRenderer() {
18522
18528
  this.renderer.init();
18523
18529
  this.renderer.render(() => {
18530
+ this.removeEventListener("onStoreConnectionStatusChange", this.handleStoreConnectionStatusChange.bind(this));
18524
18531
  this.setupManager.setupPlugins();
18525
18532
  this.setupManager.setupActions();
18526
18533
  this.moduleLogger.info("Instance started");
18534
+ this.initialized = true;
18527
18535
  this.status = WEAVE_INSTANCE_STATUS.RUNNING;
18528
18536
  this.emitEvent("onInstanceStatus", this.status);
18529
18537
  });
@@ -18537,6 +18545,16 @@ var Weave = class extends Emittery {
18537
18545
  setStore(store) {
18538
18546
  this.storeManager.registerStore(store);
18539
18547
  }
18548
+ handleStoreConnectionStatusChange(status) {
18549
+ if (!this.initialized && status === WEAVE_STORE_CONNECTION_STATUS.ERROR) {
18550
+ this.status = WEAVE_INSTANCE_STATUS.CONNECTING_ERROR;
18551
+ this.emitEvent("onInstanceStatus", this.status);
18552
+ }
18553
+ if (status === WEAVE_STORE_CONNECTION_STATUS.CONNECTED && !this.initialized) {
18554
+ this.status = WEAVE_INSTANCE_STATUS.LOADING_ROOM;
18555
+ this.emitEvent("onInstanceStatus", this.status);
18556
+ }
18557
+ }
18540
18558
  async start() {
18541
18559
  this.moduleLogger.info("Start instance");
18542
18560
  this.emitEvent("onRoomLoaded", false);
@@ -18553,7 +18571,10 @@ var Weave = class extends Emittery {
18553
18571
  await this.fontsManager.loadFonts();
18554
18572
  this.setupManager.setupLog();
18555
18573
  this.stageManager.initStage();
18574
+ this.status = WEAVE_INSTANCE_STATUS.CONNECTING_TO_ROOM;
18575
+ this.emitEvent("onInstanceStatus", this.status);
18556
18576
  const store = this.storeManager.getStore();
18577
+ this.addEventListener("onStoreConnectionStatusChange", this.handleStoreConnectionStatusChange.bind(this));
18557
18578
  store.setup();
18558
18579
  store.connect();
18559
18580
  }
@@ -18805,11 +18826,21 @@ const WEAVE_STAGE_NODE_TYPE = "stage";
18805
18826
  //#region src/nodes/stage/stage.ts
18806
18827
  var WeaveStageNode = class extends WeaveNode {
18807
18828
  nodeType = WEAVE_STAGE_NODE_TYPE;
18829
+ stageFocused = false;
18808
18830
  wheelMousePressed = false;
18809
18831
  onRender(props) {
18810
18832
  const stage = new Konva.Stage({ ...props });
18811
18833
  this.wheelMousePressed = false;
18834
+ stage.isFocused = () => this.stageFocused;
18812
18835
  stage.isMouseWheelPressed = () => this.wheelMousePressed;
18836
+ const container = stage.container();
18837
+ container.setAttribute("tabindex", "0");
18838
+ stage.container().addEventListener("focus", () => {
18839
+ this.stageFocused = true;
18840
+ });
18841
+ stage.container().addEventListener("blur", () => {
18842
+ this.stageFocused = false;
18843
+ });
18813
18844
  stage.on("mousedown", (e) => {
18814
18845
  if (e.evt.button === 1) this.wheelMousePressed = true;
18815
18846
  });
@@ -19716,9 +19747,11 @@ var WeaveImageCrop = class WeaveImageCrop {
19716
19747
  this.image = image;
19717
19748
  this.internalImage = internalImage;
19718
19749
  this.cropGroup = clipGroup;
19750
+ this.onClose = () => {};
19719
19751
  this.handleHide = this.hide.bind(this);
19720
19752
  }
19721
- show() {
19753
+ show(onClose) {
19754
+ this.onClose = onClose;
19722
19755
  const nodeSnappingPlugin = this.instance.getPlugin("nodesSnapping");
19723
19756
  if (nodeSnappingPlugin) this.instance.disablePlugin("nodesSnapping");
19724
19757
  const selectionPlugin = this.instance.getPlugin("nodesSelection");
@@ -19862,10 +19895,17 @@ var WeaveImageCrop = class WeaveImageCrop {
19862
19895
  this.cropGroup.show();
19863
19896
  this.instance.getStage().container().addEventListener("keydown", this.handleHide);
19864
19897
  }
19898
+ accept() {
19899
+ this.hide({ key: "Enter" });
19900
+ }
19901
+ cancel() {
19902
+ this.hide({ key: "Escape" });
19903
+ }
19865
19904
  hide(e) {
19866
19905
  if (!["Enter", "Escape"].includes(e.key)) return;
19867
19906
  this.image.setAttrs({ cropping: false });
19868
19907
  if (e.key === "Enter") this.handleClipEnd();
19908
+ this.onClose();
19869
19909
  const utilityLayer = this.instance.getUtilityLayer();
19870
19910
  utilityLayer?.destroyChildren();
19871
19911
  this.instance.getStage().container().removeEventListener("keydown", this.handleHide);
@@ -20025,6 +20065,10 @@ var WeaveImageCrop = class WeaveImageCrop {
20025
20065
  //#endregion
20026
20066
  //#region src/nodes/image/constants.ts
20027
20067
  const WEAVE_IMAGE_NODE_TYPE = "image";
20068
+ const WEAVE_IMAGE_CROP_END_TYPE = {
20069
+ ["ACCEPT"]: "accept",
20070
+ ["CANCEL"]: "cancel"
20071
+ };
20028
20072
 
20029
20073
  //#endregion
20030
20074
  //#region src/nodes/image/image.ts
@@ -20037,9 +20081,23 @@ var WeaveImageNode = class extends WeaveNode {
20037
20081
  ...WEAVE_DEFAULT_TRANSFORM_PROPERTIES,
20038
20082
  ...config?.transform
20039
20083
  } };
20084
+ this.imageCrop = null;
20040
20085
  this.cachedCropInfo = {};
20041
20086
  this.imageLoaded = false;
20042
20087
  }
20088
+ triggerCrop(imageNode) {
20089
+ const stage = this.instance.getStage();
20090
+ const image = stage.findOne(`#${imageNode.getAttrs().id}`);
20091
+ const internalImage = image?.findOne(`#${image.getAttrs().id}-image`);
20092
+ const cropGroup = image?.findOne(`#${image.getAttrs().id}-cropGroup`);
20093
+ if (!image || !internalImage || !cropGroup) return;
20094
+ this.imageCrop = new WeaveImageCrop(this.instance, this, image, internalImage, cropGroup);
20095
+ this.imageCrop.show(() => {
20096
+ this.instance.emitEvent("onImageCropEnd", { instance: image });
20097
+ this.imageCrop = null;
20098
+ });
20099
+ this.instance.emitEvent("onImageCropStart", { instance: image });
20100
+ }
20043
20101
  onRender(props) {
20044
20102
  const imageProperties = props.imageProperties;
20045
20103
  const imageProps = props;
@@ -20065,6 +20123,25 @@ var WeaveImageNode = class extends WeaveNode {
20065
20123
  if (!image$1) return;
20066
20124
  this.cachedCropInfo[image$1.getAttrs().id ?? ""] = void 0;
20067
20125
  };
20126
+ image.triggerCrop = () => {
20127
+ const stage = this.instance.getStage();
20128
+ const image$1 = stage.findOne(`#${id}`);
20129
+ if (!image$1) return;
20130
+ this.triggerCrop(image$1);
20131
+ };
20132
+ image.closeCrop = (type) => {
20133
+ const stage = this.instance.getStage();
20134
+ const image$1 = stage.findOne(`#${id}`);
20135
+ if (!image$1 || !this.imageCrop) return;
20136
+ if (type === WEAVE_IMAGE_CROP_END_TYPE.ACCEPT) {
20137
+ this.imageCrop.accept();
20138
+ this.instance.emitEvent("onImageCropEnd", { instance: image$1 });
20139
+ }
20140
+ if (type === WEAVE_IMAGE_CROP_END_TYPE.CANCEL) {
20141
+ this.imageCrop.cancel();
20142
+ this.instance.emitEvent("onImageCropEnd", { instance: image$1 });
20143
+ }
20144
+ };
20068
20145
  image.resetCrop = () => {
20069
20146
  const stage = this.instance.getStage();
20070
20147
  const image$1 = stage.findOne(`#${id}`);
@@ -20105,8 +20182,6 @@ var WeaveImageNode = class extends WeaveNode {
20105
20182
  rotation: 0,
20106
20183
  width: 0,
20107
20184
  height: 0,
20108
- stroke: "#ff0000ff",
20109
- strokeWidth: 0,
20110
20185
  strokeScaleEnabled: true,
20111
20186
  draggable: false,
20112
20187
  visible: false
@@ -20127,8 +20202,7 @@ var WeaveImageNode = class extends WeaveNode {
20127
20202
  if (image.getAttrs().cropping ?? false) return;
20128
20203
  if (!internalImage.getAttr("image")) return;
20129
20204
  if (!(this.isSelecting() && this.isNodeSelected(image))) return;
20130
- const imageCrop = new WeaveImageCrop(this.instance, this, image, internalImage, cropGroup);
20131
- imageCrop.show();
20205
+ this.triggerCrop(image);
20132
20206
  });
20133
20207
  const imageActionTool = this.getImageToolAction();
20134
20208
  const preloadImg = imageActionTool.getPreloadedImage(imageProps.id);
@@ -24455,5 +24529,5 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
24455
24529
  };
24456
24530
 
24457
24531
  //#endregion
24458
- export { ARROW_TOOL_ACTION_NAME, ARROW_TOOL_STATE, BRUSH_TOOL_ACTION_NAME, 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_LINE_DEFAULT_CONFIG, GUIDE_LINE_DRAG_SNAPPING_THRESHOLD, GUIDE_LINE_NAME, GUIDE_LINE_TRANSFORM_SNAPPING_THRESHOLD, GUIDE_ORIENTATION, IMAGE_TOOL_ACTION_NAME, IMAGE_TOOL_STATE, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, NODE_SNAP, 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, STAR_TOOL_ACTION_NAME, STAR_TOOL_STATE, TEXT_LAYOUT, TEXT_TOOL_ACTION_NAME, TEXT_TOOL_STATE, WEAVE_ARROW_NODE_TYPE, WEAVE_COPY_PASTE_NODES_KEY, WEAVE_DEFAULT_USER_INFO_FUNCTION, WEAVE_ELLIPSE_NODE_TYPE, WEAVE_FRAME_NODE_DEFAULT_CONFIG, WEAVE_FRAME_NODE_DEFAULT_PROPS, WEAVE_FRAME_NODE_SIZES, WEAVE_FRAME_NODE_SIZES_MULTIPLIER, WEAVE_FRAME_NODE_SIZES_ORIENTATION, WEAVE_FRAME_NODE_SIZES_TYPES, WEAVE_FRAME_NODE_TYPE, WEAVE_GRID_DEFAULT_COLOR, WEAVE_GRID_DEFAULT_ORIGIN_COLOR, WEAVE_GRID_DEFAULT_SIZE, WEAVE_GRID_DEFAULT_TYPE, WEAVE_GRID_LAYER_ID, WEAVE_GRID_TYPES, WEAVE_GROUP_NODE_TYPE, WEAVE_IMAGE_NODE_TYPE, WEAVE_LAYER_NODE_TYPE, WEAVE_LINE_NODE_TYPE, WEAVE_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_NODES_SNAPPING_KEY, WEAVE_RECTANGLE_NODE_TYPE, WEAVE_REGULAR_POLYGON_NODE_TYPE, WEAVE_STAGE_GRID_KEY, WEAVE_STAGE_NODE_TYPE, WEAVE_STAR_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, WeaveArrowNode, WeaveArrowToolAction, WeaveBrushToolAction, WeaveConnectedUsersPlugin, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveEllipseNode, WeaveEllipseToolAction, WeaveEraserToolAction, WeaveExportNodeToolAction, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToSelectionToolAction, WeaveFrameNode, WeaveFrameToolAction, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveLayerNode, WeaveLineNode, WeaveMoveToolAction, WeaveNode, WeaveNodesSelectionPlugin, WeaveNodesSnappingPlugin, WeavePenToolAction, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRegularPolygonNode, WeaveRegularPolygonToolAction, WeaveSelectionToolAction, WeaveStageDropAreaPlugin, WeaveStageGridPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomPlugin, WeaveStarNode, WeaveStarToolAction, WeaveStore, WeaveTextNode, WeaveTextToolAction, WeaveUsersPointersPlugin, WeaveUsersSelectionPlugin, WeaveZoomInToolAction, WeaveZoomOutToolAction, checkIfOverContainer, clearContainerTargets, moveNodeToContainer, resetScale };
24532
+ export { ARROW_TOOL_ACTION_NAME, ARROW_TOOL_STATE, BRUSH_TOOL_ACTION_NAME, 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_LINE_DEFAULT_CONFIG, GUIDE_LINE_DRAG_SNAPPING_THRESHOLD, GUIDE_LINE_NAME, GUIDE_LINE_TRANSFORM_SNAPPING_THRESHOLD, GUIDE_ORIENTATION, IMAGE_TOOL_ACTION_NAME, IMAGE_TOOL_STATE, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, NODE_SNAP, 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, STAR_TOOL_ACTION_NAME, STAR_TOOL_STATE, TEXT_LAYOUT, TEXT_TOOL_ACTION_NAME, TEXT_TOOL_STATE, WEAVE_ARROW_NODE_TYPE, WEAVE_COPY_PASTE_NODES_KEY, WEAVE_DEFAULT_USER_INFO_FUNCTION, WEAVE_ELLIPSE_NODE_TYPE, WEAVE_FRAME_NODE_DEFAULT_CONFIG, WEAVE_FRAME_NODE_DEFAULT_PROPS, WEAVE_FRAME_NODE_SIZES, WEAVE_FRAME_NODE_SIZES_MULTIPLIER, WEAVE_FRAME_NODE_SIZES_ORIENTATION, WEAVE_FRAME_NODE_SIZES_TYPES, WEAVE_FRAME_NODE_TYPE, WEAVE_GRID_DEFAULT_COLOR, WEAVE_GRID_DEFAULT_ORIGIN_COLOR, WEAVE_GRID_DEFAULT_SIZE, WEAVE_GRID_DEFAULT_TYPE, WEAVE_GRID_LAYER_ID, WEAVE_GRID_TYPES, WEAVE_GROUP_NODE_TYPE, WEAVE_IMAGE_CROP_END_TYPE, WEAVE_IMAGE_NODE_TYPE, WEAVE_LAYER_NODE_TYPE, WEAVE_LINE_NODE_TYPE, WEAVE_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_NODES_SNAPPING_KEY, WEAVE_RECTANGLE_NODE_TYPE, WEAVE_REGULAR_POLYGON_NODE_TYPE, WEAVE_STAGE_GRID_KEY, WEAVE_STAGE_NODE_TYPE, WEAVE_STAR_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, WeaveArrowNode, WeaveArrowToolAction, WeaveBrushToolAction, WeaveConnectedUsersPlugin, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveEllipseNode, WeaveEllipseToolAction, WeaveEraserToolAction, WeaveExportNodeToolAction, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToSelectionToolAction, WeaveFrameNode, WeaveFrameToolAction, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveLayerNode, WeaveLineNode, WeaveMoveToolAction, WeaveNode, WeaveNodesSelectionPlugin, WeaveNodesSnappingPlugin, WeavePenToolAction, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRegularPolygonNode, WeaveRegularPolygonToolAction, WeaveSelectionToolAction, WeaveStageDropAreaPlugin, WeaveStageGridPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomPlugin, WeaveStarNode, WeaveStarToolAction, WeaveStore, WeaveTextNode, WeaveTextToolAction, WeaveUsersPointersPlugin, WeaveUsersSelectionPlugin, WeaveZoomInToolAction, WeaveZoomOutToolAction, checkIfOverContainer, clearContainerTargets, moveNodeToContainer, resetScale };
24459
24533
  //# sourceMappingURL=sdk.js.map