@inditextech/weave-sdk 0.12.0 → 0.13.0

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
@@ -15749,6 +15749,52 @@ var WeaveContextMenuPlugin = class extends WeavePlugin {
15749
15749
  }
15750
15750
  };
15751
15751
 
15752
+ //#endregion
15753
+ //#region src/utils.ts
15754
+ function resetScale(node) {
15755
+ node.width(Math.round((Math.max(1, node.width() * node.scaleX()) + Number.EPSILON) * 100) / 100);
15756
+ node.height(Math.round((Math.max(1, node.height() * node.scaleY()) + Number.EPSILON) * 100) / 100);
15757
+ node.scaleX(1);
15758
+ node.scaleY(1);
15759
+ node.x(Math.round((node.x() + Number.EPSILON) * 100) / 100);
15760
+ node.y(Math.round((node.y() + Number.EPSILON) * 100) / 100);
15761
+ node.rotation(Math.round((node.rotation() + Number.EPSILON) * 100) / 100);
15762
+ }
15763
+ function clearContainerTargets(instance) {
15764
+ const getContainers = instance.getContainerNodes();
15765
+ for (const container of getContainers) container.fire(__inditextech_weave_types.WEAVE_NODE_CUSTOM_EVENTS.onTargetLeave, { bubbles: true });
15766
+ }
15767
+ function checkIfOverContainer(instance, node) {
15768
+ const nodesIntersected = instance.pointIntersectsContainerElement();
15769
+ let nodeActualContainer = node.getParent();
15770
+ if (nodeActualContainer?.getAttrs().nodeId) nodeActualContainer = instance.getStage().findOne(`#${nodeActualContainer.getAttrs().nodeId}`);
15771
+ let layerToMove = void 0;
15772
+ if (!node.getAttrs().containerId && nodesIntersected && nodeActualContainer?.getAttrs().id !== nodesIntersected.getAttrs().id) layerToMove = nodesIntersected;
15773
+ return layerToMove;
15774
+ }
15775
+ function moveNodeToContainer(instance, node) {
15776
+ const nodesIntersected = instance.pointIntersectsContainerElement();
15777
+ let nodeActualContainer = node.getParent();
15778
+ if (nodeActualContainer?.getAttrs().nodeId) nodeActualContainer = instance.getStage().findOne(`#${nodeActualContainer.getAttrs().nodeId}`);
15779
+ let layerToMove = void 0;
15780
+ if (!node.getAttrs().containerId && nodesIntersected && nodeActualContainer?.getAttrs().id !== nodesIntersected.getAttrs().id) layerToMove = nodesIntersected;
15781
+ if (!nodesIntersected && nodeActualContainer?.getAttrs().id !== __inditextech_weave_types.WEAVE_NODE_LAYER_ID) layerToMove = instance.getMainLayer();
15782
+ if (layerToMove) {
15783
+ const nodePos = node.getAbsolutePosition();
15784
+ const nodeRotation = node.getAbsoluteRotation();
15785
+ node.moveTo(layerToMove);
15786
+ node.setAbsolutePosition(nodePos);
15787
+ node.rotation(nodeRotation);
15788
+ node.x(node.x() - (layerToMove.getAttrs().containerOffsetX ?? 0));
15789
+ node.y(node.y() - (layerToMove.getAttrs().containerOffsetY ?? 0));
15790
+ const nodeHandler = instance.getNodeHandler(node.getAttrs().nodeType);
15791
+ const actualNode = nodeHandler.serialize(node);
15792
+ instance.removeNode(actualNode);
15793
+ instance.addNode(actualNode, layerToMove?.getAttrs().id);
15794
+ }
15795
+ return layerToMove;
15796
+ }
15797
+
15752
15798
  //#endregion
15753
15799
  //#region src/plugins/nodes-selection/nodes-selection.ts
15754
15800
  var WeaveNodesSelectionPlugin = class extends WeavePlugin {
@@ -15869,6 +15915,22 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
15869
15915
  e.cancelBubble = true;
15870
15916
  }
15871
15917
  });
15918
+ tr.on("dragmove", (e) => {
15919
+ if (this.isSelecting() && tr.nodes().length > 1) {
15920
+ clearContainerTargets(this.instance);
15921
+ const layerToMove = checkIfOverContainer(this.instance, e.target);
15922
+ if (layerToMove) layerToMove.fire(__inditextech_weave_types.WEAVE_NODE_CUSTOM_EVENTS.onTargetEnter, { bubbles: true });
15923
+ }
15924
+ });
15925
+ tr.on("dragend", () => {
15926
+ if (this.isSelecting() && tr.nodes().length > 1) {
15927
+ clearContainerTargets(this.instance);
15928
+ for (const node of tr.nodes()) {
15929
+ const layerToMove = moveNodeToContainer(this.instance, node);
15930
+ if (layerToMove) continue;
15931
+ }
15932
+ }
15933
+ });
15872
15934
  this.tr = tr;
15873
15935
  this.selectionRectangle = selectionRectangle;
