@inditextech/weave-sdk 0.3.3 → 0.4.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
@@ -16286,6 +16286,40 @@ var WeaveNode = class {
16286
16286
  if (selectionPlugin.getSelectedNodes().length === 1 && selectionPlugin.getSelectedNodes()[0].getAttrs().id === ele.getAttrs().id) selected = true;
16287
16287
  return selected;
16288
16288
  }
16289
+ clearContainerTargets() {
16290
+ const getContainers = this.instance.getContainerNodes();
16291
+ for (const container of getContainers) container.fire(__inditextech_weave_types.WEAVE_NODE_CUSTOM_EVENTS.onTargetLeave, { bubbles: true });
16292
+ }
16293
+ checkIfOverContainer(node) {
16294
+ const nodesIntersected = this.instance.pointIntersectsContainerElement();
16295
+ let nodeActualContainer = node.getParent();
16296
+ if (nodeActualContainer?.getAttrs().nodeId) nodeActualContainer = this.instance.getStage().findOne(`#${nodeActualContainer.getAttrs().nodeId}`);
16297
+ let layerToMove = void 0;
16298
+ if (!node.getAttrs().containerId && nodesIntersected && nodeActualContainer?.getAttrs().id !== nodesIntersected.getAttrs().id) layerToMove = nodesIntersected;
16299
+ return layerToMove;
16300
+ }
16301
+ moveNodeToContainer(node) {
16302
+ const nodesIntersected = this.instance.pointIntersectsContainerElement();
16303
+ let nodeActualContainer = node.getParent();
16304
+ if (nodeActualContainer?.getAttrs().nodeId) nodeActualContainer = this.instance.getStage().findOne(`#${nodeActualContainer.getAttrs().nodeId}`);
16305
+ let layerToMove = void 0;
16306
+ if (!node.getAttrs().containerId && nodesIntersected && nodeActualContainer?.getAttrs().id !== nodesIntersected.getAttrs().id) layerToMove = nodesIntersected;
16307
+ if (!nodesIntersected && nodeActualContainer?.getAttrs().id !== __inditextech_weave_types.WEAVE_NODE_LAYER_ID) layerToMove = this.instance.getMainLayer();
16308
+ if (layerToMove) {
16309
+ const nodePos = node.getAbsolutePosition();
16310
+ const nodeRotation = node.getAbsoluteRotation();
16311
+ node.moveTo(layerToMove);
16312
+ node.setAbsolutePosition(nodePos);
16313
+ node.rotation(nodeRotation);
16314
+ node.x(node.x() - (layerToMove.getAttrs().containerOffsetX ?? 0));
16315
+ node.y(node.y() - (layerToMove.getAttrs().containerOffsetY ?? 0));
16316
+ const nodeHandler = this.instance.getNodeHandler(node.getAttrs().nodeType);
16317
+ const actualNode = nodeHandler.serialize(node);
16318
+ this.instance.removeNode(actualNode);
16319
+ this.instance.addNode(actualNode, layerToMove?.getAttrs().id);
16320
+ }
16321
+ return layerToMove;
16322
+ }
16289
16323
  setupDefaultNodeEvents(node) {
16290
16324
  this.previousPointer = null;
16291
16325
  this.instance.addEventListener("onNodesChange", () => {
@@ -16303,14 +16337,18 @@ var WeaveNode = class {
16303
16337
  });
16304
16338
  node.on("dragmove", (e) => {
16305
16339
  if (this.isSelecting() && this.isNodeSelected(node)) {
16340
+ this.clearContainerTargets();
16341
+ const layerToMove = this.checkIfOverContainer(e.target);
16342
+ if (layerToMove) layerToMove.fire(__inditextech_weave_types.WEAVE_NODE_CUSTOM_EVENTS.onTargetEnter, { bubbles: true });
16306
16343
  this.instance.updateNode(this.serialize(node));
16307
- e.cancelBubble = true;
16308
16344
  }
16309
16345
  });
16310
16346
  node.on("dragend", (e) => {
16311
16347
  if (this.isSelecting() && this.isNodeSelected(node)) {
16348
+ this.clearContainerTargets();
16349
+ const layerToMove = this.moveNodeToContainer(e.target);
16350
+ if (layerToMove) return;
16312
16351
  this.instance.updateNode(this.serialize(node));
16313
- e.cancelBubble = true;
16314
16352
  }
16315
16353
  });
16316
16354
  this.previousPointer = null;
@@ -16960,6 +16998,27 @@ var WeaveTargetingManager = class {
16960
16998
  this.logger = this.instance.getChildLogger("targeting-manager");
16961
16999
  this.logger.debug("Targeting manager created");
16962
17000
  }
17001
+ pointIntersectsContainerElement(point) {
17002
+ const stage = this.instance.getStage();
17003
+ const relativeMousePointer = point ? point : stage.getPointerPosition() ?? {
17004
+ x: 0,
17005
+ y: 0
17006
+ };
17007
+ const intersections = this.instance.getMainLayer()?.getAllIntersections(relativeMousePointer);
17008
+ let intersectedNode = void 0;
17009
+ if (intersections) for (const node of intersections) {
17010
+ if (node.getAttrs().nodeId) {
17011
+ const parent = stage.findOne(`#${node.getAttrs().nodeId}`);
17012
+ intersectedNode = parent;
17013
+ break;
17014
+ }
17015
+ if (node.getAttrs().containerId) {
17016
+ intersectedNode = node;
17017
+ break;
17018
+ }
17019
+ }
17020
+ return intersectedNode;
17021
+ }
16963
17022
  getMousePointer(point) {
16964
17023
  this.logger.debug({ point }, "getMousePointer");
16965
17024
  const stage = this.instance.getStage();
@@ -17431,6 +17490,17 @@ var WeaveStateManager = class {
17431
17490
  });
17432
17491
  return found;
17433
17492
  }
17493
+ getContainerNodes(tree) {
17494
+ const found = [];
17495
+ if (tree.props.containerId) {
17496
+ found.push(tree);
17497
+ return found;
17498
+ }
17499
+ if (tree.props?.children && tree.props.children.length > 0) tree.props.children.some((child) => {
17500
+ found.push(...this.getContainerNodes(child));
17501
+ });
17502
+ return found;
17503
+ }
17434
17504
  getNode(nodeKey) {
17435
17505
  const state = this.instance.getStore().getState().weave;
17436
17506
  if ((0, import_lodash.isEmpty)(state)) return {
@@ -17699,7 +17769,7 @@ var WeaveRegisterManager = class {
17699
17769
 
17700
17770
  //#endregion
17701
17771
  //#region package.json
17702
- var version = "0.3.3";
17772
+ var version = "0.4.0";
17703
17773
 
17704
17774
  //#endregion
17705
17775
  //#region src/managers/setup.ts
@@ -17771,6 +17841,10 @@ var WeaveStageManager = class {
17771
17841
  const stage = this.getStage();
17772
17842
  return stage.findOne(`#${__inditextech_weave_types.WEAVE_NODE_LAYER_ID}`);
17773
17843
  }
17844
+ getUtilityLayer() {
17845
+ const stage = this.getStage();
17846
+ return stage.findOne(`#${__inditextech_weave_types.WEAVE_UTILITY_LAYER_ID}`);
17847
+ }
17774
17848
  getInstanceRecursive(instance, filterInstanceType = []) {
17775
17849
  const attributes = instance.getAttrs();
17776
17850
  if (instance.getParent() && instance.getParent()?.getAttrs().nodeType && ![
@@ -17794,6 +17868,11 @@ var WeaveStageManager = class {
17794
17868
  stage.draw();
17795
17869
  this.setStage(stage);
17796
17870
  }
17871
+ getContainerNodes() {
17872
+ return this.instance.getMainLayer()?.find((node) => {
17873
+ return node.getAttrs().containerId;
17874
+ });
17875
+ }
17797
17876
  };
17798
17877
 
17799
17878
  //#endregion
@@ -18153,6 +18232,9 @@ var Weave = class extends Emittery {
18153
18232
  getMainLayer() {
18154
18233
  return this.stageManager.getMainLayer();
18155
18234
  }
18235
+ getUtilityLayer() {
18236
+ return this.stageManager.getUtilityLayer();
18237
+ }
18156
18238
  setStage(stage) {
18157
18239
  this.stageManager.setStage(stage);
18158
18240
  }
@@ -18162,6 +18244,9 @@ var Weave = class extends Emittery {
18162
18244
  getInstanceRecursive(instance, filterInstanceType = []) {
18163
18245
  return this.stageManager.getInstanceRecursive(instance, filterInstanceType);
18164
18246
  }
18247
+ getContainerNodes() {
18248
+ return this.stageManager.getContainerNodes();
18249
+ }
18165
18250
  getRegisterManager() {
18166
18251
  return this.registerManager;
18167
18252
  }
@@ -18282,6 +18367,9 @@ var Weave = class extends Emittery {
18282
18367
  unGroup(group) {
18283
18368
  this.groupsManager.unGroup(group);
18284
18369
  }
18370
+ pointIntersectsContainerElement(point) {
18371
+ return this.targetingManager.pointIntersectsContainerElement(point);
18372
+ }
18285
18373
  getMousePointer(point) {
18286
18374
  return this.targetingManager.getMousePointer(point);
18287
18375
  }
@@ -19327,6 +19415,9 @@ var WeaveFrameNode = class extends WeaveNode {
19327
19415
  const frame = new konva.default.Group({
19328
19416
  ...frameParams,
19329
19417
  containerId: `${id}-group-internal`,
19418
+ containerOffsetX: 0,
19419
+ containerOffsetY: titleHeight + strokeWidth,
19420
+ isTarget: false,
19330
19421
  width: frameWidth + strokeWidth * 2,
19331
19422
  height: frameHeight + titleHeight + strokeWidth * 2,
19332
19423
  fill: "#ffffffff",
@@ -19382,6 +19473,20 @@ var WeaveFrameNode = class extends WeaveNode {
19382
19473
  });
19383
19474
  frame.add(frameInternal);
19384
19475
  this.setupDefaultNodeEvents(frame);
19476
+ frame.on(__inditextech_weave_types.WEAVE_NODE_CUSTOM_EVENTS.onTargetLeave, () => {
19477
+ background.setAttrs({
19478
+ stroke: "#000000ff",
19479
+ strokeWidth: 2,
19480
+ fill: "#ffffffff"
19481
+ });
19482
+ });
19483
+ frame.on(__inditextech_weave_types.WEAVE_NODE_CUSTOM_EVENTS.onTargetEnter, () => {
19484
+ background.setAttrs({
19485
+ stroke: "#ff6863ff",
19486
+ strokeWidth: 2,
19487
+ fill: "#ecececff"
19488
+ });
19489
+ });
19385
19490
  return frame;
19386
19491
  }
19387
19492
  onUpdate(nodeInstance, nextProps) {
package/dist/sdk.d.cts CHANGED
@@ -274,6 +274,9 @@ declare abstract class WeaveNode implements WeaveNodeBase {
274
274
  isSelecting(): boolean;
275
275
  isPasting(): boolean;
276
276
  isNodeSelected(ele: Konva.Node): boolean;
277
+ clearContainerTargets(): void;
278
+ checkIfOverContainer(node: Konva.Node): Konva.Node | undefined;
279
+ moveNodeToContainer(node: Konva.Node): Konva.Node | undefined;
277
280
  setupDefaultNodeEvents(node: Konva.Node): void;
278
281
  create(key: string, props: WeaveElementAttributes): WeaveStateElement;
279
282
  abstract onRender(props: WeaveElementAttributes): WeaveElementInstance;
@@ -358,8 +361,10 @@ declare class WeaveStageManager {
358
361
  setStage(stage: Konva.Stage): void;
359
362
  getStage(): Konva.Stage;
360
363
  getMainLayer(): Konva.Layer | undefined;
364
+ getUtilityLayer(): Konva.Layer | undefined;
361
365
  getInstanceRecursive(instance: Konva.Node, filterInstanceType?: string[]): Konva.Node;
362
366
  initStage(): void;
367
+ getContainerNodes(): WeaveElementInstance[];
363
368
  }
364
369
 
365
370
  //#endregion
@@ -403,9 +408,11 @@ declare class Weave extends Emittery {
403
408
  getStageManager(): WeaveStageManager;
404
409
  getStage(): Konva.Stage;
405
410
  getMainLayer(): Konva.Layer | undefined;
411
+ getUtilityLayer(): Konva.Layer | undefined;
406
412
  setStage(stage: Konva.Stage): void;
407
413
  getStageConfiguration(): StageConfig;
408
414
  getInstanceRecursive(instance: Konva.Node, filterInstanceType?: string[]): Konva.Node;
415
+ getContainerNodes(): WeaveElementInstance[];
409
416
  getRegisterManager(): WeaveRegisterManager;
410
417
  getPlugins(): Record<string, WeavePlugin>;
411
418
  getPlugin<T>(pluginName: string): T;
@@ -446,6 +453,7 @@ declare class Weave extends Emittery {
446
453
  bringToFront(node: WeaveElementInstance): void;
447
454
  group(nodes: WeaveStateElement[]): void;
448
455
  unGroup(group: WeaveStateElement): void;
456
+ pointIntersectsContainerElement(point?: Vector2d): Konva.Node | undefined;
449
457
  getMousePointer(point?: Vector2d): WeaveMousePointInfo;
450
458
  getMousePointerRelativeToContainer(container: Konva.Group | Konva.Layer): WeaveMousePointInfoSimple;
451
459
  nodesToGroupSerialized(instancesToClone: Konva.Node[]): WeaveSerializedGroup;
package/dist/sdk.d.ts CHANGED
@@ -274,6 +274,9 @@ declare abstract class WeaveNode implements WeaveNodeBase {
274
274
  isSelecting(): boolean;
275
275
  isPasting(): boolean;
276
276
  isNodeSelected(ele: Konva.Node): boolean;
277
+ clearContainerTargets(): void;
278
+ checkIfOverContainer(node: Konva.Node): Konva.Node | undefined;
279
+ moveNodeToContainer(node: Konva.Node): Konva.Node | undefined;
277
280
  setupDefaultNodeEvents(node: Konva.Node): void;
278
281
  create(key: string, props: WeaveElementAttributes): WeaveStateElement;
279
282
  abstract onRender(props: WeaveElementAttributes): WeaveElementInstance;
@@ -358,8 +361,10 @@ declare class WeaveStageManager {
358
361
  setStage(stage: Konva.Stage): void;
359
362
  getStage(): Konva.Stage;
360
363
  getMainLayer(): Konva.Layer | undefined;
364
+ getUtilityLayer(): Konva.Layer | undefined;
361
365
  getInstanceRecursive(instance: Konva.Node, filterInstanceType?: string[]): Konva.Node;
362
366
  initStage(): void;
367
+ getContainerNodes(): WeaveElementInstance[];
363
368
  }
364
369
 
365
370
  //#endregion
@@ -403,9 +408,11 @@ declare class Weave extends Emittery {
403
408
  getStageManager(): WeaveStageManager;
404
409
  getStage(): Konva.Stage;
405
410
  getMainLayer(): Konva.Layer | undefined;
411
+ getUtilityLayer(): Konva.Layer | undefined;
406
412
  setStage(stage: Konva.Stage): void;
407
413
  getStageConfiguration(): StageConfig;
408
414
  getInstanceRecursive(instance: Konva.Node, filterInstanceType?: string[]): Konva.Node;
415
+ getContainerNodes(): WeaveElementInstance[];
409
416
  getRegisterManager(): WeaveRegisterManager;
410
417
  getPlugins(): Record<string, WeavePlugin>;
411
418
  getPlugin<T>(pluginName: string): T;
@@ -446,6 +453,7 @@ declare class Weave extends Emittery {
446
453
  bringToFront(node: WeaveElementInstance): void;
447
454
  group(nodes: WeaveStateElement[]): void;
448
455
  unGroup(group: WeaveStateElement): void;
456
+ pointIntersectsContainerElement(point?: Vector2d): Konva.Node | undefined;
449
457
  getMousePointer(point?: Vector2d): WeaveMousePointInfo;
450
458
  getMousePointerRelativeToContainer(container: Konva.Group | Konva.Layer): WeaveMousePointInfoSimple;
451
459
  nodesToGroupSerialized(instancesToClone: Konva.Node[]): WeaveSerializedGroup;
package/dist/sdk.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import Konva from "konva";
2
2
  import "konva/lib/types";
3
- import { WEAVE_EXPORT_BACKGROUND_COLOR, WEAVE_EXPORT_FILE_FORMAT, WEAVE_EXPORT_FORMATS, WEAVE_INSTANCE_STATUS, WEAVE_NODE_LAYER_ID, WEAVE_NODE_POSITION } from "@inditextech/weave-types";
3
+ import { 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";
4
4
  import { getYjsDoc, getYjsValue, observeDeep, syncedStore } from "@syncedstore/core";
5
5
  import { Doc, UndoManager } from "yjs";
6
6
  import React from "react";
@@ -16286,6 +16286,40 @@ var WeaveNode = class {
16286
16286
  if (selectionPlugin.getSelectedNodes().length === 1 && selectionPlugin.getSelectedNodes()[0].getAttrs().id === ele.getAttrs().id) selected = true;
16287
16287
  return selected;
16288
16288
  }
16289
+ clearContainerTargets() {
16290
+ const getContainers = this.instance.getContainerNodes();
16291
+ for (const container of getContainers) container.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetLeave, { bubbles: true });
16292
+ }
16293
+ checkIfOverContainer(node) {
16294
+ const nodesIntersected = this.instance.pointIntersectsContainerElement();
16295
+ let nodeActualContainer = node.getParent();
16296
+ if (nodeActualContainer?.getAttrs().nodeId) nodeActualContainer = this.instance.getStage().findOne(`#${nodeActualContainer.getAttrs().nodeId}`);
16297
+ let layerToMove = void 0;
16298
+ if (!node.getAttrs().containerId && nodesIntersected && nodeActualContainer?.getAttrs().id !== nodesIntersected.getAttrs().id) layerToMove = nodesIntersected;
16299
+ return layerToMove;
16300
+ }
16301
+ moveNodeToContainer(node) {
16302
+ const nodesIntersected = this.instance.pointIntersectsContainerElement();
16303
+ let nodeActualContainer = node.getParent();
16304
+ if (nodeActualContainer?.getAttrs().nodeId) nodeActualContainer = this.instance.getStage().findOne(`#${nodeActualContainer.getAttrs().nodeId}`);
16305
+ let layerToMove = void 0;
16306
+ if (!node.getAttrs().containerId && nodesIntersected && nodeActualContainer?.getAttrs().id !== nodesIntersected.getAttrs().id) layerToMove = nodesIntersected;
16307
+ if (!nodesIntersected && nodeActualContainer?.getAttrs().id !== WEAVE_NODE_LAYER_ID) layerToMove = this.instance.getMainLayer();
16308
+ if (layerToMove) {
16309
+ const nodePos = node.getAbsolutePosition();
16310
+ const nodeRotation = node.getAbsoluteRotation();
16311
+ node.moveTo(layerToMove);
16312
+ node.setAbsolutePosition(nodePos);
16313
+ node.rotation(nodeRotation);
16314
+ node.x(node.x() - (layerToMove.getAttrs().containerOffsetX ?? 0));
16315
+ node.y(node.y() - (layerToMove.getAttrs().containerOffsetY ?? 0));
16316
+ const nodeHandler = this.instance.getNodeHandler(node.getAttrs().nodeType);
16317
+ const actualNode = nodeHandler.serialize(node);
16318
+ this.instance.removeNode(actualNode);
16319
+ this.instance.addNode(actualNode, layerToMove?.getAttrs().id);
16320
+ }
16321
+ return layerToMove;
16322
+ }
16289
16323
  setupDefaultNodeEvents(node) {
16290
16324
  this.previousPointer = null;
16291
16325
  this.instance.addEventListener("onNodesChange", () => {
@@ -16303,14 +16337,18 @@ var WeaveNode = class {
16303
16337
  });
16304
16338
  node.on("dragmove", (e) => {
16305
16339
  if (this.isSelecting() && this.isNodeSelected(node)) {
16340
+ this.clearContainerTargets();
16341
+ const layerToMove = this.checkIfOverContainer(e.target);
16342
+ if (layerToMove) layerToMove.fire(WEAVE_NODE_CUSTOM_EVENTS.onTargetEnter, { bubbles: true });
16306
16343
  this.instance.updateNode(this.serialize(node));
16307
- e.cancelBubble = true;
16308
16344
  }
16309
16345
  });
16310
16346
  node.on("dragend", (e) => {
16311
16347
  if (this.isSelecting() && this.isNodeSelected(node)) {
16348
+ this.clearContainerTargets();
16349
+ const layerToMove = this.moveNodeToContainer(e.target);
16350
+ if (layerToMove) return;
16312
16351
  this.instance.updateNode(this.serialize(node));
16313
- e.cancelBubble = true;
16314
16352
  }
16315
16353
  });
16316
16354
  this.previousPointer = null;
@@ -16960,6 +16998,27 @@ var WeaveTargetingManager = class {
16960
16998
  this.logger = this.instance.getChildLogger("targeting-manager");
16961
16999
  this.logger.debug("Targeting manager created");
16962
17000
  }
17001
+ pointIntersectsContainerElement(point) {
17002
+ const stage = this.instance.getStage();
17003
+ const relativeMousePointer = point ? point : stage.getPointerPosition() ?? {
17004
+ x: 0,
17005
+ y: 0
17006
+ };
17007
+ const intersections = this.instance.getMainLayer()?.getAllIntersections(relativeMousePointer);
17008
+ let intersectedNode = void 0;
17009
+ if (intersections) for (const node of intersections) {
17010
+ if (node.getAttrs().nodeId) {
17011
+ const parent = stage.findOne(`#${node.getAttrs().nodeId}`);
17012
+ intersectedNode = parent;
17013
+ break;
17014
+ }
17015
+ if (node.getAttrs().containerId) {
17016
+ intersectedNode = node;
17017
+ break;
17018
+ }
17019
+ }
17020
+ return intersectedNode;
17021
+ }
16963
17022
  getMousePointer(point) {
16964
17023
  this.logger.debug({ point }, "getMousePointer");
16965
17024
  const stage = this.instance.getStage();
@@ -17431,6 +17490,17 @@ var WeaveStateManager = class {
17431
17490
  });
17432
17491
  return found;
17433
17492
  }
17493
+ getContainerNodes(tree) {
17494
+ const found = [];
17495
+ if (tree.props.containerId) {
17496
+ found.push(tree);
17497
+ return found;
17498
+ }
17499
+ if (tree.props?.children && tree.props.children.length > 0) tree.props.children.some((child) => {
17500
+ found.push(...this.getContainerNodes(child));
17501
+ });
17502
+ return found;
17503
+ }
17434
17504
  getNode(nodeKey) {
17435
17505
  const state = this.instance.getStore().getState().weave;
17436
17506
  if ((0, import_lodash.isEmpty)(state)) return {
@@ -17699,7 +17769,7 @@ var WeaveRegisterManager = class {
17699
17769
 
17700
17770
  //#endregion
17701
17771
  //#region package.json
17702
- var version = "0.3.3";
17772
+ var version = "0.4.0";
17703
17773
 
17704
17774
  //#endregion
17705
17775
  //#region src/managers/setup.ts
@@ -17771,6 +17841,10 @@ var WeaveStageManager = class {
17771
17841
  const stage = this.getStage();
17772
17842
  return stage.findOne(`#${WEAVE_NODE_LAYER_ID}`);
17773
17843
  }
17844
+ getUtilityLayer() {
17845
+ const stage = this.getStage();
17846
+ return stage.findOne(`#${WEAVE_UTILITY_LAYER_ID}`);
17847
+ }
17774
17848
  getInstanceRecursive(instance, filterInstanceType = []) {
17775
17849
  const attributes = instance.getAttrs();
17776
17850
  if (instance.getParent() && instance.getParent()?.getAttrs().nodeType && ![
@@ -17794,6 +17868,11 @@ var WeaveStageManager = class {
17794
17868
  stage.draw();
17795
17869
  this.setStage(stage);
17796
17870
  }
17871
+ getContainerNodes() {
17872
+ return this.instance.getMainLayer()?.find((node) => {
17873
+ return node.getAttrs().containerId;
17874
+ });
17875
+ }
17797
17876
  };
17798
17877
 
17799
17878
  //#endregion
@@ -18153,6 +18232,9 @@ var Weave = class extends Emittery {
18153
18232
  getMainLayer() {
18154
18233
  return this.stageManager.getMainLayer();
18155
18234
  }
18235
+ getUtilityLayer() {
18236
+ return this.stageManager.getUtilityLayer();
18237
+ }
18156
18238
  setStage(stage) {
18157
18239
  this.stageManager.setStage(stage);
18158
18240
  }
@@ -18162,6 +18244,9 @@ var Weave = class extends Emittery {
18162
18244
  getInstanceRecursive(instance, filterInstanceType = []) {
18163
18245
  return this.stageManager.getInstanceRecursive(instance, filterInstanceType);
18164
18246
  }
18247
+ getContainerNodes() {
18248
+ return this.stageManager.getContainerNodes();
18249
+ }
18165
18250
  getRegisterManager() {
18166
18251
  return this.registerManager;
18167
18252
  }
@@ -18282,6 +18367,9 @@ var Weave = class extends Emittery {
18282
18367
  unGroup(group) {
18283
18368
  this.groupsManager.unGroup(group);
18284
18369
  }
18370
+ pointIntersectsContainerElement(point) {
18371
+ return this.targetingManager.pointIntersectsContainerElement(point);
18372
+ }
18285
18373
  getMousePointer(point) {
18286
18374
  return this.targetingManager.getMousePointer(point);
18287
18375
  }
@@ -19327,6 +19415,9 @@ var WeaveFrameNode = class extends WeaveNode {
19327
19415
  const frame = new Konva.Group({
19328
19416
  ...frameParams,
19329
19417
  containerId: `${id}-group-internal`,
19418
+ containerOffsetX: 0,
19419
+ containerOffsetY: titleHeight + strokeWidth,
19420
+ isTarget: false,
19330
19421
  width: frameWidth + strokeWidth * 2,
19331
19422
  height: frameHeight + titleHeight + strokeWidth * 2,
19332
19423
  fill: "#ffffffff",
@@ -19382,6 +19473,20 @@ var WeaveFrameNode = class extends WeaveNode {
19382
19473
  });
19383
19474
  frame.add(frameInternal);
19384
19475
  this.setupDefaultNodeEvents(frame);
19476
+ frame.on(WEAVE_NODE_CUSTOM_EVENTS.onTargetLeave, () => {
19477
+ background.setAttrs({
19478
+ stroke: "#000000ff",
19479
+ strokeWidth: 2,
19480
+ fill: "#ffffffff"
19481
+ });
19482
+ });
19483
+ frame.on(WEAVE_NODE_CUSTOM_EVENTS.onTargetEnter, () => {
19484
+ background.setAttrs({
19485
+ stroke: "#ff6863ff",
19486
+ strokeWidth: 2,
19487
+ fill: "#ecececff"
19488
+ });
19489
+ });
19385
19490
  return frame;
19386
19491
  }
19387
19492
  onUpdate(nodeInstance, nextProps) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inditextech/weave-sdk",
3
- "version": "0.3.3",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Jesus Manuel Piñeiro Cid <jesusmpc@inditex.com>",
@@ -26,7 +26,7 @@
26
26
  "bump:snapshot": "npm version $npm_package_version.$(date \"+%s\")",
27
27
  "bundle:analyze": "vite-bundle-visualizer",
28
28
  "check": "echo \"Monorepo test script\" && exit 0",
29
- "dev": "vite build --watch",
29
+ "dev": "tsdown --watch",
30
30
  "dev:test": "vitest --passWithNoTests --coverage",
31
31
  "dist:tag": "npm dist-tag add \"$(jq -r .name package.json)@$(jq -r .version package.json)\" \"$PR_TAG\" --registry=\"$NPM_PUBLISHING_REGISTRY\" --verbose",
32
32
  "format": "npm run lint -- --quiet --fix --fix-type layout",
@@ -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.3.3",
46
+ "@inditextech/weave-types": "0.4.0",
47
47
  "@syncedstore/core": "0.6.0",
48
48
  "canvas": "3.1.0",
49
49
  "konva": "9.3.20",