@inditextech/weave-sdk 3.8.0 → 3.9.0-SNAPSHOT.177.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/sdk.js CHANGED
@@ -17679,19 +17679,20 @@ function moveNodeToContainerNT(instance, node, containerToMove, originalNode, or
17679
17679
  node.rotation(nodeRotation);
17680
17680
  node.x(node.x() - (layerToMoveAttrs.containerOffsetX ?? 0));
17681
17681
  node.y(node.y() - (layerToMoveAttrs.containerOffsetY ?? 0));
17682
- node.movedToContainer(layerToMove);
17682
+ node.destroy();
17683
+ const newNode = node.clone();
17683
17684
  instance.emitEvent("onNodeMovedToContainer", {
17684
- node: node.clone(),
17685
+ node: newNode,
17685
17686
  container: layerToMove,
17686
17687
  originalNode,
17687
17688
  originalContainer
17688
17689
  });
17689
17690
  const nodeHandler = instance.getNodeHandler(node.getAttrs().nodeType);
17690
17691
  if (nodeHandler) {
17691
- node.setAttrs({ onMoveContainer: true });
17692
- const actualNode = nodeHandler.serialize(node);
17693
- instance.removeNodeNT(actualNode, { emitUserChangeEvent: false });
17694
- instance.addNodeNT(actualNode, layerToMoveAttrs.id, {
17692
+ const actualNodeState = nodeHandler.serialize(node);
17693
+ const newNodeState = nodeHandler.serialize(newNode);
17694
+ instance.removeNodeNT(actualNodeState, { emitUserChangeEvent: false });
17695
+ instance.addNodeNT(newNodeState, layerToMoveAttrs.id, {
17695
17696
  emitUserChangeEvent: false,
17696
17697
  overrideUserChangeType: WEAVE_NODE_CHANGE_TYPE.UPDATE
17697
17698
  });
@@ -17920,17 +17921,6 @@ function isIOS() {
17920
17921
  return /iPad|iPhone|iPod/.test(navigator.userAgent) || navigator.userAgent.includes("Mac") && "ontouchend" in document;
17921
17922
  }
17922
17923
  const isServer = () => typeof window === "undefined";
17923
- const getPositionRelativeToContainerOnPosition = (instance) => {
17924
- let position = instance.getStage().getRelativePointerPosition();
17925
- if (!position) return position;
17926
- const container = containerOverCursor(instance, [], position);
17927
- if (container) if (container.getAttrs().containerId) {
17928
- const containerNode = container.findOne(`#${container.getAttrs().containerId}`);
17929
- if (containerNode) position = containerNode?.getRelativePointerPosition();
17930
- } else position = container?.getRelativePointerPosition();
17931
- if (!position) return position;
17932
- return position;
17933
- };
17934
17924
  const canComposite = (node) => {
17935
17925
  const parent = node.getParent();
17936
17926
  return parent?.getClassName() === "Group" && parent?.getAttrs().nodeType !== "frame" && parent?.getAttrs().nodeId === void 0;
@@ -18611,12 +18601,10 @@ const WEAVE_GRID_LAYER_ID = "gridLayer";
18611
18601
  //#region src/plugins/stage-panning/constants.ts
18612
18602
  const WEAVE_STAGE_PANNING_KEY = "stagePanning";
18613
18603
  const WEAVE_STAGE_PANNING_THROTTLE_MS = 20;
18614
- const WEAVE_STAGE_PANNING_DEFAULT_CONFIG = {
18615
- edgePanOffset: 25,
18616
- edgePanMinSpeed: 2,
18617
- edgePanSpeed: 10,
18618
- edgePanMaxSpeed: 30
18619
- };
18604
+ const WEAVE_STAGE_PANNING_DEFAULT_CONFIG = { edgePan: {
18605
+ offset: 25,
18606
+ speed: 20
18607
+ } };
18620
18608
 
18621
18609
  //#endregion
18622
18610
  //#region src/plugins/nodes-multi-selection-feedback/constants.ts
@@ -18838,16 +18826,21 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
18838
18826
  if (moved) this.getContextMenuPlugin()?.cancelLongPressTimer();
18839
18827
  this.triggerSelectedNodesEvent();
18840
18828
  if (this.getUsersPresencePlugin()) {
18841
- for (const node of tr.nodes()) this.getUsersPresencePlugin()?.setPresence(node.id(), {
18842
- x: node.x(),
18843
- y: node.y(),
18844
- width: node.width(),
18845
- height: node.height(),
18846
- scaleX: node.scaleX(),
18847
- scaleY: node.scaleY(),
18848
- rotation: node.rotation(),
18849
- strokeScaleEnabled: false
18850
- }, false);
18829
+ for (const node of tr.nodes()) {
18830
+ let parentId = node.getParent()?.id() ?? "";
18831
+ const parent = node.getParent();
18832
+ if (parent?.getAttrs().nodeId) parentId = parent.getAttrs().nodeId;
18833
+ this.getUsersPresencePlugin()?.setPresence(node.id(), parentId, {
18834
+ x: node.x(),
18835
+ y: node.y(),
18836
+ width: node.width(),
18837
+ height: node.height(),
18838
+ scaleX: node.scaleX(),
18839
+ scaleY: node.scaleY(),
18840
+ rotation: node.rotation(),
18841
+ strokeScaleEnabled: false
18842
+ }, false);
18843
+ }
18851
18844
  this.getUsersPresencePlugin()?.forceSendPresence();
18852
18845
  }
18853
18846
  };
@@ -18935,10 +18928,15 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
18935
18928
  clearContainerTargets(this.instance);
18936
18929
  const layerToMove = containerOverCursor(this.instance, selectedNodes);
18937
18930
  if (this.getUsersPresencePlugin() && this.dragInProcess) {
18938
- for (const node of selectedNodes) this.getUsersPresencePlugin()?.setPresence(node.id(), {
18939
- x: node.x(),
18940
- y: node.y()
18941
- }, false);
18931
+ for (const node of selectedNodes) {
18932
+ let parentId = node.getParent()?.id() ?? "";
18933
+ const parent = node.getParent();
18934
+ if (parent?.getAttrs().nodeId) parentId = parent.getAttrs().nodeId;
18935
+ this.getUsersPresencePlugin()?.setPresence(node.id(), parentId, {
18936
+ x: node.x(),
18937
+ y: node.y()
18938
+ }, false);
18939
+ }
18942
18940
  this.getUsersPresencePlugin()?.forceSendPresence();
18943
18941
  }
18944
18942
  if (layerToMove && !selectionContainsFrames) layerToMove.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetEnter, { bubbles: true });
@@ -20167,7 +20165,6 @@ const augmentKonvaNodeClass = (config) => {
20167
20165
  Konva.Node.prototype.getRealClientRect = function(config$1) {
20168
20166
  return this.getClientRect(config$1);
20169
20167
  };
20170
- Konva.Node.prototype.movedToContainer = function() {};
20171
20168
  Konva.Node.prototype.updatePosition = function() {};
20172
20169
  Konva.Node.prototype.triggerCrop = function() {};
20173
20170
  Konva.Node.prototype.closeCrop = function() {};
@@ -20217,7 +20214,6 @@ var WeaveNode = class {
20217
20214
  "bottom-right"
20218
20215
  ];
20219
20216
  };
20220
- node.movedToContainer = function() {};
20221
20217
  node.updatePosition = function() {};
20222
20218
  node.resetCrop = function() {};
20223
20219
  node.handleMouseover = function() {};
@@ -20406,7 +20402,10 @@ var WeaveNode = class {
20406
20402
  const nodesEdgeSnappingPlugin = this.getNodesEdgeSnappingPlugin();
20407
20403
  if (nodesSelectionPlugin && this.isSelecting() && this.isNodeSelected(node$1)) nodesSelectionPlugin.getTransformer().forceUpdate();
20408
20404
  if (nodesEdgeSnappingPlugin && transforming && this.isSelecting() && this.isNodeSelected(node$1)) nodesEdgeSnappingPlugin.evaluateGuidelines(e);
20409
- this.getUsersPresencePlugin()?.setPresence(node$1.id(), {
20405
+ let parentId = node$1.getParent()?.id() ?? "";
20406
+ const parent = node$1.getParent();
20407
+ if (parent?.getAttrs().nodeId) parentId = parent.getAttrs().nodeId;
20408
+ this.getUsersPresencePlugin()?.setPresence(node$1.id(), parentId, {
20410
20409
  x: node$1.x(),
20411
20410
  y: node$1.y(),
20412
20411
  width: node$1.width(),
@@ -20464,7 +20463,6 @@ var WeaveNode = class {
20464
20463
  const nodeTarget = e.target;
20465
20464
  let isWheelMousePressed = false;
20466
20465
  if (e.evt.button === 1) isWheelMousePressed = true;
20467
- e.cancelBubble = true;
20468
20466
  this.getNodesSelectionFeedbackPlugin()?.hideSelectionHalo(nodeTarget);
20469
20467
  this.getSelectionPlugin()?.saveDragSelectedNodes();
20470
20468
  if (this.getSelectionPlugin()?.getDragSelectedNodes().length === 1) this.getSelectionPlugin()?.setNodesOpacityOnDrag();
@@ -20558,7 +20556,10 @@ var WeaveNode = class {
20558
20556
  }
20559
20557
  if (this.isSelecting() && this.getSelectionPlugin()?.getSelectedNodes().length === 1) {
20560
20558
  clearContainerTargets(this.instance);
20561
- this.getUsersPresencePlugin()?.setPresence(realNodeTarget.id(), {
20559
+ let parentId = realNodeTarget.getParent()?.id() ?? "";
20560
+ const parent = realNodeTarget.getParent();
20561
+ if (parent?.getAttrs().nodeId) parentId = parent.getAttrs().nodeId;
20562
+ this.getUsersPresencePlugin()?.setPresence(realNodeTarget.id(), parentId, {
20562
20563
  x: realNodeTarget.x(),
20563
20564
  y: realNodeTarget.y()
20564
20565
  });
@@ -20771,7 +20772,6 @@ var WeaveNode = class {
20771
20772
  delete cleanedAttrs.mutexUserId;
20772
20773
  delete cleanedAttrs.draggable;
20773
20774
  delete cleanedAttrs.overridesMouseControl;
20774
- delete cleanedAttrs.onMoveContainer;
20775
20775
  delete cleanedAttrs.dragBoundFunc;
20776
20776
  return {
20777
20777
  key: attrs.id ?? "",
@@ -21386,45 +21386,23 @@ var WeaveTargetingManager = class {
21386
21386
  }
21387
21387
  getMousePointer(point) {
21388
21388
  this.logger.debug({ point }, "getMousePointer");
21389
- const stage = this.instance.getStage();
21390
21389
  const mainLayer = this.instance.getMainLayer();
21391
21390
  let relativeMousePointer = typeof point !== "undefined" ? point : mainLayer?.getRelativePointerPosition() ?? {
21392
21391
  x: 0,
21393
21392
  y: 0
21394
21393
  };
21395
- let measureContainer = mainLayer;
21396
- let container = mainLayer;
21397
21394
  const utilityLayer = this.instance.getUtilityLayer();
21398
21395
  if (utilityLayer) utilityLayer.visible(false);
21396
+ const containerAlt = containerOverCursor(this.instance, [], relativeMousePointer);
21399
21397
  const nodesSelection = this.instance.getPlugin("nodesSelection");
21400
21398
  if (nodesSelection) nodesSelection.getTransformer().visible(false);
21401
- const dummyRect = new Konva.Rect({
21402
- width: 10,
21403
- height: 10,
21404
- x: relativeMousePointer.x,
21405
- y: relativeMousePointer.y
21406
- });
21407
- mainLayer?.add(dummyRect);
21408
- const intersectedNode = this.nodeIntersectsContainerElement(dummyRect);
21409
- if (intersectedNode) {
21410
- const containerOfNode = stage.findOne(`#${intersectedNode.getAttrs().containerId}`);
21411
- if (containerOfNode) {
21412
- container = intersectedNode;
21413
- measureContainer = containerOfNode;
21414
- }
21415
- }
21416
- if (typeof point === "undefined" && container?.getAttrs().nodeType !== "layer") relativeMousePointer = measureContainer?.getRelativePointerPosition() ?? relativeMousePointer;
21417
- if (typeof point === "undefined" && container?.getAttrs().nodeType === "layer") relativeMousePointer = measureContainer?.getRelativePointerPosition() ?? {
21418
- x: 0,
21419
- y: 0
21420
- };
21399
+ relativeMousePointer = containerAlt?.getRelativePointerPosition() ?? relativeMousePointer;
21421
21400
  if (utilityLayer) utilityLayer.visible(true);
21422
21401
  if (nodesSelection) nodesSelection.getTransformer().visible(true);
21423
- dummyRect.destroy();
21424
21402
  return {
21425
21403
  mousePoint: relativeMousePointer,
21426
- container,
21427
- measureContainer
21404
+ container: containerAlt,
21405
+ measureContainer: containerAlt
21428
21406
  };
21429
21407
  }
21430
21408
  getMousePointerRelativeToContainer(container) {
@@ -22013,7 +21991,7 @@ var WeaveRegisterManager = class {
22013
21991
 
22014
21992
  //#endregion
22015
21993
  //#region package.json
22016
- var version = "3.8.0";
21994
+ var version = "3.9.0-SNAPSHOT.177.1";
22017
21995
 
22018
21996
  //#endregion
22019
21997
  //#region src/managers/setup.ts
@@ -23453,7 +23431,7 @@ var Weave = class {
23453
23431
  this.moduleLogger.info("Start instance");
23454
23432
  if (!this.isServerSide()) {
23455
23433
  this.eventsController = new AbortController();
23456
- if (!window.weave) window.weave = this;
23434
+ window.weave = this;
23457
23435
  }
23458
23436
  this.emitEvent("onRoomLoaded", false);
23459
23437
  this.status = WEAVE_INSTANCE_STATUS.STARTING;
@@ -24444,7 +24422,6 @@ var WeaveLayerNode = class extends WeaveNode {
24444
24422
  delete cleanedAttrs.mutexUserId;
24445
24423
  delete cleanedAttrs.draggable;
24446
24424
  delete cleanedAttrs.overridesMouseControl;
24447
- delete cleanedAttrs.onMoveContainer;
24448
24425
  delete cleanedAttrs.dragBoundFunc;
24449
24426
  return {
24450
24427
  key: attrs.id ?? "",
@@ -24529,7 +24506,6 @@ var WeaveGroupNode = class extends WeaveNode {
24529
24506
  delete cleanedAttrs.mutexUserId;
24530
24507
  delete cleanedAttrs.draggable;
24531
24508
  delete cleanedAttrs.overridesMouseControl;
24532
- delete cleanedAttrs.onMoveContainer;
24533
24509
  delete cleanedAttrs.dragBoundFunc;
24534
24510
  return {
24535
24511
  key: attrs.id ?? "",
@@ -25318,7 +25294,6 @@ var WeaveTextNode = class extends WeaveNode {
25318
25294
  delete cleanedAttrs.measureMultilineText;
25319
25295
  delete cleanedAttrs.overridesMouseControl;
25320
25296
  delete cleanedAttrs.shouldUpdateOnTransform;
25321
- delete cleanedAttrs.onMoveContainer;
25322
25297
  delete cleanedAttrs.dragBoundFunc;
25323
25298
  return {
25324
25299
  key: attrs.id ?? "",
@@ -25710,6 +25685,7 @@ const WEAVE_IMAGE_CROP_ANCHOR_POSITION = {
25710
25685
  ["BOTTOM_CENTER"]: "bottom-center"
25711
25686
  };
25712
25687
  const WEAVE_IMAGE_DEFAULT_CONFIG = {
25688
+ cleanup: { intervalMs: 60 * 1e3 },
25713
25689
  performance: { cache: { enabled: false } },
25714
25690
  style: {
25715
25691
  placeholder: { fill: "#aaaaaa" },
@@ -26409,6 +26385,25 @@ var WeaveImageNode = class extends WeaveNode {
26409
26385
  this.imageTryoutAttempts = {};
26410
26386
  this.imageFallback = {};
26411
26387
  }
26388
+ setupNotUsedImagesCleanup() {
26389
+ const cleanupHandler = () => {
26390
+ this.notUsedImagesCleanup = null;
26391
+ const stage = this.instance.getStage();
26392
+ const nodesIds = Object.keys(this.imageState);
26393
+ for (const nodeId of nodesIds) {
26394
+ const node = stage.findOne(`#${nodeId}`);
26395
+ if (!node) {
26396
+ delete this.imageSource[nodeId];
26397
+ delete this.imageState[nodeId];
26398
+ delete this.imageTryoutAttempts[nodeId];
26399
+ delete this.imageFallback[nodeId];
26400
+ }
26401
+ }
26402
+ this.setupNotUsedImagesCleanup();
26403
+ };
26404
+ const bindedCleanupHandler = cleanupHandler.bind(this);
26405
+ if (!this.notUsedImagesCleanup) setTimeout(bindedCleanupHandler, this.config.cleanup.intervalMs);
26406
+ }
26412
26407
  preloadCursors() {
26413
26408
  return new Promise((resolve) => {
26414
26409
  (async () => {
@@ -26485,6 +26480,7 @@ var WeaveImageNode = class extends WeaveNode {
26485
26480
  this.instance.resolveAsyncElement(nodeId, WEAVE_IMAGE_NODE_TYPE);
26486
26481
  }
26487
26482
  onRender(props) {
26483
+ this.setupNotUsedImagesCleanup();
26488
26484
  const imageProperties = props.imageProperties;
26489
26485
  const imageProps = props;
26490
26486
  const { id } = imageProps;
@@ -26510,11 +26506,6 @@ var WeaveImageNode = class extends WeaveNode {
26510
26506
  if (this.isSelecting() && selectedNodes.includes(image)) return "grab";
26511
26507
  return "pointer";
26512
26508
  };
26513
- image.movedToContainer = () => {
26514
- const stage = this.instance.getStage();
26515
- const image$1 = stage.findOne(`#${id}`);
26516
- if (!image$1) return;
26517
- };
26518
26509
  if (this.config.cropMode.enabled) {
26519
26510
  image.triggerCrop = () => {
26520
26511
  this.triggerCrop(image, { cmdCtrl: { triggered: false } });
@@ -27226,8 +27217,6 @@ var WeaveImageNode = class extends WeaveNode {
27226
27217
  }
27227
27218
  onDestroy(nodeInstance) {
27228
27219
  const nodeId = nodeInstance.getAttrs().id ?? "";
27229
- const isMoveContainer = nodeInstance.getAttr("onMoveContainer");
27230
- nodeInstance.setAttr("onMoveContainer", void 0);
27231
27220
  const utilityLayer = this.instance.getUtilityLayer();
27232
27221
  const nodes = utilityLayer?.find(".cropMode") ?? [];
27233
27222
  nodes.forEach((n) => {
@@ -27237,12 +27226,6 @@ var WeaveImageNode = class extends WeaveNode {
27237
27226
  clearTimeout(this.imageTryoutIds[nodeId]);
27238
27227
  delete this.imageTryoutIds[nodeId];
27239
27228
  }
27240
- if (!isMoveContainer) {
27241
- delete this.imageSource[nodeId];
27242
- delete this.imageState[nodeId];
27243
- delete this.imageTryoutAttempts[nodeId];
27244
- delete this.imageFallback[nodeId];
27245
- }
27246
27229
  nodeInstance.destroy();
27247
27230
  }
27248
27231
  };
@@ -27789,7 +27772,6 @@ var WeaveFrameNode = class extends WeaveNode {
27789
27772
  delete cleanedAttrs.draggable;
27790
27773
  delete cleanedAttrs.onTargetEnter;
27791
27774
  delete cleanedAttrs.overridesMouseControl;
27792
- delete cleanedAttrs.onMoveContainer;
27793
27775
  delete cleanedAttrs.dragBoundFunc;
27794
27776
  return {
27795
27777
  key: realAttrs?.id ?? "",
@@ -28028,7 +28010,6 @@ var WeaveStrokeNode = class extends WeaveNode {
28028
28010
  delete cleanedAttrs.sceneFunc;
28029
28011
  delete cleanedAttrs.hitFunc;
28030
28012
  delete cleanedAttrs.overridesMouseControl;
28031
- delete cleanedAttrs.onMoveContainer;
28032
28013
  delete cleanedAttrs.dragBoundFunc;
28033
28014
  return {
28034
28015
  key: attrs.id ?? "",
@@ -29573,6 +29554,7 @@ var WeaveVideoNode = class extends WeaveNode {
29573
29554
  const videoIconGroup = video.findOne(`#${id}-video-icon-group`);
29574
29555
  if (!videoPlaceholder || !videoIconGroup) return;
29575
29556
  const realVideoPlaceholderURL = this.config.urlTransformer?.(videoProps.videoPlaceholderURL ?? "", video) ?? videoProps.videoPlaceholderURL;
29557
+ if (!this.videoPlaceholder) this.initialize();
29576
29558
  this.videoPlaceholder[id] = Konva.Util.createImageElement();
29577
29559
  this.videoPlaceholder[id].crossOrigin = this.config.crossOrigin;
29578
29560
  this.videoPlaceholder[id].src = realVideoPlaceholderURL;
@@ -31960,7 +31942,6 @@ var WeaveConnectorNode = class extends WeaveNode {
31960
31942
  delete cleanedAttrs.startInfoLoaded;
31961
31943
  delete cleanedAttrs.endInfoLoaded;
31962
31944
  delete cleanedAttrs.overridesMouseControl;
31963
- delete cleanedAttrs.onMoveContainer;
31964
31945
  delete cleanedAttrs.dragBoundFunc;
31965
31946
  return {
31966
31947
  key: attrs.id ?? "",
@@ -34419,7 +34400,7 @@ var WeaveImageToolAction = class extends WeaveAction {
34419
34400
  const dragProperties = this.instance.getDragProperties();
34420
34401
  if (dragProperties && dragId === WEAVE_IMAGE_TOOL_ACTION_NAME) {
34421
34402
  this.instance.getStage().setPointersPositions(e);
34422
- const position = getPositionRelativeToContainerOnPosition(this.instance);
34403
+ const position = this.instance.getStage().getRelativePointerPosition();
34423
34404
  if (!position) return;
34424
34405
  this.instance.triggerAction(WEAVE_IMAGE_TOOL_ACTION_NAME, {
34425
34406
  type: WEAVE_IMAGE_TOOL_UPLOAD_TYPE.IMAGE_URL,
@@ -34869,7 +34850,7 @@ var WeaveImagesToolAction = class extends WeaveAction {
34869
34850
  const dragProperties = this.instance.getDragProperties();
34870
34851
  if (dragProperties && dragId === WEAVE_IMAGES_TOOL_ACTION_NAME) {
34871
34852
  this.instance.getStage().setPointersPositions(e);
34872
- const position = getPositionRelativeToContainerOnPosition(this.instance);
34853
+ const position = this.instance.getStage().getRelativePointerPosition();
34873
34854
  if (!position) return;
34874
34855
  this.instance.triggerAction(WEAVE_IMAGES_TOOL_ACTION_NAME, {
34875
34856
  type: WEAVE_IMAGES_TOOL_UPLOAD_TYPE.IMAGE_URL,
@@ -36980,7 +36961,7 @@ var WeaveVideoToolAction = class extends WeaveAction {
36980
36961
  const dragProperties = this.instance.getDragProperties();
36981
36962
  if (dragProperties && dragId === VIDEO_TOOL_ACTION_NAME) {
36982
36963
  this.instance.getStage().setPointersPositions(e);
36983
- const position = getPositionRelativeToContainerOnPosition(this.instance);
36964
+ const position = this.instance.getStage().getRelativePointerPosition();
36984
36965
  this.instance.triggerAction(VIDEO_TOOL_ACTION_NAME, {
36985
36966
  videoId: dragProperties.videoId,
36986
36967
  videoParams: dragProperties.videoParams,
@@ -38242,13 +38223,12 @@ var WeaveStagePanningPlugin = class extends WeavePlugin {
38242
38223
  if (this.panEdgeTargets[e.target.getAttrs().id ?? ""] !== void 0) return;
38243
38224
  this.panEdgeTargets[e.target.getAttrs().id ?? ""] = e.target;
38244
38225
  if (this.stageScrollInterval !== void 0) return;
38226
+ const speed = this.config.edgePan.speed;
38245
38227
  this.stageScrollInterval = setInterval(() => {
38246
38228
  const pos = stage.getPointerPosition();
38247
- const offset = this.config.edgePanOffset;
38229
+ const offset = this.config.edgePan.offset;
38248
38230
  if (!pos) return;
38249
38231
  const { width, height } = stage.size();
38250
- const scale = stage.scaleX();
38251
- const speed = Math.max(this.config.edgePanMinSpeed, Math.min(this.config.edgePanMaxSpeed, this.config.edgePanSpeed / scale));
38252
38232
  let isNearLeft = false;
38253
38233
  let isNearRight = false;
38254
38234
  let isNearTop = false;
@@ -39258,7 +39238,11 @@ var WeaveUsersPresencePlugin = class extends WeavePlugin {
39258
39238
  const presenceInfo = userPresence[nodeId];
39259
39239
  if (this.config.getUser().id === presenceInfo.userId) continue;
39260
39240
  const nodeInstance = stage.findOne(`#${presenceInfo.nodeId}`);
39261
- if (nodeInstance) {
39241
+ if (!nodeInstance) continue;
39242
+ let parentId = nodeInstance.getParent()?.id() ?? "";
39243
+ const parent = nodeInstance.getParent();
39244
+ if (parent?.getAttrs().nodeId) parentId = parent.getAttrs().nodeId;
39245
+ if (nodeInstance && presenceInfo.parentId === parentId) {
39262
39246
  const newProps = {
39263
39247
  ...nodeInstance.getAttrs(),
39264
39248
  ...presenceInfo.attrs
@@ -39273,10 +39257,11 @@ var WeaveUsersPresencePlugin = class extends WeavePlugin {
39273
39257
  const store = this.instance.getStore();
39274
39258
  store.setAwarenessInfo(WEAVE_USER_PRESENCE_KEY, this.userPresence);
39275
39259
  }
39276
- setPresence(nodeId, attrs, forceUpdate = true) {
39260
+ setPresence(nodeId, parentId, attrs, forceUpdate = true) {
39277
39261
  const userInfo = this.config.getUser();
39278
39262
  this.userPresence[nodeId] = {
39279
39263
  userId: userInfo.id,
39264
+ parentId,
39280
39265
  nodeId,
39281
39266
  attrs
39282
39267
  };
@@ -40602,4 +40587,4 @@ function getJSONFromYjsBinary(actualState) {
40602
40587
  }
40603
40588
 
40604
40589
  //#endregion
40605
- export { ALIGN_NODES_ALIGN_TO, ALIGN_NODES_TOOL_ACTION_NAME, ALIGN_NODES_TOOL_STATE, BRUSH_TOOL_ACTION_NAME, BRUSH_TOOL_DEFAULT_CONFIG, BRUSH_TOOL_STATE, CONNECTOR_TOOL_ACTION_NAME, CONNECTOR_TOOL_DEFAULT_CONFIG, CONNECTOR_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_STATE, ELLIPSE_TOOL_ACTION_NAME, ELLIPSE_TOOL_STATE, ERASER_TOOL_ACTION_NAME, ERASER_TOOL_STATE, FRAME_TOOL_ACTION_NAME, FRAME_TOOL_STATE, GUIDE_DISTANCE_LINE_DEFAULT_CONFIG, GUIDE_ENTER_SNAPPING_TOLERANCE, GUIDE_EXIT_SNAPPING_TOLERANCE, GUIDE_HORIZONTAL_LINE_NAME, GUIDE_LINE_DEFAULT_CONFIG, GUIDE_LINE_DRAG_SNAPPING_THRESHOLD, GUIDE_LINE_NAME, GUIDE_LINE_TRANSFORM_SNAPPING_THRESHOLD, GUIDE_ORIENTATION, GUIDE_VERTICAL_LINE_NAME, LINE_TOOL_ACTION_NAME, LINE_TOOL_DEFAULT_CONFIG, LINE_TOOL_STATE, MEASURE_TOOL_ACTION_NAME, MEASURE_TOOL_STATE, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, NODE_SNAP, NODE_SNAP_HORIZONTAL, NODE_SNAP_VERTICAL, PEN_TOOL_ACTION_NAME, PEN_TOOL_STATE, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, REGULAR_POLYGON_TOOL_ACTION_NAME, REGULAR_POLYGON_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, STAGE_MINIMAP_DEFAULT_CONFIG, STAR_TOOL_ACTION_NAME, STAR_TOOL_STATE, TEXT_LAYOUT, TEXT_TOOL_ACTION_NAME, TEXT_TOOL_STATE, VIDEO_TOOL_ACTION_NAME, VIDEO_TOOL_STATE, WEAVE_ARROW_NODE_TYPE, WEAVE_ARROW_TOOL_ACTION_NAME, WEAVE_ARROW_TOOL_STATE, WEAVE_COMMENTS_RENDERER_KEY, WEAVE_COMMENTS_TOOL_LAYER_ID, WEAVE_COMMENT_CREATE_ACTION, WEAVE_COMMENT_NODE_ACTION, WEAVE_COMMENT_NODE_DEFAULTS, WEAVE_COMMENT_NODE_TYPE, WEAVE_COMMENT_STATUS, WEAVE_COMMENT_TOOL_ACTION_NAME, WEAVE_COMMENT_TOOL_DEFAULT_CONFIG, WEAVE_COMMENT_TOOL_STATE, WEAVE_COMMENT_VIEW_ACTION, WEAVE_CONNECTOR_NODE_ANCHOR_ORIGIN, WEAVE_CONNECTOR_NODE_DECORATOR_TYPE, WEAVE_CONNECTOR_NODE_DEFAULT_CONFIG, WEAVE_CONNECTOR_NODE_LINE_ORIGIN, WEAVE_CONNECTOR_NODE_LINE_TYPE, WEAVE_CONNECTOR_NODE_TYPE, WEAVE_COPY_PASTE_CONFIG_DEFAULT, WEAVE_COPY_PASTE_NODES_KEY, WEAVE_COPY_PASTE_PASTE_CATCHER_ID, WEAVE_COPY_PASTE_PASTE_MODES, WEAVE_DEFAULT_USER_INFO_FUNCTION, WEAVE_ELLIPSE_NODE_TYPE, WEAVE_FRAME_DEFAULT_BACKGROUND_COLOR, WEAVE_FRAME_NODE_DEFAULT_CONFIG, WEAVE_FRAME_NODE_DEFAULT_PROPS, WEAVE_FRAME_NODE_TYPE, WEAVE_GRID_DEFAULT_CONFIG, WEAVE_GRID_DOT_TYPES, WEAVE_GRID_LAYER_ID, WEAVE_GRID_TYPES, WEAVE_GROUP_NODE_TYPE, WEAVE_IMAGES_TOOL_ACTION_NAME, WEAVE_IMAGES_TOOL_DEFAULT_CONFIG, WEAVE_IMAGES_TOOL_STATE, WEAVE_IMAGES_TOOL_UPLOAD_TYPE, WEAVE_IMAGE_CROP_ANCHOR_POSITION, WEAVE_IMAGE_CROP_END_TYPE, WEAVE_IMAGE_DEFAULT_CONFIG, WEAVE_IMAGE_NODE_TYPE, WEAVE_IMAGE_TOOL_ACTION_NAME, WEAVE_IMAGE_TOOL_CONFIG_DEFAULT, WEAVE_IMAGE_TOOL_STATE, WEAVE_IMAGE_TOOL_UPLOAD_TYPE, WEAVE_LAYER_NODE_TYPE, WEAVE_LINE_NODE_DEFAULT_CONFIG, WEAVE_LINE_NODE_TYPE, WEAVE_MEASURE_NODE_DEFAULT_CONFIG, WEAVE_MEASURE_NODE_TYPE, WEAVE_MEASURE_TOOL_DEFAULT_CONFIG, WEAVE_NODES_DISTANCE_SNAPPING_PLUGIN_KEY, WEAVE_NODES_EDGE_SNAPPING_PLUGIN_KEY, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_DEFAULT_CONFIG, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_KEY, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_LAYER_ID, WEAVE_NODES_SELECTION_DEFAULT_CONFIG, WEAVE_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_RECTANGLE_NODE_TYPE, WEAVE_REGULAR_POLYGON_NODE_TYPE, WEAVE_STAGE_DEFAULT_MODE, WEAVE_STAGE_DROP_AREA_KEY, WEAVE_STAGE_GRID_PLUGIN_KEY, WEAVE_STAGE_IMAGE_CROPPING_MODE, WEAVE_STAGE_KEYBOARD_MOVE_DEFAULT_CONFIG, WEAVE_STAGE_KEYBOARD_MOVE_KEY, WEAVE_STAGE_KEYBOARD_MOVE_ORIENTATION, WEAVE_STAGE_MINIMAP_KEY, WEAVE_STAGE_NODE_TYPE, WEAVE_STAGE_PANNING_DEFAULT_CONFIG, WEAVE_STAGE_PANNING_KEY, WEAVE_STAGE_PANNING_THROTTLE_MS, WEAVE_STAGE_TEXT_EDITION_MODE, WEAVE_STAGE_ZOOM_DEFAULT_CONFIG, WEAVE_STAGE_ZOOM_KEY, WEAVE_STAGE_ZOOM_TYPE, WEAVE_STAR_NODE_TYPE, WEAVE_STROKE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_NODE_TYPE, WEAVE_STROKE_SINGLE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_SINGLE_NODE_TIP_SIDE, WEAVE_STROKE_SINGLE_NODE_TIP_TYPE, WEAVE_STROKE_SINGLE_NODE_TYPE, WEAVE_STROKE_TOOL_ACTION_NAME, WEAVE_STROKE_TOOL_ACTION_NAME_ALIASES, WEAVE_STROKE_TOOL_DEFAULT_CONFIG, WEAVE_STROKE_TOOL_STATE, WEAVE_TEXT_NODE_DEFAULT_CONFIG, WEAVE_TEXT_NODE_TYPE, WEAVE_USERS_POINTERS_CONFIG_DEFAULT_PROPS, WEAVE_USERS_POINTERS_KEY, WEAVE_USERS_PRESENCE_CONFIG_DEFAULT_PROPS, WEAVE_USERS_PRESENCE_PLUGIN_KEY, WEAVE_USERS_SELECTION_KEY, WEAVE_USER_POINTER_KEY, WEAVE_USER_PRESENCE_KEY, WEAVE_USER_SELECTION_KEY, WEAVE_VIDEO_DEFAULT_CONFIG, WEAVE_VIDEO_NODE_TYPE, Weave, WeaveAction, WeaveAlignNodesToolAction, WeaveArrowNode, WeaveArrowToolAction, WeaveBrushToolAction, WeaveCommentNode, WeaveCommentToolAction, WeaveCommentsRendererPlugin, WeaveConnectedUsersPlugin, WeaveConnectorNode, WeaveConnectorToolAction, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveEllipseNode, WeaveEllipseToolAction, WeaveEraserToolAction, WeaveExportNodesToolAction, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToSelectionToolAction, WeaveFrameNode, WeaveFrameToolAction, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveImagesToolAction, WeaveLayerNode, WeaveLineNode, WeaveLineToolAction, WeaveMeasureNode, WeaveMeasureToolAction, WeaveMoveToolAction, WeaveNode, WeaveNodesDistanceSnappingPlugin, WeaveNodesEdgeSnappingPlugin, WeaveNodesMultiSelectionFeedbackPlugin, WeaveNodesSelectionPlugin, WeavePenToolAction, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRegularPolygonNode, WeaveRegularPolygonToolAction, WeaveRenderer, WeaveSelectionToolAction, WeaveStageDropAreaPlugin, WeaveStageGridPlugin, WeaveStageKeyboardMovePlugin, WeaveStageMinimapPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomPlugin, WeaveStarNode, WeaveStarToolAction, WeaveStore, WeaveStrokeNode, WeaveStrokeSingleNode, WeaveStrokeToolAction, WeaveTextNode, WeaveTextToolAction, WeaveUsersPointersPlugin, WeaveUsersPresencePlugin, WeaveUsersSelectionPlugin, WeaveVideoNode, WeaveVideoToolAction, WeaveZoomInToolAction, WeaveZoomOutToolAction, canComposite, clearContainerTargets, containerOverCursor, containsNodeDeep, defaultInitialState, downscaleImageFile, downscaleImageFromURL, getBoundingBox, getDownscaleRatio, getExportBoundingBox, getImageSizeFromFile, getJSONFromYjsBinary, getPositionRelativeToContainerOnPosition, getSelectedNodesMetadata, getStageClickPoint, getTargetAndSkipNodes, getTargetedNode, getTopmostShadowHost, getVisibleNodes, getVisibleNodesInViewport, hasFrames, hasImages, intersectArrays, isArray, isIOS, isInShadowDOM, isNodeInSelection, isObject, isServer, loadImageSource, mapJsonToYjsArray, mapJsonToYjsElements, mapJsonToYjsMap, memoize, mergeExceptArrays, moveNodeToContainer, moveNodeToContainerNT, resetScale, weavejsToYjsBinary };
40590
+ export { ALIGN_NODES_ALIGN_TO, ALIGN_NODES_TOOL_ACTION_NAME, ALIGN_NODES_TOOL_STATE, BRUSH_TOOL_ACTION_NAME, BRUSH_TOOL_DEFAULT_CONFIG, BRUSH_TOOL_STATE, CONNECTOR_TOOL_ACTION_NAME, CONNECTOR_TOOL_DEFAULT_CONFIG, CONNECTOR_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_STATE, ELLIPSE_TOOL_ACTION_NAME, ELLIPSE_TOOL_STATE, ERASER_TOOL_ACTION_NAME, ERASER_TOOL_STATE, FRAME_TOOL_ACTION_NAME, FRAME_TOOL_STATE, GUIDE_DISTANCE_LINE_DEFAULT_CONFIG, GUIDE_ENTER_SNAPPING_TOLERANCE, GUIDE_EXIT_SNAPPING_TOLERANCE, GUIDE_HORIZONTAL_LINE_NAME, GUIDE_LINE_DEFAULT_CONFIG, GUIDE_LINE_DRAG_SNAPPING_THRESHOLD, GUIDE_LINE_NAME, GUIDE_LINE_TRANSFORM_SNAPPING_THRESHOLD, GUIDE_ORIENTATION, GUIDE_VERTICAL_LINE_NAME, LINE_TOOL_ACTION_NAME, LINE_TOOL_DEFAULT_CONFIG, LINE_TOOL_STATE, MEASURE_TOOL_ACTION_NAME, MEASURE_TOOL_STATE, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, NODE_SNAP, NODE_SNAP_HORIZONTAL, NODE_SNAP_VERTICAL, PEN_TOOL_ACTION_NAME, PEN_TOOL_STATE, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, REGULAR_POLYGON_TOOL_ACTION_NAME, REGULAR_POLYGON_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, STAGE_MINIMAP_DEFAULT_CONFIG, STAR_TOOL_ACTION_NAME, STAR_TOOL_STATE, TEXT_LAYOUT, TEXT_TOOL_ACTION_NAME, TEXT_TOOL_STATE, VIDEO_TOOL_ACTION_NAME, VIDEO_TOOL_STATE, WEAVE_ARROW_NODE_TYPE, WEAVE_ARROW_TOOL_ACTION_NAME, WEAVE_ARROW_TOOL_STATE, WEAVE_COMMENTS_RENDERER_KEY, WEAVE_COMMENTS_TOOL_LAYER_ID, WEAVE_COMMENT_CREATE_ACTION, WEAVE_COMMENT_NODE_ACTION, WEAVE_COMMENT_NODE_DEFAULTS, WEAVE_COMMENT_NODE_TYPE, WEAVE_COMMENT_STATUS, WEAVE_COMMENT_TOOL_ACTION_NAME, WEAVE_COMMENT_TOOL_DEFAULT_CONFIG, WEAVE_COMMENT_TOOL_STATE, WEAVE_COMMENT_VIEW_ACTION, WEAVE_CONNECTOR_NODE_ANCHOR_ORIGIN, WEAVE_CONNECTOR_NODE_DECORATOR_TYPE, WEAVE_CONNECTOR_NODE_DEFAULT_CONFIG, WEAVE_CONNECTOR_NODE_LINE_ORIGIN, WEAVE_CONNECTOR_NODE_LINE_TYPE, WEAVE_CONNECTOR_NODE_TYPE, WEAVE_COPY_PASTE_CONFIG_DEFAULT, WEAVE_COPY_PASTE_NODES_KEY, WEAVE_COPY_PASTE_PASTE_CATCHER_ID, WEAVE_COPY_PASTE_PASTE_MODES, WEAVE_DEFAULT_USER_INFO_FUNCTION, WEAVE_ELLIPSE_NODE_TYPE, WEAVE_FRAME_DEFAULT_BACKGROUND_COLOR, WEAVE_FRAME_NODE_DEFAULT_CONFIG, WEAVE_FRAME_NODE_DEFAULT_PROPS, WEAVE_FRAME_NODE_TYPE, WEAVE_GRID_DEFAULT_CONFIG, WEAVE_GRID_DOT_TYPES, WEAVE_GRID_LAYER_ID, WEAVE_GRID_TYPES, WEAVE_GROUP_NODE_TYPE, WEAVE_IMAGES_TOOL_ACTION_NAME, WEAVE_IMAGES_TOOL_DEFAULT_CONFIG, WEAVE_IMAGES_TOOL_STATE, WEAVE_IMAGES_TOOL_UPLOAD_TYPE, WEAVE_IMAGE_CROP_ANCHOR_POSITION, WEAVE_IMAGE_CROP_END_TYPE, WEAVE_IMAGE_DEFAULT_CONFIG, WEAVE_IMAGE_NODE_TYPE, WEAVE_IMAGE_TOOL_ACTION_NAME, WEAVE_IMAGE_TOOL_CONFIG_DEFAULT, WEAVE_IMAGE_TOOL_STATE, WEAVE_IMAGE_TOOL_UPLOAD_TYPE, WEAVE_LAYER_NODE_TYPE, WEAVE_LINE_NODE_DEFAULT_CONFIG, WEAVE_LINE_NODE_TYPE, WEAVE_MEASURE_NODE_DEFAULT_CONFIG, WEAVE_MEASURE_NODE_TYPE, WEAVE_MEASURE_TOOL_DEFAULT_CONFIG, WEAVE_NODES_DISTANCE_SNAPPING_PLUGIN_KEY, WEAVE_NODES_EDGE_SNAPPING_PLUGIN_KEY, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_DEFAULT_CONFIG, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_KEY, WEAVE_NODES_MULTI_SELECTION_FEEDBACK_PLUGIN_LAYER_ID, WEAVE_NODES_SELECTION_DEFAULT_CONFIG, WEAVE_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_RECTANGLE_NODE_TYPE, WEAVE_REGULAR_POLYGON_NODE_TYPE, WEAVE_STAGE_DEFAULT_MODE, WEAVE_STAGE_DROP_AREA_KEY, WEAVE_STAGE_GRID_PLUGIN_KEY, WEAVE_STAGE_IMAGE_CROPPING_MODE, WEAVE_STAGE_KEYBOARD_MOVE_DEFAULT_CONFIG, WEAVE_STAGE_KEYBOARD_MOVE_KEY, WEAVE_STAGE_KEYBOARD_MOVE_ORIENTATION, WEAVE_STAGE_MINIMAP_KEY, WEAVE_STAGE_NODE_TYPE, WEAVE_STAGE_PANNING_DEFAULT_CONFIG, WEAVE_STAGE_PANNING_KEY, WEAVE_STAGE_PANNING_THROTTLE_MS, WEAVE_STAGE_TEXT_EDITION_MODE, WEAVE_STAGE_ZOOM_DEFAULT_CONFIG, WEAVE_STAGE_ZOOM_KEY, WEAVE_STAGE_ZOOM_TYPE, WEAVE_STAR_NODE_TYPE, WEAVE_STROKE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_NODE_TYPE, WEAVE_STROKE_SINGLE_NODE_DEFAULT_CONFIG, WEAVE_STROKE_SINGLE_NODE_TIP_SIDE, WEAVE_STROKE_SINGLE_NODE_TIP_TYPE, WEAVE_STROKE_SINGLE_NODE_TYPE, WEAVE_STROKE_TOOL_ACTION_NAME, WEAVE_STROKE_TOOL_ACTION_NAME_ALIASES, WEAVE_STROKE_TOOL_DEFAULT_CONFIG, WEAVE_STROKE_TOOL_STATE, WEAVE_TEXT_NODE_DEFAULT_CONFIG, WEAVE_TEXT_NODE_TYPE, WEAVE_USERS_POINTERS_CONFIG_DEFAULT_PROPS, WEAVE_USERS_POINTERS_KEY, WEAVE_USERS_PRESENCE_CONFIG_DEFAULT_PROPS, WEAVE_USERS_PRESENCE_PLUGIN_KEY, WEAVE_USERS_SELECTION_KEY, WEAVE_USER_POINTER_KEY, WEAVE_USER_PRESENCE_KEY, WEAVE_USER_SELECTION_KEY, WEAVE_VIDEO_DEFAULT_CONFIG, WEAVE_VIDEO_NODE_TYPE, Weave, WeaveAction, WeaveAlignNodesToolAction, WeaveArrowNode, WeaveArrowToolAction, WeaveBrushToolAction, WeaveCommentNode, WeaveCommentToolAction, WeaveCommentsRendererPlugin, WeaveConnectedUsersPlugin, WeaveConnectorNode, WeaveConnectorToolAction, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveEllipseNode, WeaveEllipseToolAction, WeaveEraserToolAction, WeaveExportNodesToolAction, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToSelectionToolAction, WeaveFrameNode, WeaveFrameToolAction, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveImagesToolAction, WeaveLayerNode, WeaveLineNode, WeaveLineToolAction, WeaveMeasureNode, WeaveMeasureToolAction, WeaveMoveToolAction, WeaveNode, WeaveNodesDistanceSnappingPlugin, WeaveNodesEdgeSnappingPlugin, WeaveNodesMultiSelectionFeedbackPlugin, WeaveNodesSelectionPlugin, WeavePenToolAction, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRegularPolygonNode, WeaveRegularPolygonToolAction, WeaveRenderer, WeaveSelectionToolAction, WeaveStageDropAreaPlugin, WeaveStageGridPlugin, WeaveStageKeyboardMovePlugin, WeaveStageMinimapPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomPlugin, WeaveStarNode, WeaveStarToolAction, WeaveStore, WeaveStrokeNode, WeaveStrokeSingleNode, WeaveStrokeToolAction, WeaveTextNode, WeaveTextToolAction, WeaveUsersPointersPlugin, WeaveUsersPresencePlugin, WeaveUsersSelectionPlugin, WeaveVideoNode, WeaveVideoToolAction, WeaveZoomInToolAction, WeaveZoomOutToolAction, canComposite, clearContainerTargets, containerOverCursor, containsNodeDeep, defaultInitialState, downscaleImageFile, downscaleImageFromURL, getBoundingBox, getDownscaleRatio, getExportBoundingBox, getImageSizeFromFile, getJSONFromYjsBinary, getSelectedNodesMetadata, getStageClickPoint, getTargetAndSkipNodes, getTargetedNode, getTopmostShadowHost, getVisibleNodes, getVisibleNodesInViewport, hasFrames, hasImages, intersectArrays, isArray, isIOS, isInShadowDOM, isNodeInSelection, isObject, isServer, loadImageSource, mapJsonToYjsArray, mapJsonToYjsElements, mapJsonToYjsMap, memoize, mergeExceptArrays, moveNodeToContainer, moveNodeToContainerNT, resetScale, weavejsToYjsBinary };