15874
15936
  this.tr.on("dblclick dbltap", (evt) => {
@@ -16353,40 +16415,6 @@ var WeaveNode = class {
16353
16415
  if (selectionPlugin.getSelectedNodes().length === 1 && selectionPlugin.getSelectedNodes()[0].getAttrs().id === ele.getAttrs().id) selected = true;
16354
16416
  return selected;
16355
16417
  }
16356
- clearContainerTargets() {
16357
- const getContainers = this.instance.getContainerNodes();
16358
- for (const container of getContainers) container.fire(__inditextech_weave_types.WEAVE_NODE_CUSTOM_EVENTS.onTargetLeave, { bubbles: true });
16359
- }
16360
- checkIfOverContainer(node) {
16361
- const nodesIntersected = this.instance.pointIntersectsContainerElement();
16362
- let nodeActualContainer = node.getParent();
16363
- if (nodeActualContainer?.getAttrs().nodeId) nodeActualContainer = this.instance.getStage().findOne(`#${nodeActualContainer.getAttrs().nodeId}`);
16364
- let layerToMove = void 0;
16365
- if (!node.getAttrs().containerId && nodesIntersected && nodeActualContainer?.getAttrs().id !== nodesIntersected.getAttrs().id) layerToMove = nodesIntersected;
16366
- return layerToMove;
16367
- }
16368
- moveNodeToContainer(node) {
16369
- const nodesIntersected = this.instance.pointIntersectsContainerElement();
16370
- let nodeActualContainer = node.getParent();
16371
- if (nodeActualContainer?.getAttrs().nodeId) nodeActualContainer = this.instance.getStage().findOne(`#${nodeActualContainer.getAttrs().nodeId}`);
16372
- let layerToMove = void 0;
16373
- if (!node.getAttrs().containerId && nodesIntersected && nodeActualContainer?.getAttrs().id !== nodesIntersected.getAttrs().id) layerToMove = nodesIntersected;
16374
- if (!nodesIntersected && nodeActualContainer?.getAttrs().id !== __inditextech_weave_types.WEAVE_NODE_LAYER_ID) layerToMove = this.instance.getMainLayer();
16375
- if (layerToMove) {
16376
- const nodePos = node.getAbsolutePosition();
16377
- const nodeRotation = node.getAbsoluteRotation();
16378
- node.moveTo(layerToMove);
16379
- node.setAbsolutePosition(nodePos);
16380
- node.rotation(nodeRotation);
16381
- node.x(node.x() - (layerToMove.getAttrs().containerOffsetX ?? 0));
16382
- node.y(node.y() - (layerToMove.getAttrs().containerOffsetY ?? 0));
16383
- const nodeHandler = this.instance.getNodeHandler(node.getAttrs().nodeType);
16384
- const actualNode = nodeHandler.serialize(node);
16385
- this.instance.removeNode(actualNode);
16386
- this.instance.addNode(actualNode, layerToMove?.getAttrs().id);
16387
- }
16388
- return layerToMove;
16389
- }
16390
16418
  setupDefaultNodeEvents(node) {
16391
16419
  this.previousPointer = null;
16392
16420
  this.instance.addEventListener("onNodesChange", () => {
@@ -16398,16 +16426,16 @@ var WeaveNode = class {
16398
16426
  });
16399
16427
  node.on("dragmove", (e) => {
16400
16428
  if (this.isSelecting() && this.isNodeSelected(node)) {
16401
- this.clearContainerTargets();
16402
- const layerToMove = this.checkIfOverContainer(e.target);
16429
+ clearContainerTargets(this.instance);
16430
+ const layerToMove = checkIfOverContainer(this.instance, e.target);
16403
16431
  if (layerToMove) layerToMove.fire(__inditextech_weave_types.WEAVE_NODE_CUSTOM_EVENTS.onTargetEnter, { bubbles: true });
16404
16432
  this.instance.updateNode(this.serialize(node));
16405
16433
  }
16406
16434
  });
16407
16435
  node.on("dragend", (e) => {
16408
16436
  if (this.isSelecting() && this.isNodeSelected(node)) {
16409
- this.clearContainerTargets();
16410
- const layerToMove = this.moveNodeToContainer(e.target);
16437
+ clearContainerTargets(this.instance);
16438
+ const layerToMove = moveNodeToContainer(this.instance, e.target);
16411
16439
  if (layerToMove) return;
16412
16440
  this.instance.updateNode(this.serialize(node));
16413
16441
  }
@@ -17855,7 +17883,7 @@ var WeaveRegisterManager = class {
17855
17883
 
17856
17884
  //#endregion
17857
17885
  //#region package.json
17858
- var version = "0.12.0";
17886
+ var version = "0.13.0";
17859
17887
 
17860
17888
  //#endregion
17861
17889
  //#region src/managers/setup.ts
@@ -18495,18 +18523,6 @@ var Weave = class extends Emittery {
18495
18523
  }
18496
18524
  };
18497
18525
 
18498
- //#endregion
18499
- //#region src/utils.ts
18500
- function resetScale(node) {
18501
- node.width(Math.round((Math.max(1, node.width() * node.scaleX()) + Number.EPSILON) * 100) / 100);
18502
- node.height(Math.round((Math.max(1, node.height() * node.scaleY()) + Number.EPSILON) * 100) / 100);
18503
- node.scaleX(1);
18504
- node.scaleY(1);
18505
- node.x(Math.round((node.x() + Number.EPSILON) * 100) / 100);
18506
- node.y(Math.round((node.y() + Number.EPSILON) * 100) / 100);
18507
- node.rotation(Math.round((node.rotation() + Number.EPSILON) * 100) / 100);
18508
- }
18509
-
18510
18526
  //#endregion
18511
18527
  //#region src/nodes/stage/constants.ts
18512
18528
  const WEAVE_STAGE_NODE_TYPE = "stage";
@@ -19703,8 +19719,8 @@ var WeaveFrameNode = class extends WeaveNode {
19703
19719
  const frameInternal = new konva.default.Group({
19704
19720
  id: `${id}-group-internal`,
19705
19721
  nodeId: id,
19706
- x: borderWidth,
19707
- y: titleHeight + borderWidth,
19722
+ x: borderWidth * 2,
19723
+ y: titleHeight + borderWidth * 2,
19708
19724
  width: props.frameWidth,
19709
19725
  height: props.frameHeight,
19710
19726
  draggable: false,
@@ -19713,8 +19729,8 @@ var WeaveFrameNode = class extends WeaveNode {
19713
19729
  borderWidth,
19714
19730
  clipX: 0,
19715
19731
  clipY: 0,
19716
- clipWidth: props.frameWidth,
19717
- clipHeight: props.frameHeight
19732
+ clipWidth: props.frameWidth - borderWidth * 2,
19733
+ clipHeight: props.frameHeight - borderWidth * 2
19718
19734
  });
19719
19735
  frame.add(frameInternal);
19720
19736
  this.setupDefaultNodeEvents(frame);
@@ -20312,15 +20328,25 @@ var WeaveRectangleToolAction = class extends WeaveAction {
20312
20328
  const rectangle = this.instance.getStage().findOne(`#${this.rectId}`);
20313
20329
  if (this.rectId && this.clickPoint && this.container && rectangle) {
20314
20330
  const { mousePoint } = this.instance.getMousePointerRelativeToContainer(this.container);
20315
- const deltaX = mousePoint.x - this.clickPoint?.x;
20316
- const deltaY = mousePoint.y - this.clickPoint?.y;
20317
20331
  const nodeHandler = this.instance.getNodeHandler("rectangle");
20332
+ const rectPos = {
20333
+ x: this.clickPoint.x,
20334
+ y: this.clickPoint.y
20335
+ };
20336
+ let rectWidth = this.props.width;
20337
+ let rectHeight = this.props.height;
20338
+ if (this.moved) {
20339
+ rectPos.x = Math.min(this.clickPoint.x, mousePoint.x);
20340
+ rectPos.y = Math.min(this.clickPoint.y, mousePoint.y);
20341
+ rectWidth = Math.abs(this.clickPoint.x - mousePoint.x);
20342
+ rectHeight = Math.abs(this.clickPoint.y - mousePoint.y);
20343
+ }
20318
20344
  rectangle.setAttrs({
20319
20345
  ...this.props,
20320
- x: this.moved ? rectangle.getAttrs().x : this.clickPoint.x,
20321
- y: this.moved ? rectangle.getAttrs().y : this.clickPoint.y,
20322
- width: this.moved ? Math.abs(deltaX) : this.props.width,
20323
- height: this.moved ? Math.abs(deltaY) : this.props.height
20346
+ x: rectPos.x,
20347
+ y: rectPos.y,
20348
+ width: rectWidth,
20349
+ height: rectHeight
20324
20350
  });
20325
20351
  this.instance.updateNode(nodeHandler.serialize(rectangle));
20326
20352
  }
@@ -22165,4 +22191,7 @@ exports.WeaveTextToolAction = WeaveTextToolAction
22165
22191
  exports.WeaveUsersPointersPlugin = WeaveUsersPointersPlugin
22166
22192
  exports.WeaveZoomInToolAction = WeaveZoomInToolAction
22167
22193
  exports.WeaveZoomOutToolAction = WeaveZoomOutToolAction
22194
+ exports.checkIfOverContainer = checkIfOverContainer
22195
+ exports.clearContainerTargets = clearContainerTargets
22196
+ exports.moveNodeToContainer = moveNodeToContainer
22168
22197
  exports.resetScale = resetScale
package/dist/sdk.d.cts CHANGED
@@ -280,9 +280,6 @@ declare abstract class WeaveNode implements WeaveNodeBase {
280
280
  isSelecting(): boolean;
281
281
  isPasting(): boolean;
282
282
  isNodeSelected(ele: Konva.Node): boolean;
283
- clearContainerTargets(): void;
284
- checkIfOverContainer(node: Konva.Node): Konva.Node | undefined;
285
- moveNodeToContainer(node: Konva.Node): Konva.Node | undefined;
286
283
  setupDefaultNodeEvents(node: Konva.Node): void;
287
284
  create(key: string, props: WeaveElementAttributes): WeaveStateElement;
288
285
  abstract onRender(props: WeaveElementAttributes): WeaveElementInstance;
@@ -473,6 +470,9 @@ type WeaveActionPropsChangeEvent = {
473
470
  //#endregion
474
471
  //#region src/utils.d.ts
475
472
  declare function resetScale(node: Konva.Node): void;
473
+ declare function clearContainerTargets(instance: Weave): void;
474
+ declare function checkIfOverContainer(instance: Weave, node: Konva.Node): Konva.Node | undefined;
475
+ declare function moveNodeToContainer(instance: Weave, node: Konva.Node): Konva.Node | undefined;
476
476
 
477
477
  //#endregion
478
478
  //#region src/nodes/stage/stage.d.ts
@@ -1516,4 +1516,4 @@ declare class WeaveNodesSnappingPlugin extends WeavePlugin {
1516
1516
  }
1517
1517
 
1518
1518
  //#endregion
1519
- export { BRUSH_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_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, Guide, GuideOrientation, GuideOrientationKeys, IMAGE_TOOL_STATE, ImageProps, LineGuide, LineGuideStop, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, NODE_SNAP, NodeSnap, NodeSnapKeys, NodeSnappingEdge, NodeSnappingEdges, PEN_TOOL_STATE, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, TEXT_TOOL_STATE, TextSerializable, WEAVE_COPY_PASTE_NODES_KEY, 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_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_NODES_SNAPPING_KEY, WEAVE_STAGE_GRID_KEY, Weave, WeaveAction, WeaveActionPropsChangeEvent, WeaveBrushToolAction, WeaveBrushToolActionState, WeaveBrushToolActionStateKeys, WeaveConnectedUserInfoKey, WeaveConnectedUsers, WeaveConnectedUsersChangeEvent, WeaveConnectedUsersPlugin, WeaveConnectedUsersPluginConfig, WeaveConnectedUsersPluginParams, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveCopyPasteNodesPluginOnCopyEvent, WeaveCopyPasteNodesPluginOnPasteEvent, WeaveCopyPasteNodesPluginOnPasteExternalEvent, WeaveCopyPasteNodesPluginState, WeaveCopyPasteNodesPluginStateKeys, WeaveExportNodeActionParams, WeaveExportNodeToolAction, WeaveExportStageActionParams, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToScreenToolActionParams, WeaveFitToSelectionToolAction, WeaveFitToSelectionToolActionParams, WeaveFrameAttributes, WeaveFrameNode, WeaveFrameNodeParams, WeaveFrameNodeSizes, WeaveFrameNodeSizesInfo, WeaveFrameNodeSizesKeys, WeaveFrameNodeSizesOrientation, WeaveFrameNodeSizesOrientationKeys, WeaveFrameProperties, WeaveFrameToolAction, WeaveFrameToolActionState, WeaveFrameToolActionStateKeys, WeaveFrameToolActionTriggerParams, WeaveFrameToolProps, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveImageToolActionOnEndLoadImageEvent, WeaveImageToolActionOnStartLoadImageEvent, WeaveImageToolActionState, WeaveImageToolActionStateKeys, WeaveImageToolActionTriggerParams, WeaveImageToolActionTriggerReturn, WeaveLayerNode, WeaveLineNode, WeaveMoveToolAction, WeaveMoveToolActionState, WeaveMoveToolActionStateKeys, WeaveNode, WeaveNodesSelectionPlugin, WeaveNodesSelectionPluginConfig, WeaveNodesSelectionPluginOnNodesChangeEvent, WeaveNodesSelectionPluginOnSelectionStateEvent, WeaveNodesSelectionPluginOnStageSelectionEvent, WeaveNodesSelectionPluginParams, WeaveNodesSnappingPlugin, WeaveNodesSnappingPluginConfig, WeaveNodesSnappingPluginParams, WeavePasteModel, WeavePenToolAction, WeavePenToolActionState, WeavePenToolActionStateKeys, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRectangleToolActionState, WeaveRectangleToolActionStateKeys, WeaveSelectionToolAction, WeaveSelectionToolActionState, WeaveSelectionToolActionStateKeys, WeaveStageContextMenuPluginConfig, WeaveStageContextMenuPluginOnNodeContextMenuEvent, WeaveStageContextMenuPluginParams, WeaveStageDropAreaPlugin, WeaveStageDropPluginOnStageDropEvent, WeaveStageGridPlugin, WeaveStageGridPluginConfig, WeaveStageGridPluginParams, WeaveStageGridType, WeaveStageGridTypeKeys, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomChanged, WeaveStageZoomPlugin, WeaveStageZoomPluginConfig, WeaveStageZoomPluginOnZoomChangeEvent, WeaveStageZoomPluginParams, WeaveStore, WeaveTextNode, WeaveTextToolAction, WeaveTextToolActionState, WeaveTextToolActionStateKeys, WeaveToPasteNode, WeaveUserPointer, WeaveUserPointerKey, WeaveUsersPointersPlugin, WeaveUsersPointersPluginConfig, WeaveUsersPointersPluginParams, WeaveZoomInToolAction, WeaveZoomInToolActionParams, WeaveZoomOutToolAction, WeaveZoomOutToolActionParams, resetScale };
1519
+ export { BRUSH_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_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, Guide, GuideOrientation, GuideOrientationKeys, IMAGE_TOOL_STATE, ImageProps, LineGuide, LineGuideStop, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, NODE_SNAP, NodeSnap, NodeSnapKeys, NodeSnappingEdge, NodeSnappingEdges, PEN_TOOL_STATE, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, TEXT_TOOL_STATE, TextSerializable, WEAVE_COPY_PASTE_NODES_KEY, 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_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_NODES_SNAPPING_KEY, WEAVE_STAGE_GRID_KEY, Weave, WeaveAction, WeaveActionPropsChangeEvent, WeaveBrushToolAction, WeaveBrushToolActionState, WeaveBrushToolActionStateKeys, WeaveConnectedUserInfoKey, WeaveConnectedUsers, WeaveConnectedUsersChangeEvent, WeaveConnectedUsersPlugin, WeaveConnectedUsersPluginConfig, WeaveConnectedUsersPluginParams, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveCopyPasteNodesPluginOnCopyEvent, WeaveCopyPasteNodesPluginOnPasteEvent, WeaveCopyPasteNodesPluginOnPasteExternalEvent, WeaveCopyPasteNodesPluginState, WeaveCopyPasteNodesPluginStateKeys, WeaveExportNodeActionParams, WeaveExportNodeToolAction, WeaveExportStageActionParams, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToScreenToolActionParams, WeaveFitToSelectionToolAction, WeaveFitToSelectionToolActionParams, WeaveFrameAttributes, WeaveFrameNode, WeaveFrameNodeParams, WeaveFrameNodeSizes, WeaveFrameNodeSizesInfo, WeaveFrameNodeSizesKeys, WeaveFrameNodeSizesOrientation, WeaveFrameNodeSizesOrientationKeys, WeaveFrameProperties, WeaveFrameToolAction, WeaveFrameToolActionState, WeaveFrameToolActionStateKeys, WeaveFrameToolActionTriggerParams, WeaveFrameToolProps, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveImageToolActionOnEndLoadImageEvent, WeaveImageToolActionOnStartLoadImageEvent, WeaveImageToolActionState, WeaveImageToolActionStateKeys, WeaveImageToolActionTriggerParams, WeaveImageToolActionTriggerReturn, WeaveLayerNode, WeaveLineNode, WeaveMoveToolAction, WeaveMoveToolActionState, WeaveMoveToolActionStateKeys, WeaveNode, WeaveNodesSelectionPlugin, WeaveNodesSelectionPluginConfig, WeaveNodesSelectionPluginOnNodesChangeEvent, WeaveNodesSelectionPluginOnSelectionStateEvent, WeaveNodesSelectionPluginOnStageSelectionEvent, WeaveNodesSelectionPluginParams, WeaveNodesSnappingPlugin, WeaveNodesSnappingPluginConfig, WeaveNodesSnappingPluginParams, WeavePasteModel, WeavePenToolAction, WeavePenToolActionState, WeavePenToolActionStateKeys, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRectangleToolActionState, WeaveRectangleToolActionStateKeys, WeaveSelectionToolAction, WeaveSelectionToolActionState, WeaveSelectionToolActionStateKeys, WeaveStageContextMenuPluginConfig, WeaveStageContextMenuPluginOnNodeContextMenuEvent, WeaveStageContextMenuPluginParams, WeaveStageDropAreaPlugin, WeaveStageDropPluginOnStageDropEvent, WeaveStageGridPlugin, WeaveStageGridPluginConfig, WeaveStageGridPluginParams, WeaveStageGridType, WeaveStageGridTypeKeys, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomChanged, WeaveStageZoomPlugin, WeaveStageZoomPluginConfig, WeaveStageZoomPluginOnZoomChangeEvent, WeaveStageZoomPluginParams, WeaveStore, WeaveTextNode, WeaveTextToolAction, WeaveTextToolActionState, WeaveTextToolActionStateKeys, WeaveToPasteNode, WeaveUserPointer, WeaveUserPointerKey, WeaveUsersPointersPlugin, WeaveUsersPointersPluginConfig, WeaveUsersPointersPluginParams, WeaveZoomInToolAction, WeaveZoomInToolActionParams, WeaveZoomOutToolAction, WeaveZoomOutToolActionParams, checkIfOverContainer, clearContainerTargets, moveNodeToContainer, resetScale };
package/dist/sdk.d.ts CHANGED
@@ -280,9 +280,6 @@ declare abstract class WeaveNode implements WeaveNodeBase {
280
280
  isSelecting(): boolean;
281
281
  isPasting(): boolean;
282
282
  isNodeSelected(ele: Konva.Node): boolean;
283
- clearContainerTargets(): void;
284
- checkIfOverContainer(node: Konva.Node): Konva.Node | undefined;
285
- moveNodeToContainer(node: Konva.Node): Konva.Node | undefined;
286
283
  setupDefaultNodeEvents(node: Konva.Node): void;
287
284
  create(key: string, props: WeaveElementAttributes): WeaveStateElement;
288
285
  abstract onRender(props: WeaveElementAttributes): WeaveElementInstance;
@@ -473,6 +470,9 @@ type WeaveActionPropsChangeEvent = {
473
470
  //#endregion
474
471
  //#region src/utils.d.ts
475
472
  declare function resetScale(node: Konva.Node): void;
473
+ declare function clearContainerTargets(instance: Weave): void;
474
+ declare function checkIfOverContainer(instance: Weave, node: Konva.Node): Konva.Node | undefined;
475
+ declare function moveNodeToContainer(instance: Weave, node: Konva.Node): Konva.Node | undefined;
476
476
 
477
477
  //#endregion
478
478
  //#region src/nodes/stage/stage.d.ts
@@ -1516,4 +1516,4 @@ declare class WeaveNodesSnappingPlugin extends WeavePlugin {
1516
1516
  }
1517
1517
 
1518
1518
  //#endregion
1519
- export { BRUSH_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_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, Guide, GuideOrientation, GuideOrientationKeys, IMAGE_TOOL_STATE, ImageProps, LineGuide, LineGuideStop, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, NODE_SNAP, NodeSnap, NodeSnapKeys, NodeSnappingEdge, NodeSnappingEdges, PEN_TOOL_STATE, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, TEXT_TOOL_STATE, TextSerializable, WEAVE_COPY_PASTE_NODES_KEY, 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_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_NODES_SNAPPING_KEY, WEAVE_STAGE_GRID_KEY, Weave, WeaveAction, WeaveActionPropsChangeEvent, WeaveBrushToolAction, WeaveBrushToolActionState, WeaveBrushToolActionStateKeys, WeaveConnectedUserInfoKey, WeaveConnectedUsers, WeaveConnectedUsersChangeEvent, WeaveConnectedUsersPlugin, WeaveConnectedUsersPluginConfig, WeaveConnectedUsersPluginParams, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveCopyPasteNodesPluginOnCopyEvent, WeaveCopyPasteNodesPluginOnPasteEvent, WeaveCopyPasteNodesPluginOnPasteExternalEvent, WeaveCopyPasteNodesPluginState, WeaveCopyPasteNodesPluginStateKeys, WeaveExportNodeActionParams, WeaveExportNodeToolAction, WeaveExportStageActionParams, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToScreenToolActionParams, WeaveFitToSelectionToolAction, WeaveFitToSelectionToolActionParams, WeaveFrameAttributes, WeaveFrameNode, WeaveFrameNodeParams, WeaveFrameNodeSizes, WeaveFrameNodeSizesInfo, WeaveFrameNodeSizesKeys, WeaveFrameNodeSizesOrientation, WeaveFrameNodeSizesOrientationKeys, WeaveFrameProperties, WeaveFrameToolAction, WeaveFrameToolActionState, WeaveFrameToolActionStateKeys, WeaveFrameToolActionTriggerParams, WeaveFrameToolProps, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveImageToolActionOnEndLoadImageEvent, WeaveImageToolActionOnStartLoadImageEvent, WeaveImageToolActionState, WeaveImageToolActionStateKeys, WeaveImageToolActionTriggerParams, WeaveImageToolActionTriggerReturn, WeaveLayerNode, WeaveLineNode, WeaveMoveToolAction, WeaveMoveToolActionState, WeaveMoveToolActionStateKeys, WeaveNode, WeaveNodesSelectionPlugin, WeaveNodesSelectionPluginConfig, WeaveNodesSelectionPluginOnNodesChangeEvent, WeaveNodesSelectionPluginOnSelectionStateEvent, WeaveNodesSelectionPluginOnStageSelectionEvent, WeaveNodesSelectionPluginParams, WeaveNodesSnappingPlugin, WeaveNodesSnappingPluginConfig, WeaveNodesSnappingPluginParams, WeavePasteModel, WeavePenToolAction, WeavePenToolActionState, WeavePenToolActionStateKeys, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRectangleToolActionState, WeaveRectangleToolActionStateKeys, WeaveSelectionToolAction, WeaveSelectionToolActionState, WeaveSelectionToolActionStateKeys, WeaveStageContextMenuPluginConfig, WeaveStageContextMenuPluginOnNodeContextMenuEvent, WeaveStageContextMenuPluginParams, WeaveStageDropAreaPlugin, WeaveStageDropPluginOnStageDropEvent, WeaveStageGridPlugin, WeaveStageGridPluginConfig, WeaveStageGridPluginParams, WeaveStageGridType, WeaveStageGridTypeKeys, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomChanged, WeaveStageZoomPlugin, WeaveStageZoomPluginConfig, WeaveStageZoomPluginOnZoomChangeEvent, WeaveStageZoomPluginParams, WeaveStore, WeaveTextNode, WeaveTextToolAction, WeaveTextToolActionState, WeaveTextToolActionStateKeys, WeaveToPasteNode, WeaveUserPointer, WeaveUserPointerKey, WeaveUsersPointersPlugin, WeaveUsersPointersPluginConfig, WeaveUsersPointersPluginParams, WeaveZoomInToolAction, WeaveZoomInToolActionParams, WeaveZoomOutToolAction, WeaveZoomOutToolActionParams, resetScale };
1519
+ export { BRUSH_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_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, Guide, GuideOrientation, GuideOrientationKeys, IMAGE_TOOL_STATE, ImageProps, LineGuide, LineGuideStop, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, NODE_SNAP, NodeSnap, NodeSnapKeys, NodeSnappingEdge, NodeSnappingEdges, PEN_TOOL_STATE, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, TEXT_TOOL_STATE, TextSerializable, WEAVE_COPY_PASTE_NODES_KEY, 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_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_NODES_SNAPPING_KEY, WEAVE_STAGE_GRID_KEY, Weave, WeaveAction, WeaveActionPropsChangeEvent, WeaveBrushToolAction, WeaveBrushToolActionState, WeaveBrushToolActionStateKeys, WeaveConnectedUserInfoKey, WeaveConnectedUsers, WeaveConnectedUsersChangeEvent, WeaveConnectedUsersPlugin, WeaveConnectedUsersPluginConfig, WeaveConnectedUsersPluginParams, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveCopyPasteNodesPluginOnCopyEvent, WeaveCopyPasteNodesPluginOnPasteEvent, WeaveCopyPasteNodesPluginOnPasteExternalEvent, WeaveCopyPasteNodesPluginState, WeaveCopyPasteNodesPluginStateKeys, WeaveExportNodeActionParams, WeaveExportNodeToolAction, WeaveExportStageActionParams, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToScreenToolActionParams, WeaveFitToSelectionToolAction, WeaveFitToSelectionToolActionParams, WeaveFrameAttributes, WeaveFrameNode, WeaveFrameNodeParams, WeaveFrameNodeSizes, WeaveFrameNodeSizesInfo, WeaveFrameNodeSizesKeys, WeaveFrameNodeSizesOrientation, WeaveFrameNodeSizesOrientationKeys, WeaveFrameProperties, WeaveFrameToolAction, WeaveFrameToolActionState, WeaveFrameToolActionStateKeys, WeaveFrameToolActionTriggerParams, WeaveFrameToolProps, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveImageToolActionOnEndLoadImageEvent, WeaveImageToolActionOnStartLoadImageEvent, WeaveImageToolActionState, WeaveImageToolActionStateKeys, WeaveImageToolActionTriggerParams, WeaveImageToolActionTriggerReturn, WeaveLayerNode, WeaveLineNode, WeaveMoveToolAction, WeaveMoveToolActionState, WeaveMoveToolActionStateKeys, WeaveNode, WeaveNodesSelectionPlugin, WeaveNodesSelectionPluginConfig, WeaveNodesSelectionPluginOnNodesChangeEvent, WeaveNodesSelectionPluginOnSelectionStateEvent, WeaveNodesSelectionPluginOnStageSelectionEvent, WeaveNodesSelectionPluginParams, WeaveNodesSnappingPlugin, WeaveNodesSnappingPluginConfig, WeaveNodesSnappingPluginParams, WeavePasteModel, WeavePenToolAction, WeavePenToolActionState, WeavePenToolActionStateKeys, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRectangleToolActionState, WeaveRectangleToolActionStateKeys, WeaveSelectionToolAction, WeaveSelectionToolActionState, WeaveSelectionToolActionStateKeys, WeaveStageContextMenuPluginConfig, WeaveStageContextMenuPluginOnNodeContextMenuEvent, WeaveStageContextMenuPluginParams, WeaveStageDropAreaPlugin, WeaveStageDropPluginOnStageDropEvent, WeaveStageGridPlugin, WeaveStageGridPluginConfig, WeaveStageGridPluginParams, WeaveStageGridType, WeaveStageGridTypeKeys, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomChanged, WeaveStageZoomPlugin, WeaveStageZoomPluginConfig, WeaveStageZoomPluginOnZoomChangeEvent, WeaveStageZoomPluginParams, WeaveStore, WeaveTextNode, WeaveTextToolAction, WeaveTextToolActionState, WeaveTextToolActionStateKeys, WeaveToPasteNode, WeaveUserPointer, WeaveUserPointerKey, WeaveUsersPointersPlugin, WeaveUsersPointersPluginConfig, WeaveUsersPointersPluginParams, WeaveZoomInToolAction, WeaveZoomInToolActionParams, WeaveZoomOutToolAction, WeaveZoomOutToolActionParams, checkIfOverContainer, clearContainerTargets, moveNodeToContainer, resetScale };
package/dist/sdk.js CHANGED
@@ -15749,6 +15749,52 @@ var WeaveContextMenuPlugin = class extends WeavePlugin {
15749
15749
  }
15750
15750
  };
15751
15751
 
15752
+ //#endregion
15753
+ //#region src/utils.ts
15754
+ function resetScale(node) {
15755
+ node.width(Math.round((Math.max(1, node.width() * node.scaleX()) + Number.EPSILON) * 100) / 100);
15756
+ node.height(Math.round((Math.max(1, node.height() * node.scaleY()) + Number.EPSILON) * 100) / 100);
15757
+ node.scaleX(1);
15758
+ node.scaleY(1);
15759
+ node.x(Math.round((node.x() + Number.EPSILON) * 100) / 100);
15760
+ node.y(Math.round((node.y() + Number.EPSILON) * 100) / 100);
15761
+ node.rotation(Math.round((node.rotation() + Number.EPSILON) * 100) / 100);
15762
+ }
15763
+ function clearContainerTargets(instance) {
15764
+ const getContainers = instance.getContainerNodes();
15765
+ for (const container of getContainers) container.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetLeave, { bubbles: true });
15766
+ }
15767
+ function checkIfOverContainer(instance, node) {
15768
+ const nodesIntersected = instance.pointIntersectsContainerElement();
15769
+ let nodeActualContainer = node.getParent();
15770
+ if (nodeActualContainer?.getAttrs().nodeId) nodeActualContainer = instance.getStage().findOne(`#${nodeActualContainer.getAttrs().nodeId}`);
15771
+ let layerToMove = void 0;
15772
+ if (!node.getAttrs().containerId && nodesIntersected && nodeActualContainer?.getAttrs().id !== nodesIntersected.getAttrs().id) layerToMove = nodesIntersected;
15773
+ return layerToMove;
15774
+ }
15775
+ function moveNodeToContainer(instance, node) {
15776
+ const nodesIntersected = instance.pointIntersectsContainerElement();
15777
+ let nodeActualContainer = node.getParent();
15778
+ if (nodeActualContainer?.getAttrs().nodeId) nodeActualContainer = instance.getStage().findOne(`#${nodeActualContainer.getAttrs().nodeId}`);
15779
+ let layerToMove = void 0;
15780
+ if (!node.getAttrs().containerId && nodesIntersected && nodeActualContainer?.getAttrs().id !== nodesIntersected.getAttrs().id) layerToMove = nodesIntersected;
15781
+ if (!nodesIntersected && nodeActualContainer?.getAttrs().id !== WEAVE_NODE_LAYER_ID) layerToMove = instance.getMainLayer();
15782
+ if (layerToMove) {
15783
+ const nodePos = node.getAbsolutePosition();
15784
+ const nodeRotation = node.getAbsoluteRotation();
15785
+ node.moveTo(layerToMove);
15786
+ node.setAbsolutePosition(nodePos);
15787
+ node.rotation(nodeRotation);
15788
+ node.x(node.x() - (layerToMove.getAttrs().containerOffsetX ?? 0));
15789
+ node.y(node.y() - (layerToMove.getAttrs().containerOffsetY ?? 0));
15790
+ const nodeHandler = instance.getNodeHandler(node.getAttrs().nodeType);
15791
+ const actualNode = nodeHandler.serialize(node);
15792
+ instance.removeNode(actualNode);
15793
+ instance.addNode(actualNode, layerToMove?.getAttrs().id);
15794
+ }
15795
+ return layerToMove;
15796
+ }
15797
+
15752
15798
  //#endregion
15753
15799
  //#region src/plugins/nodes-selection/nodes-selection.ts
15754
15800
  var WeaveNodesSelectionPlugin = class extends WeavePlugin {
@@ -15869,6 +15915,22 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
15869
15915
  e.cancelBubble = true;
15870
15916
  }
15871
15917
  });
15918
+ tr.on("dragmove", (e) => {
15919
+ if (this.isSelecting() && tr.nodes().length > 1) {
15920
+ clearContainerTargets(this.instance);
15921
+ const layerToMove = checkIfOverContainer(this.instance, e.target);
15922
+ if (layerToMove) layerToMove.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetEnter, { bubbles: true });
15923
+ }
15924
+ });
15925
+ tr.on("dragend", () => {
15926
+ if (this.isSelecting() && tr.nodes().length > 1) {
15927
+ clearContainerTargets(this.instance);
15928
+ for (const node of tr.nodes()) {
15929
+ const layerToMove = moveNodeToContainer(this.instance, node);
15930
+ if (layerToMove) continue;
15931
+ }
15932
+ }
15933
+ });
15872
15934
  this.tr = tr;
15873
15935
  this.selectionRectangle = selectionRectangle;
15874
15936
  this.tr.on("dblclick dbltap", (evt) => {
@@ -16353,40 +16415,6 @@ var WeaveNode = class {
16353
16415
  if (selectionPlugin.getSelectedNodes().length === 1 && selectionPlugin.getSelectedNodes()[0].getAttrs().id === ele.getAttrs().id) selected = true;
16354
16416
  return selected;
16355
16417
  }
16356
- clearContainerTargets() {
16357
- const getContainers = this.instance.getContainerNodes();
16358
- for (const container of getContainers) container.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetLeave, { bubbles: true });
16359
- }
16360
- checkIfOverContainer(node) {
16361
- const nodesIntersected = this.instance.pointIntersectsContainerElement();
16362
- let nodeActualContainer = node.getParent();
16363
- if (nodeActualContainer?.getAttrs().nodeId) nodeActualContainer = this.instance.getStage().findOne(`#${nodeActualContainer.getAttrs().nodeId}`);
16364
- let layerToMove = void 0;
16365
- if (!node.getAttrs().containerId && nodesIntersected && nodeActualContainer?.getAttrs().id !== nodesIntersected.getAttrs().id) layerToMove = nodesIntersected;
16366
- return layerToMove;
16367
- }
16368
- moveNodeToContainer(node) {
16369
- const nodesIntersected = this.instance.pointIntersectsContainerElement();
16370
- let nodeActualContainer = node.getParent();
16371
- if (nodeActualContainer?.getAttrs().nodeId) nodeActualContainer = this.instance.getStage().findOne(`#${nodeActualContainer.getAttrs().nodeId}`);
16372
- let layerToMove = void 0;
16373
- if (!node.getAttrs().containerId && nodesIntersected && nodeActualContainer?.getAttrs().id !== nodesIntersected.getAttrs().id) layerToMove = nodesIntersected;
16374
- if (!nodesIntersected && nodeActualContainer?.getAttrs().id !== WEAVE_NODE_LAYER_ID) layerToMove = this.instance.getMainLayer();
16375
- if (layerToMove) {
16376
- const nodePos = node.getAbsolutePosition();
16377
- const nodeRotation = node.getAbsoluteRotation();
16378
- node.moveTo(layerToMove);
16379
- node.setAbsolutePosition(nodePos);
16380
- node.rotation(nodeRotation);
16381
- node.x(node.x() - (layerToMove.getAttrs().containerOffsetX ?? 0));
16382
- node.y(node.y() - (layerToMove.getAttrs().containerOffsetY ?? 0));
16383
- const nodeHandler = this.instance.getNodeHandler(node.getAttrs().nodeType);
16384
- const actualNode = nodeHandler.serialize(node);
16385
- this.instance.removeNode(actualNode);
16386
- this.instance.addNode(actualNode, layerToMove?.getAttrs().id);
16387
- }
16388
- return layerToMove;
16389
- }
16390
16418
  setupDefaultNodeEvents(node) {
16391
16419
  this.previousPointer = null;
16392
16420
  this.instance.addEventListener("onNodesChange", () => {
@@ -16398,16 +16426,16 @@ var WeaveNode = class {
16398
16426
  });
16399
16427
  node.on("dragmove", (e) => {
16400
16428
  if (this.isSelecting() && this.isNodeSelected(node)) {
16401
- this.clearContainerTargets();
16402
- const layerToMove = this.checkIfOverContainer(e.target);
16429
+ clearContainerTargets(this.instance);
16430
+ const layerToMove = checkIfOverContainer(this.instance, e.target);
16403
16431
  if (layerToMove) layerToMove.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetEnter, { bubbles: true });
16404
16432
  this.instance.updateNode(this.serialize(node));
16405
16433
  }
16406
16434
  });
16407
16435
  node.on("dragend", (e) => {
16408
16436
  if (this.isSelecting() && this.isNodeSelected(node)) {
16409
- this.clearContainerTargets();
16410
- const layerToMove = this.moveNodeToContainer(e.target);
16437
+ clearContainerTargets(this.instance);
16438
+ const layerToMove = moveNodeToContainer(this.instance, e.target);
16411
16439
  if (layerToMove) return;
16412
16440
  this.instance.updateNode(this.serialize(node));
16413
16441
  }
@@ -17855,7 +17883,7 @@ var WeaveRegisterManager = class {
17855
17883
 
17856
17884
  //#endregion
17857
17885
  //#region package.json
17858
- var version = "0.12.0";
17886
+ var version = "0.13.0";
17859
17887
 
17860
17888
  //#endregion
17861
17889
  //#region src/managers/setup.ts
@@ -18495,18 +18523,6 @@ var Weave = class extends Emittery {
18495
18523
  }
18496
18524
  };
18497
18525
 
18498
- //#endregion
18499
- //#region src/utils.ts
18500
- function resetScale(node) {
18501
- node.width(Math.round((Math.max(1, node.width() * node.scaleX()) + Number.EPSILON) * 100) / 100);
18502
- node.height(Math.round((Math.max(1, node.height() * node.scaleY()) + Number.EPSILON) * 100) / 100);
18503
- node.scaleX(1);
18504
- node.scaleY(1);
18505
- node.x(Math.round((node.x() + Number.EPSILON) * 100) / 100);
18506
- node.y(Math.round((node.y() + Number.EPSILON) * 100) / 100);
18507
- node.rotation(Math.round((node.rotation() + Number.EPSILON) * 100) / 100);
18508
- }
18509
-
18510
18526
  //#endregion
18511
18527
  //#region src/nodes/stage/constants.ts
18512
18528
  const WEAVE_STAGE_NODE_TYPE = "stage";
@@ -19703,8 +19719,8 @@ var WeaveFrameNode = class extends WeaveNode {
19703
19719
  const frameInternal = new Konva.Group({
19704
19720
  id: `${id}-group-internal`,
19705
19721
  nodeId: id,
19706
- x: borderWidth,
19707
- y: titleHeight + borderWidth,
19722
+ x: borderWidth * 2,
19723
+ y: titleHeight + borderWidth * 2,
19708
19724
  width: props.frameWidth,
19709
19725
  height: props.frameHeight,
19710
19726
  draggable: false,
@@ -19713,8 +19729,8 @@ var WeaveFrameNode = class extends WeaveNode {
19713
19729
  borderWidth,
19714
19730
  clipX: 0,
19715
19731
  clipY: 0,
19716
- clipWidth: props.frameWidth,
19717
- clipHeight: props.frameHeight
19732
+ clipWidth: props.frameWidth - borderWidth * 2,
19733
+ clipHeight: props.frameHeight - borderWidth * 2
19718
19734
  });
19719
19735
  frame.add(frameInternal);
19720
19736
  this.setupDefaultNodeEvents(frame);
@@ -20312,15 +20328,25 @@ var WeaveRectangleToolAction = class extends WeaveAction {
20312
20328
  const rectangle = this.instance.getStage().findOne(`#${this.rectId}`);
20313
20329
  if (this.rectId && this.clickPoint && this.container && rectangle) {
20314
20330
  const { mousePoint } = this.instance.getMousePointerRelativeToContainer(this.container);
20315
- const deltaX = mousePoint.x - this.clickPoint?.x;
20316
- const deltaY = mousePoint.y - this.clickPoint?.y;
20317
20331
  const nodeHandler = this.instance.getNodeHandler("rectangle");
20332
+ const rectPos = {
20333
+ x: this.clickPoint.x,
20334
+ y: this.clickPoint.y
20335
+ };
20336
+ let rectWidth = this.props.width;
20337
+ let rectHeight = this.props.height;
20338
+ if (this.moved) {
20339
+ rectPos.x = Math.min(this.clickPoint.x, mousePoint.x);
20340
+ rectPos.y = Math.min(this.clickPoint.y, mousePoint.y);
20341
+ rectWidth = Math.abs(this.clickPoint.x - mousePoint.x);
20342
+ rectHeight = Math.abs(this.clickPoint.y - mousePoint.y);
20343
+ }
20318
20344
  rectangle.setAttrs({
20319
20345
  ...this.props,
20320
- x: this.moved ? rectangle.getAttrs().x : this.clickPoint.x,
20321
- y: this.moved ? rectangle.getAttrs().y : this.clickPoint.y,
20322
- width: this.moved ? Math.abs(deltaX) : this.props.width,
20323
- height: this.moved ? Math.abs(deltaY) : this.props.height
20346
+ x: rectPos.x,
20347
+ y: rectPos.y,
20348
+ width: rectWidth,
20349
+ height: rectHeight
20324
20350
  });
20325
20351
  this.instance.updateNode(nodeHandler.serialize(rectangle));
20326
20352
  }
@@ -22090,4 +22116,4 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
22090
22116
  };
22091
22117
 
22092
22118
  //#endregion
22093
- export { BRUSH_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_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_STATE, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, NODE_SNAP, PEN_TOOL_STATE, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, TEXT_TOOL_STATE, WEAVE_COPY_PASTE_NODES_KEY, 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_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_NODES_SNAPPING_KEY, WEAVE_STAGE_GRID_KEY, Weave, WeaveAction, WeaveBrushToolAction, WeaveConnectedUsersPlugin, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveExportNodeToolAction, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToSelectionToolAction, WeaveFrameNode, WeaveFrameToolAction, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveLayerNode, WeaveLineNode, WeaveMoveToolAction, WeaveNode, WeaveNodesSelectionPlugin, WeaveNodesSnappingPlugin, WeavePenToolAction, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveSelectionToolAction, WeaveStageDropAreaPlugin, WeaveStageGridPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomPlugin, WeaveStore, WeaveTextNode, WeaveTextToolAction, WeaveUsersPointersPlugin, WeaveZoomInToolAction, WeaveZoomOutToolAction, resetScale };
22119
+ export { BRUSH_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_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_STATE, MOVE_TOOL_ACTION_NAME, MOVE_TOOL_STATE, NODE_SNAP, PEN_TOOL_STATE, RECTANGLE_TOOL_ACTION_NAME, RECTANGLE_TOOL_STATE, SELECTION_TOOL_ACTION_NAME, SELECTION_TOOL_STATE, TEXT_TOOL_STATE, WEAVE_COPY_PASTE_NODES_KEY, 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_NODES_SELECTION_KEY, WEAVE_NODES_SELECTION_LAYER_ID, WEAVE_NODES_SNAPPING_KEY, WEAVE_STAGE_GRID_KEY, Weave, WeaveAction, WeaveBrushToolAction, WeaveConnectedUsersPlugin, WeaveContextMenuPlugin, WeaveCopyPasteNodesPlugin, WeaveExportNodeToolAction, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToSelectionToolAction, WeaveFrameNode, WeaveFrameToolAction, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveLayerNode, WeaveLineNode, WeaveMoveToolAction, WeaveNode, WeaveNodesSelectionPlugin, WeaveNodesSnappingPlugin, WeavePenToolAction, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveSelectionToolAction, WeaveStageDropAreaPlugin, WeaveStageGridPlugin, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomPlugin, WeaveStore, WeaveTextNode, WeaveTextToolAction, WeaveUsersPointersPlugin, WeaveZoomInToolAction, WeaveZoomOutToolAction, checkIfOverContainer, clearContainerTargets, moveNodeToContainer, resetScale };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inditextech/weave-sdk",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Jesus Manuel Piñeiro Cid <jesusmpc@inditex.com>",
@@ -43,7 +43,7 @@
43
43
  "version:release": "npm version $RELEASE_VERSION -m \"[npm-scripts] prepare release $RELEASE_VERSION\" --tag-version-prefix \"\""
44
44
  },
45
45
  "dependencies": {
46
- "@inditextech/weave-types": "0.12.0",
46
+ "@inditextech/weave-types": "0.13.0",
47
47
  "@syncedstore/core": "0.6.0",
48
48
  "canvas": "3.1.0",
49
49
  "konva": "9.3.20",