@inditextech/weave-sdk 0.5.0 → 0.7.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
@@ -15793,6 +15793,14 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
15793
15793
  const layer = new konva.default.Layer({ id: this.getLayerName() });
15794
15794
  stage.add(layer);
15795
15795
  }
15796
+ isSelecting() {
15797
+ return this.instance.getActiveAction() === "selectionTool";
15798
+ }
15799
+ isNodeSelected(ele) {
15800
+ let selected = false;
15801
+ if (this.getSelectedNodes().length === 1 && this.getSelectedNodes()[0].getAttrs().id === ele.getAttrs().id) selected = true;
15802
+ return selected;
15803
+ }
15796
15804
  onInit() {
15797
15805
  const stage = this.instance.getStage();
15798
15806
  const selectionLayer = this.getLayer();
@@ -15812,6 +15820,21 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
15812
15820
  ...this.config.transformer
15813
15821
  });
15814
15822
  selectionLayer?.add(tr);
15823
+ tr.on("transform", (e) => {
15824
+ const node = e.target;
15825
+ const nodesSnappingPlugin = this.instance.getPlugin("nodesSnapping");
15826
+ if (nodesSnappingPlugin && this.isSelecting() && this.isNodeSelected(node)) nodesSnappingPlugin.evaluateGuidelines(e);
15827
+ if (this.isSelecting() && this.isNodeSelected(node)) {
15828
+ const nodeHandler = this.instance.getNodeHandler(node.getAttrs().nodeType);
15829
+ this.instance.updateNode(nodeHandler.serialize(node));
15830
+ e.cancelBubble = true;
15831
+ }
15832
+ });
15833
+ tr.on("transformend", (e) => {
15834
+ const node = e.target;
15835
+ const nodesSnappingPlugin = this.instance.getPlugin("nodesSnapping");
15836
+ if (nodesSnappingPlugin && this.isSelecting() && this.isNodeSelected(node)) nodesSnappingPlugin.cleanupEvaluateGuidelines();
15837
+ });
15815
15838
  tr.on("mouseenter", (e) => {
15816
15839
  const stage$1 = this.instance.getStage();
15817
15840
  stage$1.container().style.cursor = "grab";
@@ -16342,12 +16365,6 @@ var WeaveNode = class {
16342
16365
  }
16343
16366
  node.draggable(false);
16344
16367
  });
16345
- node.on("transform", (e) => {
16346
- if (this.isSelecting() && this.isNodeSelected(node)) {
16347
- this.instance.updateNode(this.serialize(node));
16348
- e.cancelBubble = true;
16349
- }
16350
- });
16351
16368
  node.on("dragmove", (e) => {
16352
16369
  if (this.isSelecting() && this.isNodeSelected(node)) {
16353
16370
  this.clearContainerTargets();
@@ -17789,7 +17806,7 @@ var WeaveRegisterManager = class {
17789
17806
 
17790
17807
  //#endregion
17791
17808
  //#region package.json
17792
- var version = "0.5.0";
17809
+ var version = "0.7.0";
17793
17810
 
17794
17811
  //#endregion
17795
17812
  //#region src/managers/setup.ts
@@ -18941,6 +18958,7 @@ var WeaveImageToolAction = class extends WeaveAction {
18941
18958
  imageURL: this.imageURL,
18942
18959
  stroke: "#000000ff",
18943
18960
  strokeWidth: 0,
18961
+ strokeScaleEnabled: false,
18944
18962
  imageInfo: {
18945
18963
  width: this.preloadImgs[this.imageId].width,
18946
18964
  height: this.preloadImgs[this.imageId].height
@@ -19554,6 +19572,7 @@ var WeaveFrameNode = class extends WeaveNode {
19554
19572
  width: props.frameWidth,
19555
19573
  stroke: props.borderColor,
19556
19574
  strokeWidth: props.borderWidth,
19575
+ strokeScaleEnabled: false,
19557
19576
  height: props.frameHeight,
19558
19577
  fill: "#ffffffff",
19559
19578
  draggable: false
@@ -19571,6 +19590,7 @@ var WeaveFrameNode = class extends WeaveNode {
19571
19590
  text: props.title,
19572
19591
  stroke: "#000000ff",
19573
19592
  strokeWidth: 1,
19593
+ strokeScaleEnabled: false,
19574
19594
  listening: false,
19575
19595
  draggable: false
19576
19596
  });
@@ -19584,6 +19604,7 @@ var WeaveFrameNode = class extends WeaveNode {
19584
19604
  height: props.frameHeight,
19585
19605
  draggable: false,
19586
19606
  stroke: "transparent",
19607
+ strokeScaleEnabled: false,
19587
19608
  borderWidth: props.borderWidth,
19588
19609
  clipX: 0,
19589
19610
  clipY: 0,
@@ -20162,6 +20183,7 @@ var WeaveRectangleToolAction = class extends WeaveAction {
20162
20183
  const nodeHandler = this.instance.getNodeHandler("rectangle");
20163
20184
  const node = nodeHandler.create(this.rectId, {
20164
20185
  ...this.props,
20186
+ strokeScaleEnabled: false,
20165
20187
  x: this.clickPoint?.x ?? 0,
20166
20188
  y: this.clickPoint?.y ?? 0,
20167
20189
  width: 0,
@@ -20326,6 +20348,7 @@ var WeavePenToolAction = class extends WeaveAction {
20326
20348
  const nodeHandler = this.instance.getNodeHandler("line");
20327
20349
  const node = nodeHandler.create(this.lineId, {
20328
20350
  ...this.props,
20351
+ strokeScaleEnabled: false,
20329
20352
  x: this.clickPoint?.x ?? 0,
20330
20353
  y: this.clickPoint?.y ?? 0,
20331
20354
  points: [0, 0]
@@ -20335,6 +20358,7 @@ var WeavePenToolAction = class extends WeaveAction {
20335
20358
  x: this.clickPoint?.x ?? 0,
20336
20359
  y: this.clickPoint?.y ?? 0,
20337
20360
  radius: 5 / stage.scaleX(),
20361
+ strokeScaleEnabled: false,
20338
20362
  stroke: "#cccccc",
20339
20363
  strokeWidth: 0,
20340
20364
  fill: "#cccccc"
@@ -20351,6 +20375,7 @@ var WeavePenToolAction = class extends WeaveAction {
20351
20375
  x: this.clickPoint?.x ?? 0,
20352
20376
  y: this.clickPoint?.y ?? 0,
20353
20377
  radius: 5 / stage.scaleX(),
20378
+ strokeScaleEnabled: false,
20354
20379
  stroke: "#cccccc",
20355
20380
  strokeWidth: 0,
20356
20381
  fill: "#cccccc"
@@ -20543,6 +20568,7 @@ var WeaveBrushToolAction = class extends WeaveAction {
20543
20568
  const nodeHandler = this.instance.getNodeHandler("line");
20544
20569
  const node = nodeHandler.create(this.strokeId, {
20545
20570
  ...this.props,
20571
+ strokeScaleEnabled: false,
20546
20572
  x: this.clickPoint?.x ?? 0,
20547
20573
  y: this.clickPoint?.y ?? 0,
20548
20574
  points: [0, 0]
@@ -20688,6 +20714,7 @@ var WeaveTextToolAction = class extends WeaveAction {
20688
20714
  strokeEnabled: false,
20689
20715
  stroke: "#000000ff",
20690
20716
  strokeWidth: 1,
20717
+ strokeScaleEnabled: false,
20691
20718
  align: "left",
20692
20719
  verticalAlign: "top",
20693
20720
  opacity: 1,
@@ -21616,6 +21643,13 @@ var WeaveStageDropAreaPlugin = class extends WeavePlugin {
21616
21643
  //#region src/plugins/nodes-snapping/constants.ts
21617
21644
  const WEAVE_NODES_SNAPPING_KEY = "nodesSnapping";
21618
21645
  const GUIDE_LINE_NAME = "guide-line";
21646
+ const GUIDE_LINE_DEFAULT_CONFIG = {
21647
+ stroke: "rgb(0, 161, 255)",
21648
+ strokeWidth: 1,
21649
+ dash: [4, 6]
21650
+ };
21651
+ const GUIDE_LINE_DRAG_SNAPPING_THRESHOLD = 10;
21652
+ const GUIDE_LINE_TRANSFORM_SNAPPING_THRESHOLD = 10;
21619
21653
  const GUIDE_ORIENTATION = {
21620
21654
  ["HORIZONTAL"]: "H",
21621
21655
  ["VERTICAL"]: "V"
@@ -21629,9 +21663,12 @@ const NODE_SNAP = {
21629
21663
  //#endregion
21630
21664
  //#region src/plugins/nodes-snapping/nodes-snapping.ts
21631
21665
  var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21632
- constructor() {
21666
+ constructor(params) {
21633
21667
  super();
21634
- this.guideLineOffset = 10;
21668
+ const { config } = params ?? {};
21669
+ this.guideLineConfig = config?.guideLine ?? GUIDE_LINE_DEFAULT_CONFIG;
21670
+ this.dragSnappingThreshold = config?.dragSnappingThreshold ?? GUIDE_LINE_DRAG_SNAPPING_THRESHOLD;
21671
+ this.transformSnappingThreshold = config?.transformSnappingThreshold ?? GUIDE_LINE_TRANSFORM_SNAPPING_THRESHOLD;
21635
21672
  this.enabled = true;
21636
21673
  }
21637
21674
  getName() {
@@ -21643,42 +21680,76 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21643
21680
  setEnabled(enabled) {
21644
21681
  this.enabled = enabled;
21645
21682
  }
21646
- initEvents() {
21647
- const stage = this.instance.getStage();
21683
+ evaluateGuidelines(e) {
21648
21684
  const mainLayer = this.instance.getMainLayer();
21649
- if (mainLayer) {
21650
- stage.on("dragmove", (e) => {
21651
- if (!this.enabled) return;
21652
- if (e.target instanceof konva.default.Transformer) {
21653
- const actualTarget = e.target;
21654
- const node = actualTarget.getNodes()[0];
21655
- if (typeof node === "undefined") return;
21656
- mainLayer.find(`.${GUIDE_LINE_NAME}`).forEach((l) => l.destroy());
21657
- const lineGuideStops = this.getLineGuideStops(node);
21658
- const itemBounds = this.getObjectSnappingEdges(node);
21659
- const guides = this.getGuides(lineGuideStops, itemBounds);
21660
- if (!guides.length) return;
21661
- this.drawGuides(guides);
21662
- const absPos = node.absolutePosition();
21685
+ if (!this.enabled) return;
21686
+ if (!mainLayer) return;
21687
+ let node = void 0;
21688
+ if (e.type === "dragmove" && e.target instanceof konva.default.Transformer) {
21689
+ const actualTarget = e.target;
21690
+ node = actualTarget.getNodes()[0];
21691
+ }
21692
+ if (e.type === "transform") node = e.target;
21693
+ if (typeof node === "undefined") return;
21694
+ mainLayer.find(`.${GUIDE_LINE_NAME}`).forEach((l) => l.destroy());
21695
+ const lineGuideStops = this.getLineGuideStops(node);
21696
+ const itemBounds = this.getObjectSnappingEdges(node);
21697
+ const guides = this.getGuides(lineGuideStops, itemBounds, e.type);
21698
+ if (!guides.length) return;
21699
+ this.drawGuides(guides);
21700
+ if (e.type === "dragmove") {
21701
+ const absPos = node.absolutePosition();
21702
+ guides.forEach((lg) => {
21703
+ switch (lg.orientation) {
21704
+ case GUIDE_ORIENTATION.VERTICAL: {
21705
+ absPos.x = lg.lineGuide + lg.offset;
21706
+ break;
21707
+ }
21708
+ case GUIDE_ORIENTATION.HORIZONTAL: {
21709
+ absPos.y = lg.lineGuide + lg.offset;
21710
+ break;
21711
+ }
21712
+ }
21713
+ });
21714
+ node.absolutePosition(absPos);
21715
+ }
21716
+ if (e.type === "transform") {
21717
+ const nodesSelectionPlugin = this.instance.getPlugin("nodesSelection");
21718
+ if (nodesSelectionPlugin) {
21719
+ const transformer = nodesSelectionPlugin.getTransformer();
21720
+ transformer.anchorDragBoundFunc((_, newAbsPos) => {
21721
+ const finalPos = { ...newAbsPos };
21663
21722
  guides.forEach((lg) => {
21664
21723
  switch (lg.orientation) {
21665
21724
  case GUIDE_ORIENTATION.VERTICAL: {
21666
- absPos.x = lg.lineGuide + lg.offset;
21725
+ const distX = Math.sqrt(Math.pow(newAbsPos.x - lg.lineGuide, 2));
21726
+ if (distX < this.transformSnappingThreshold) finalPos.x = lg.lineGuide;
21667
21727
  break;
21668
21728
  }
21669
21729
  case GUIDE_ORIENTATION.HORIZONTAL: {
21670
- absPos.y = lg.lineGuide + lg.offset;
21730
+ const distY = Math.sqrt(Math.pow(newAbsPos.y - lg.lineGuide, 2));
21731
+ if (distY < this.transformSnappingThreshold) finalPos.y = lg.lineGuide;
21671
21732
  break;
21672
21733
  }
21673
21734
  }
21674
21735
  });
21675
- node.absolutePosition(absPos);
21676
- }
21677
- });
21678
- stage.on("dragend", () => {
21679
- if (!this.enabled) return;
21680
- mainLayer.find(`.${GUIDE_LINE_NAME}`).forEach((l) => l.destroy());
21681
- });
21736
+ return finalPos;
21737
+ });
21738
+ }
21739
+ }
21740
+ }
21741
+ cleanupEvaluateGuidelines() {
21742
+ const mainLayer = this.instance.getMainLayer();
21743
+ if (!this.enabled) return;
21744
+ if (!mainLayer) return;
21745
+ mainLayer.find(`.${GUIDE_LINE_NAME}`).forEach((l) => l.destroy());
21746
+ }
21747
+ initEvents() {
21748
+ const stage = this.instance.getStage();
21749
+ const mainLayer = this.instance.getMainLayer();
21750
+ if (mainLayer) {
21751
+ stage.on("dragmove", this.evaluateGuidelines.bind(this));
21752
+ stage.on("dragend", this.cleanupEvaluateGuidelines.bind(this));
21682
21753
  }
21683
21754
  }
21684
21755
  getLineGuideStops(skipShape) {
@@ -21715,7 +21786,7 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21715
21786
  getObjectSnappingEdges(node) {
21716
21787
  const box = node.getClientRect();
21717
21788
  const absPos = node.absolutePosition();
21718
- return {
21789
+ const snappingEdges = {
21719
21790
  vertical: [
21720
21791
  {
21721
21792
  guide: Math.round(box.x),
@@ -21751,14 +21822,15 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21751
21822
  }
21752
21823
  ]
21753
21824
  };
21825
+ return snappingEdges;
21754
21826
  }
21755
- getGuides(lineGuideStops, itemBounds) {
21827
+ getGuides(lineGuideStops, itemBounds, type) {
21756
21828
  const resultV = [];
21757
21829
  const resultH = [];
21758
21830
  lineGuideStops.vertical.forEach((lineGuide) => {
21759
21831
  itemBounds.vertical.forEach((itemBound) => {
21760
21832
  const diff = Math.abs(lineGuide - itemBound.guide);
21761
- if (diff < this.guideLineOffset) resultV.push({
21833
+ if (diff < this.dragSnappingThreshold) resultV.push({
21762
21834
  lineGuide,
21763
21835
  diff,
21764
21836
  snap: itemBound.snap,
@@ -21769,7 +21841,7 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21769
21841
  lineGuideStops.horizontal.forEach((lineGuide) => {
21770
21842
  itemBounds.horizontal.forEach((itemBound) => {
21771
21843
  const diff = Math.abs(lineGuide - itemBound.guide);
21772
- if (diff < this.guideLineOffset) resultH.push({
21844
+ if (diff < this.dragSnappingThreshold) resultH.push({
21773
21845
  lineGuide,
21774
21846
  diff,
21775
21847
  snap: itemBound.snap,
@@ -21778,20 +21850,40 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21778
21850
  });
21779
21851
  });
21780
21852
  const guides = [];
21781
- const minV = resultV.sort((a, b) => a.diff - b.diff)[0];
21782
- const minH = resultH.sort((a, b) => a.diff - b.diff)[0];
21783
- if (minV) guides.push({
21784
- lineGuide: minV.lineGuide,
21785
- offset: minV.offset,
21786
- orientation: GUIDE_ORIENTATION.VERTICAL,
21787
- snap: minV.snap
21788
- });
21789
- if (minH) guides.push({
21790
- lineGuide: minH.lineGuide,
21791
- offset: minH.offset,
21792
- orientation: GUIDE_ORIENTATION.HORIZONTAL,
21793
- snap: minH.snap
21794
- });
21853
+ if (type === "dragmove") {
21854
+ const minV = resultV.sort((a, b) => a.diff - b.diff)[0];
21855
+ const minH = resultH.sort((a, b) => a.diff - b.diff)[0];
21856
+ if (minV) guides.push({
21857
+ lineGuide: minV.lineGuide,
21858
+ offset: minV.offset,
21859
+ orientation: GUIDE_ORIENTATION.VERTICAL,
21860
+ snap: minV.snap
21861
+ });
21862
+ if (minH) guides.push({
21863
+ lineGuide: minH.lineGuide,
21864
+ offset: minH.offset,
21865
+ orientation: GUIDE_ORIENTATION.HORIZONTAL,
21866
+ snap: minH.snap
21867
+ });
21868
+ }
21869
+ if (type === "transform") {
21870
+ resultV.forEach((v) => {
21871
+ guides.push({
21872
+ lineGuide: v.lineGuide,
21873
+ offset: v.offset,
21874
+ orientation: GUIDE_ORIENTATION.VERTICAL,
21875
+ snap: v.snap
21876
+ });
21877
+ });
21878
+ resultH.forEach((h) => {
21879
+ guides.push({
21880
+ lineGuide: h.lineGuide,
21881
+ offset: h.offset,
21882
+ orientation: GUIDE_ORIENTATION.HORIZONTAL,
21883
+ snap: h.snap
21884
+ });
21885
+ });
21886
+ }
21795
21887
  return guides;
21796
21888
  }
21797
21889
  drawGuides(guides) {
@@ -21800,16 +21892,16 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21800
21892
  if (mainLayer) guides.forEach((lg) => {
21801
21893
  if (lg.orientation === GUIDE_ORIENTATION.HORIZONTAL) {
21802
21894
  const line = new konva.default.Line({
21895
+ ...this.guideLineConfig,
21896
+ strokeWidth: (this.guideLineConfig.strokeWidth ?? GUIDE_LINE_DEFAULT_CONFIG.strokeWidth) / stage.scaleX(),
21897
+ dash: this.guideLineConfig.dash?.map((e) => e / stage.scaleX()),
21803
21898
  points: [
21804
21899
  -6e3,
21805
21900
  0,
21806
21901
  6e3,
21807
21902
  0
21808
21903
  ],
21809
- stroke: "rgb(0, 161, 255)",
21810
- strokeWidth: 1 / stage.scaleX(),
21811
- name: GUIDE_LINE_NAME,
21812
- dash: [4 / stage.scaleX(), 6 / stage.scaleX()]
21904
+ name: GUIDE_LINE_NAME
21813
21905
  });
21814
21906
  mainLayer.add(line);
21815
21907
  line.absolutePosition({
@@ -21819,16 +21911,16 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21819
21911
  }
21820
21912
  if (lg.orientation === GUIDE_ORIENTATION.VERTICAL) {
21821
21913
  const line = new konva.default.Line({
21914
+ ...this.guideLineConfig,
21915
+ strokeWidth: (this.guideLineConfig.strokeWidth ?? GUIDE_LINE_DEFAULT_CONFIG.strokeWidth) / stage.scaleX(),
21916
+ dash: this.guideLineConfig.dash?.map((e) => e / stage.scaleX()),
21822
21917
  points: [
21823
21918
  0,
21824
21919
  -6e3,
21825
21920
  0,
21826
21921
  6e3
21827
21922
  ],
21828
- stroke: "rgb(0, 161, 255)",
21829
- strokeWidth: 1 / stage.scaleX(),
21830
- name: GUIDE_LINE_NAME,
21831
- dash: [4 / stage.scaleX(), 6 / stage.scaleX()]
21923
+ name: GUIDE_LINE_NAME
21832
21924
  });
21833
21925
  mainLayer.add(line);
21834
21926
  line.absolutePosition({
@@ -21851,7 +21943,10 @@ exports.BRUSH_TOOL_STATE = BRUSH_TOOL_STATE
21851
21943
  exports.COPY_PASTE_NODES_PLUGIN_STATE = COPY_PASTE_NODES_PLUGIN_STATE
21852
21944
  exports.FRAME_TOOL_ACTION_NAME = FRAME_TOOL_ACTION_NAME
21853
21945
  exports.FRAME_TOOL_STATE = FRAME_TOOL_STATE
21946
+ exports.GUIDE_LINE_DEFAULT_CONFIG = GUIDE_LINE_DEFAULT_CONFIG
21947
+ exports.GUIDE_LINE_DRAG_SNAPPING_THRESHOLD = GUIDE_LINE_DRAG_SNAPPING_THRESHOLD
21854
21948
  exports.GUIDE_LINE_NAME = GUIDE_LINE_NAME
21949
+ exports.GUIDE_LINE_TRANSFORM_SNAPPING_THRESHOLD = GUIDE_LINE_TRANSFORM_SNAPPING_THRESHOLD
21855
21950
  exports.GUIDE_ORIENTATION = GUIDE_ORIENTATION
21856
21951
  exports.IMAGE_TOOL_STATE = IMAGE_TOOL_STATE
21857
21952
  exports.MOVE_TOOL_ACTION_NAME = MOVE_TOOL_ACTION_NAME
package/dist/sdk.d.cts CHANGED
@@ -5,6 +5,7 @@ import pino, { Logger } from "pino";
5
5
  import * as Y from "yjs";
6
6
  import { Doc } from "yjs";
7
7
  import { StageConfig } from "konva/lib/Stage";
8
+ import { KonvaEventObject } from "konva/lib/Node";
8
9
 
9
10
  //#region ../types/dist/types.d.ts
10
11
  declare const WEAVE_INSTANCE_STATUS: {
@@ -255,6 +256,8 @@ declare class WeaveNodesSelectionPlugin extends WeavePlugin {
255
256
  getName(): string;
256
257
  getLayerName(): string;
257
258
  initLayer(): void;
259
+ isSelecting(): boolean;
260
+ isNodeSelected(ele: Konva.Node): boolean;
258
261
  onInit(): void;
259
262
  private getLayer;
260
263
  private triggerSelectedNodesEvent;
@@ -1462,6 +1465,9 @@ declare class WeaveCopyPasteNodesPlugin extends WeavePlugin {
1462
1465
  //#region src/plugins/nodes-snapping/constants.d.ts
1463
1466
  declare const WEAVE_NODES_SNAPPING_KEY = "nodesSnapping";
1464
1467
  declare const GUIDE_LINE_NAME = "guide-line";
1468
+ declare const GUIDE_LINE_DEFAULT_CONFIG: Required<Pick<Konva.LineConfig, "stroke" | "strokeWidth" | "dash">>;
1469
+ declare const GUIDE_LINE_DRAG_SNAPPING_THRESHOLD = 10;
1470
+ declare const GUIDE_LINE_TRANSFORM_SNAPPING_THRESHOLD = 10;
1465
1471
  declare const GUIDE_ORIENTATION: {
1466
1472
  readonly "HORIZONTAL": "H";
1467
1473
  readonly "VERTICAL": "V";
@@ -1503,24 +1509,36 @@ type Guide = {
1503
1509
  orientation: GuideOrientation;
1504
1510
  snap: NodeSnap;
1505
1511
  };
1512
+ type WeaveNodesSnappingPluginConfig = {
1513
+ guideLine: Konva.LineConfig;
1514
+ dragSnappingThreshold: number;
1515
+ transformSnappingThreshold: number;
1516
+ };
1517
+ type WeaveNodesSnappingPluginParams = {
1518
+ config?: WeaveNodesSnappingPluginConfig;
1519
+ };
1506
1520
 
1507
1521
  //#endregion
1508
1522
  //#region src/plugins/nodes-snapping/nodes-snapping.d.ts
1509
1523
  declare class WeaveNodesSnappingPlugin extends WeavePlugin {
1510
- private guideLineOffset;
1524
+ private guideLineConfig;
1525
+ private dragSnappingThreshold;
1526
+ private transformSnappingThreshold;
1511
1527
  onRender: undefined;
1512
- constructor();
1528
+ constructor(params?: Partial<WeaveNodesSnappingPluginParams>);
1513
1529
  getName(): string;
1514
1530
  onInit(): void;
1515
1531
  setEnabled(enabled: boolean): void;
1532
+ evaluateGuidelines(e: KonvaEventObject<any>): void;
1533
+ cleanupEvaluateGuidelines(): void;
1516
1534
  private initEvents;
1517
1535
  getLineGuideStops(skipShape: Konva.Node): LineGuideStop;
1518
1536
  getObjectSnappingEdges(node: Konva.Node): NodeSnappingEdges;
1519
- getGuides(lineGuideStops: LineGuideStop, itemBounds: NodeSnappingEdges): Guide[];
1537
+ getGuides(lineGuideStops: LineGuideStop, itemBounds: NodeSnappingEdges, type: string): Guide[];
1520
1538
  drawGuides(guides: Guide[]): void;
1521
1539
  enable(): void;
1522
1540
  disable(): void;
1523
1541
  }
1524
1542
 
1525
1543
  //#endregion
1526
- export { BRUSH_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_STATE, FRAME_TOOL_ACTION_NAME, FRAME_TOOL_STATE, GUIDE_LINE_NAME, 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_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, WeaveActionCallbacks, WeaveActionPropsChangeCallback, WeaveBrushToolAction, WeaveBrushToolActionState, WeaveBrushToolActionStateKeys, WeaveBrushToolCallbacks, WeaveConnectedUserInfoKey, WeaveConnectedUsersChangeCallback, WeaveConnectedUsersChanged, WeaveConnectedUsersPlugin, WeaveConnectedUsersPluginCallbacks, WeaveConnectedUsersPluginConfig, WeaveConnectedUsersPluginParams, WeaveContextMenuPlugin, WeaveCopyPasteNodesCanCopyChangeCallback, WeaveCopyPasteNodesCanPasteChangeCallback, WeaveCopyPasteNodesOnCopyCallback, WeaveCopyPasteNodesOnPasteCallback, WeaveCopyPasteNodesOnPasteExternalCallback, WeaveCopyPasteNodesPlugin, WeaveCopyPasteNodesPluginCallbacks, WeaveCopyPasteNodesPluginParams, WeaveCopyPasteNodesPluginState, WeaveCopyPasteNodesPluginStateKeys, WeaveExportNodeActionParams, WeaveExportNodeToolAction, WeaveExportStageActionParams, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToScreenToolActionParams, WeaveFitToSelectionToolAction, WeaveFitToSelectionToolActionParams, WeaveFrameAttributes, WeaveFrameNode, WeaveFrameNodeSizes, WeaveFrameNodeSizesInfo, WeaveFrameNodeSizesKeys, WeaveFrameNodeSizesOrientation, WeaveFrameNodeSizesOrientationKeys, WeaveFrameToolAction, WeaveFrameToolActionState, WeaveFrameToolActionStateKeys, WeaveFrameToolActionTriggerParams, WeaveFrameToolCallbacks, WeaveFrameToolProps, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveImageToolActionCallbacks, WeaveImageToolActionOnAddImageCallback, WeaveImageToolActionOnEndLoadImageCallback, WeaveImageToolActionOnStartLoadImageCallback, WeaveImageToolActionState, WeaveImageToolActionStateKeys, WeaveImageToolActionTriggerParams, WeaveImageToolActionTriggerReturn, WeaveLayerNode, WeaveLineNode, WeaveMoveToolAction, WeaveMoveToolActionState, WeaveMoveToolActionStateKeys, WeaveNode, WeaveNodesSelectionChangeCallback, WeaveNodesSelectionPlugin, WeaveNodesSelectionPluginCallbacks, WeaveNodesSelectionPluginConfig, WeaveNodesSelectionPluginParams, WeaveNodesSelectionStageSelectionCallback, WeaveNodesSnappingPlugin, WeaveOnNodeMenuCallback, WeavePasteModel, WeavePenToolAction, WeavePenToolActionState, WeavePenToolActionStateKeys, WeavePenToolCallbacks, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRectangleToolActionState, WeaveRectangleToolActionStateKeys, WeaveRectangleToolCallbacks, WeaveSelectionToolAction, WeaveSelectionToolActionState, WeaveSelectionToolActionStateKeys, WeaveStageContextMenuPluginCallbacks, WeaveStageContextMenuPluginConfig, WeaveStageContextMenuPluginParams, WeaveStageDropAreaPlugin, WeaveStageDropAreaPluginCallbacks, WeaveStageDropAreaPluginParams, WeaveStageDropCallback, WeaveStageDropUploadFileCallback, WeaveStageGridPlugin, WeaveStageGridPluginConfig, WeaveStageGridPluginParams, WeaveStageGridType, WeaveStageGridTypeKeys, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomChanged, WeaveStageZoomOnZoomChangeCallback, WeaveStageZoomPlugin, WeaveStageZoomPluginCallbacks, WeaveStageZoomPluginConfig, WeaveStageZoomPluginParams, WeaveStore, WeaveTextNode, WeaveTextToolAction, WeaveTextToolActionState, WeaveTextToolActionStateKeys, WeaveToPasteNode, WeaveUserPointer, WeaveUserPointerKey, WeaveUsersPointersPlugin, WeaveUsersPointersPluginConfig, WeaveUsersPointersPluginParams, WeaveZoomInToolAction, WeaveZoomInToolActionParams, WeaveZoomOutToolAction, WeaveZoomOutToolActionParams, resetScale };
1544
+ 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_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, WeaveActionCallbacks, WeaveActionPropsChangeCallback, WeaveBrushToolAction, WeaveBrushToolActionState, WeaveBrushToolActionStateKeys, WeaveBrushToolCallbacks, WeaveConnectedUserInfoKey, WeaveConnectedUsersChangeCallback, WeaveConnectedUsersChanged, WeaveConnectedUsersPlugin, WeaveConnectedUsersPluginCallbacks, WeaveConnectedUsersPluginConfig, WeaveConnectedUsersPluginParams, WeaveContextMenuPlugin, WeaveCopyPasteNodesCanCopyChangeCallback, WeaveCopyPasteNodesCanPasteChangeCallback, WeaveCopyPasteNodesOnCopyCallback, WeaveCopyPasteNodesOnPasteCallback, WeaveCopyPasteNodesOnPasteExternalCallback, WeaveCopyPasteNodesPlugin, WeaveCopyPasteNodesPluginCallbacks, WeaveCopyPasteNodesPluginParams, WeaveCopyPasteNodesPluginState, WeaveCopyPasteNodesPluginStateKeys, WeaveExportNodeActionParams, WeaveExportNodeToolAction, WeaveExportStageActionParams, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToScreenToolActionParams, WeaveFitToSelectionToolAction, WeaveFitToSelectionToolActionParams, WeaveFrameAttributes, WeaveFrameNode, WeaveFrameNodeSizes, WeaveFrameNodeSizesInfo, WeaveFrameNodeSizesKeys, WeaveFrameNodeSizesOrientation, WeaveFrameNodeSizesOrientationKeys, WeaveFrameToolAction, WeaveFrameToolActionState, WeaveFrameToolActionStateKeys, WeaveFrameToolActionTriggerParams, WeaveFrameToolCallbacks, WeaveFrameToolProps, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveImageToolActionCallbacks, WeaveImageToolActionOnAddImageCallback, WeaveImageToolActionOnEndLoadImageCallback, WeaveImageToolActionOnStartLoadImageCallback, WeaveImageToolActionState, WeaveImageToolActionStateKeys, WeaveImageToolActionTriggerParams, WeaveImageToolActionTriggerReturn, WeaveLayerNode, WeaveLineNode, WeaveMoveToolAction, WeaveMoveToolActionState, WeaveMoveToolActionStateKeys, WeaveNode, WeaveNodesSelectionChangeCallback, WeaveNodesSelectionPlugin, WeaveNodesSelectionPluginCallbacks, WeaveNodesSelectionPluginConfig, WeaveNodesSelectionPluginParams, WeaveNodesSelectionStageSelectionCallback, WeaveNodesSnappingPlugin, WeaveNodesSnappingPluginConfig, WeaveNodesSnappingPluginParams, WeaveOnNodeMenuCallback, WeavePasteModel, WeavePenToolAction, WeavePenToolActionState, WeavePenToolActionStateKeys, WeavePenToolCallbacks, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRectangleToolActionState, WeaveRectangleToolActionStateKeys, WeaveRectangleToolCallbacks, WeaveSelectionToolAction, WeaveSelectionToolActionState, WeaveSelectionToolActionStateKeys, WeaveStageContextMenuPluginCallbacks, WeaveStageContextMenuPluginConfig, WeaveStageContextMenuPluginParams, WeaveStageDropAreaPlugin, WeaveStageDropAreaPluginCallbacks, WeaveStageDropAreaPluginParams, WeaveStageDropCallback, WeaveStageDropUploadFileCallback, WeaveStageGridPlugin, WeaveStageGridPluginConfig, WeaveStageGridPluginParams, WeaveStageGridType, WeaveStageGridTypeKeys, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomChanged, WeaveStageZoomOnZoomChangeCallback, WeaveStageZoomPlugin, WeaveStageZoomPluginCallbacks, WeaveStageZoomPluginConfig, WeaveStageZoomPluginParams, WeaveStore, WeaveTextNode, WeaveTextToolAction, WeaveTextToolActionState, WeaveTextToolActionStateKeys, WeaveToPasteNode, WeaveUserPointer, WeaveUserPointerKey, WeaveUsersPointersPlugin, WeaveUsersPointersPluginConfig, WeaveUsersPointersPluginParams, WeaveZoomInToolAction, WeaveZoomInToolActionParams, WeaveZoomOutToolAction, WeaveZoomOutToolActionParams, resetScale };
package/dist/sdk.d.ts CHANGED
@@ -5,6 +5,7 @@ import { Doc } from "yjs";
5
5
  import Emittery from "emittery";
6
6
  import pino, { Logger } from "pino";
7
7
  import { StageConfig } from "konva/lib/Stage";
8
+ import { KonvaEventObject } from "konva/lib/Node";
8
9
 
9
10
  //#region ../types/dist/types.d.ts
10
11
  declare const WEAVE_INSTANCE_STATUS: {
@@ -255,6 +256,8 @@ declare class WeaveNodesSelectionPlugin extends WeavePlugin {
255
256
  getName(): string;
256
257
  getLayerName(): string;
257
258
  initLayer(): void;
259
+ isSelecting(): boolean;
260
+ isNodeSelected(ele: Konva.Node): boolean;
258
261
  onInit(): void;
259
262
  private getLayer;
260
263
  private triggerSelectedNodesEvent;
@@ -1462,6 +1465,9 @@ declare class WeaveCopyPasteNodesPlugin extends WeavePlugin {
1462
1465
  //#region src/plugins/nodes-snapping/constants.d.ts
1463
1466
  declare const WEAVE_NODES_SNAPPING_KEY = "nodesSnapping";
1464
1467
  declare const GUIDE_LINE_NAME = "guide-line";
1468
+ declare const GUIDE_LINE_DEFAULT_CONFIG: Required<Pick<Konva.LineConfig, "stroke" | "strokeWidth" | "dash">>;
1469
+ declare const GUIDE_LINE_DRAG_SNAPPING_THRESHOLD = 10;
1470
+ declare const GUIDE_LINE_TRANSFORM_SNAPPING_THRESHOLD = 10;
1465
1471
  declare const GUIDE_ORIENTATION: {
1466
1472
  readonly "HORIZONTAL": "H";
1467
1473
  readonly "VERTICAL": "V";
@@ -1503,24 +1509,36 @@ type Guide = {
1503
1509
  orientation: GuideOrientation;
1504
1510
  snap: NodeSnap;
1505
1511
  };
1512
+ type WeaveNodesSnappingPluginConfig = {
1513
+ guideLine: Konva.LineConfig;
1514
+ dragSnappingThreshold: number;
1515
+ transformSnappingThreshold: number;
1516
+ };
1517
+ type WeaveNodesSnappingPluginParams = {
1518
+ config?: WeaveNodesSnappingPluginConfig;
1519
+ };
1506
1520
 
1507
1521
  //#endregion
1508
1522
  //#region src/plugins/nodes-snapping/nodes-snapping.d.ts
1509
1523
  declare class WeaveNodesSnappingPlugin extends WeavePlugin {
1510
- private guideLineOffset;
1524
+ private guideLineConfig;
1525
+ private dragSnappingThreshold;
1526
+ private transformSnappingThreshold;
1511
1527
  onRender: undefined;
1512
- constructor();
1528
+ constructor(params?: Partial<WeaveNodesSnappingPluginParams>);
1513
1529
  getName(): string;
1514
1530
  onInit(): void;
1515
1531
  setEnabled(enabled: boolean): void;
1532
+ evaluateGuidelines(e: KonvaEventObject<any>): void;
1533
+ cleanupEvaluateGuidelines(): void;
1516
1534
  private initEvents;
1517
1535
  getLineGuideStops(skipShape: Konva.Node): LineGuideStop;
1518
1536
  getObjectSnappingEdges(node: Konva.Node): NodeSnappingEdges;
1519
- getGuides(lineGuideStops: LineGuideStop, itemBounds: NodeSnappingEdges): Guide[];
1537
+ getGuides(lineGuideStops: LineGuideStop, itemBounds: NodeSnappingEdges, type: string): Guide[];
1520
1538
  drawGuides(guides: Guide[]): void;
1521
1539
  enable(): void;
1522
1540
  disable(): void;
1523
1541
  }
1524
1542
 
1525
1543
  //#endregion
1526
- export { BRUSH_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_STATE, FRAME_TOOL_ACTION_NAME, FRAME_TOOL_STATE, GUIDE_LINE_NAME, 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_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, WeaveActionCallbacks, WeaveActionPropsChangeCallback, WeaveBrushToolAction, WeaveBrushToolActionState, WeaveBrushToolActionStateKeys, WeaveBrushToolCallbacks, WeaveConnectedUserInfoKey, WeaveConnectedUsersChangeCallback, WeaveConnectedUsersChanged, WeaveConnectedUsersPlugin, WeaveConnectedUsersPluginCallbacks, WeaveConnectedUsersPluginConfig, WeaveConnectedUsersPluginParams, WeaveContextMenuPlugin, WeaveCopyPasteNodesCanCopyChangeCallback, WeaveCopyPasteNodesCanPasteChangeCallback, WeaveCopyPasteNodesOnCopyCallback, WeaveCopyPasteNodesOnPasteCallback, WeaveCopyPasteNodesOnPasteExternalCallback, WeaveCopyPasteNodesPlugin, WeaveCopyPasteNodesPluginCallbacks, WeaveCopyPasteNodesPluginParams, WeaveCopyPasteNodesPluginState, WeaveCopyPasteNodesPluginStateKeys, WeaveExportNodeActionParams, WeaveExportNodeToolAction, WeaveExportStageActionParams, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToScreenToolActionParams, WeaveFitToSelectionToolAction, WeaveFitToSelectionToolActionParams, WeaveFrameAttributes, WeaveFrameNode, WeaveFrameNodeSizes, WeaveFrameNodeSizesInfo, WeaveFrameNodeSizesKeys, WeaveFrameNodeSizesOrientation, WeaveFrameNodeSizesOrientationKeys, WeaveFrameToolAction, WeaveFrameToolActionState, WeaveFrameToolActionStateKeys, WeaveFrameToolActionTriggerParams, WeaveFrameToolCallbacks, WeaveFrameToolProps, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveImageToolActionCallbacks, WeaveImageToolActionOnAddImageCallback, WeaveImageToolActionOnEndLoadImageCallback, WeaveImageToolActionOnStartLoadImageCallback, WeaveImageToolActionState, WeaveImageToolActionStateKeys, WeaveImageToolActionTriggerParams, WeaveImageToolActionTriggerReturn, WeaveLayerNode, WeaveLineNode, WeaveMoveToolAction, WeaveMoveToolActionState, WeaveMoveToolActionStateKeys, WeaveNode, WeaveNodesSelectionChangeCallback, WeaveNodesSelectionPlugin, WeaveNodesSelectionPluginCallbacks, WeaveNodesSelectionPluginConfig, WeaveNodesSelectionPluginParams, WeaveNodesSelectionStageSelectionCallback, WeaveNodesSnappingPlugin, WeaveOnNodeMenuCallback, WeavePasteModel, WeavePenToolAction, WeavePenToolActionState, WeavePenToolActionStateKeys, WeavePenToolCallbacks, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRectangleToolActionState, WeaveRectangleToolActionStateKeys, WeaveRectangleToolCallbacks, WeaveSelectionToolAction, WeaveSelectionToolActionState, WeaveSelectionToolActionStateKeys, WeaveStageContextMenuPluginCallbacks, WeaveStageContextMenuPluginConfig, WeaveStageContextMenuPluginParams, WeaveStageDropAreaPlugin, WeaveStageDropAreaPluginCallbacks, WeaveStageDropAreaPluginParams, WeaveStageDropCallback, WeaveStageDropUploadFileCallback, WeaveStageGridPlugin, WeaveStageGridPluginConfig, WeaveStageGridPluginParams, WeaveStageGridType, WeaveStageGridTypeKeys, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomChanged, WeaveStageZoomOnZoomChangeCallback, WeaveStageZoomPlugin, WeaveStageZoomPluginCallbacks, WeaveStageZoomPluginConfig, WeaveStageZoomPluginParams, WeaveStore, WeaveTextNode, WeaveTextToolAction, WeaveTextToolActionState, WeaveTextToolActionStateKeys, WeaveToPasteNode, WeaveUserPointer, WeaveUserPointerKey, WeaveUsersPointersPlugin, WeaveUsersPointersPluginConfig, WeaveUsersPointersPluginParams, WeaveZoomInToolAction, WeaveZoomInToolActionParams, WeaveZoomOutToolAction, WeaveZoomOutToolActionParams, resetScale };
1544
+ 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_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, WeaveActionCallbacks, WeaveActionPropsChangeCallback, WeaveBrushToolAction, WeaveBrushToolActionState, WeaveBrushToolActionStateKeys, WeaveBrushToolCallbacks, WeaveConnectedUserInfoKey, WeaveConnectedUsersChangeCallback, WeaveConnectedUsersChanged, WeaveConnectedUsersPlugin, WeaveConnectedUsersPluginCallbacks, WeaveConnectedUsersPluginConfig, WeaveConnectedUsersPluginParams, WeaveContextMenuPlugin, WeaveCopyPasteNodesCanCopyChangeCallback, WeaveCopyPasteNodesCanPasteChangeCallback, WeaveCopyPasteNodesOnCopyCallback, WeaveCopyPasteNodesOnPasteCallback, WeaveCopyPasteNodesOnPasteExternalCallback, WeaveCopyPasteNodesPlugin, WeaveCopyPasteNodesPluginCallbacks, WeaveCopyPasteNodesPluginParams, WeaveCopyPasteNodesPluginState, WeaveCopyPasteNodesPluginStateKeys, WeaveExportNodeActionParams, WeaveExportNodeToolAction, WeaveExportStageActionParams, WeaveExportStageToolAction, WeaveFitToScreenToolAction, WeaveFitToScreenToolActionParams, WeaveFitToSelectionToolAction, WeaveFitToSelectionToolActionParams, WeaveFrameAttributes, WeaveFrameNode, WeaveFrameNodeSizes, WeaveFrameNodeSizesInfo, WeaveFrameNodeSizesKeys, WeaveFrameNodeSizesOrientation, WeaveFrameNodeSizesOrientationKeys, WeaveFrameToolAction, WeaveFrameToolActionState, WeaveFrameToolActionStateKeys, WeaveFrameToolActionTriggerParams, WeaveFrameToolCallbacks, WeaveFrameToolProps, WeaveGroupNode, WeaveImageNode, WeaveImageToolAction, WeaveImageToolActionCallbacks, WeaveImageToolActionOnAddImageCallback, WeaveImageToolActionOnEndLoadImageCallback, WeaveImageToolActionOnStartLoadImageCallback, WeaveImageToolActionState, WeaveImageToolActionStateKeys, WeaveImageToolActionTriggerParams, WeaveImageToolActionTriggerReturn, WeaveLayerNode, WeaveLineNode, WeaveMoveToolAction, WeaveMoveToolActionState, WeaveMoveToolActionStateKeys, WeaveNode, WeaveNodesSelectionChangeCallback, WeaveNodesSelectionPlugin, WeaveNodesSelectionPluginCallbacks, WeaveNodesSelectionPluginConfig, WeaveNodesSelectionPluginParams, WeaveNodesSelectionStageSelectionCallback, WeaveNodesSnappingPlugin, WeaveNodesSnappingPluginConfig, WeaveNodesSnappingPluginParams, WeaveOnNodeMenuCallback, WeavePasteModel, WeavePenToolAction, WeavePenToolActionState, WeavePenToolActionStateKeys, WeavePenToolCallbacks, WeavePlugin, WeaveRectangleNode, WeaveRectangleToolAction, WeaveRectangleToolActionState, WeaveRectangleToolActionStateKeys, WeaveRectangleToolCallbacks, WeaveSelectionToolAction, WeaveSelectionToolActionState, WeaveSelectionToolActionStateKeys, WeaveStageContextMenuPluginCallbacks, WeaveStageContextMenuPluginConfig, WeaveStageContextMenuPluginParams, WeaveStageDropAreaPlugin, WeaveStageDropAreaPluginCallbacks, WeaveStageDropAreaPluginParams, WeaveStageDropCallback, WeaveStageDropUploadFileCallback, WeaveStageGridPlugin, WeaveStageGridPluginConfig, WeaveStageGridPluginParams, WeaveStageGridType, WeaveStageGridTypeKeys, WeaveStageNode, WeaveStagePanningPlugin, WeaveStageResizePlugin, WeaveStageZoomChanged, WeaveStageZoomOnZoomChangeCallback, WeaveStageZoomPlugin, WeaveStageZoomPluginCallbacks, WeaveStageZoomPluginConfig, WeaveStageZoomPluginParams, WeaveStore, WeaveTextNode, WeaveTextToolAction, WeaveTextToolActionState, WeaveTextToolActionStateKeys, WeaveToPasteNode, WeaveUserPointer, WeaveUserPointerKey, WeaveUsersPointersPlugin, WeaveUsersPointersPluginConfig, WeaveUsersPointersPluginParams, WeaveZoomInToolAction, WeaveZoomInToolActionParams, WeaveZoomOutToolAction, WeaveZoomOutToolActionParams, resetScale };
package/dist/sdk.js CHANGED
@@ -15793,6 +15793,14 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
15793
15793
  const layer = new Konva.Layer({ id: this.getLayerName() });
15794
15794
  stage.add(layer);
15795
15795
  }
15796
+ isSelecting() {
15797
+ return this.instance.getActiveAction() === "selectionTool";
15798
+ }
15799
+ isNodeSelected(ele) {
15800
+ let selected = false;
15801
+ if (this.getSelectedNodes().length === 1 && this.getSelectedNodes()[0].getAttrs().id === ele.getAttrs().id) selected = true;
15802
+ return selected;
15803
+ }
15796
15804
  onInit() {
15797
15805
  const stage = this.instance.getStage();
15798
15806
  const selectionLayer = this.getLayer();
@@ -15812,6 +15820,21 @@ var WeaveNodesSelectionPlugin = class extends WeavePlugin {
15812
15820
  ...this.config.transformer
15813
15821
  });
15814
15822
  selectionLayer?.add(tr);
15823
+ tr.on("transform", (e) => {
15824
+ const node = e.target;
15825
+ const nodesSnappingPlugin = this.instance.getPlugin("nodesSnapping");
15826
+ if (nodesSnappingPlugin && this.isSelecting() && this.isNodeSelected(node)) nodesSnappingPlugin.evaluateGuidelines(e);
15827
+ if (this.isSelecting() && this.isNodeSelected(node)) {
15828
+ const nodeHandler = this.instance.getNodeHandler(node.getAttrs().nodeType);
15829
+ this.instance.updateNode(nodeHandler.serialize(node));
15830
+ e.cancelBubble = true;
15831
+ }
15832
+ });
15833
+ tr.on("transformend", (e) => {
15834
+ const node = e.target;
15835
+ const nodesSnappingPlugin = this.instance.getPlugin("nodesSnapping");
15836
+ if (nodesSnappingPlugin && this.isSelecting() && this.isNodeSelected(node)) nodesSnappingPlugin.cleanupEvaluateGuidelines();
15837
+ });
15815
15838
  tr.on("mouseenter", (e) => {
15816
15839
  const stage$1 = this.instance.getStage();
15817
15840
  stage$1.container().style.cursor = "grab";
@@ -16342,12 +16365,6 @@ var WeaveNode = class {
16342
16365
  }
16343
16366
  node.draggable(false);
16344
16367
  });
16345
- node.on("transform", (e) => {
16346
- if (this.isSelecting() && this.isNodeSelected(node)) {
16347
- this.instance.updateNode(this.serialize(node));
16348
- e.cancelBubble = true;
16349
- }
16350
- });
16351
16368
  node.on("dragmove", (e) => {
16352
16369
  if (this.isSelecting() && this.isNodeSelected(node)) {
16353
16370
  this.clearContainerTargets();
@@ -17789,7 +17806,7 @@ var WeaveRegisterManager = class {
17789
17806
 
17790
17807
  //#endregion
17791
17808
  //#region package.json
17792
- var version = "0.5.0";
17809
+ var version = "0.7.0";
17793
17810
 
17794
17811
  //#endregion
17795
17812
  //#region src/managers/setup.ts
@@ -18941,6 +18958,7 @@ var WeaveImageToolAction = class extends WeaveAction {
18941
18958
  imageURL: this.imageURL,
18942
18959
  stroke: "#000000ff",
18943
18960
  strokeWidth: 0,
18961
+ strokeScaleEnabled: false,
18944
18962
  imageInfo: {
18945
18963
  width: this.preloadImgs[this.imageId].width,
18946
18964
  height: this.preloadImgs[this.imageId].height
@@ -19554,6 +19572,7 @@ var WeaveFrameNode = class extends WeaveNode {
19554
19572
  width: props.frameWidth,
19555
19573
  stroke: props.borderColor,
19556
19574
  strokeWidth: props.borderWidth,
19575
+ strokeScaleEnabled: false,
19557
19576
  height: props.frameHeight,
19558
19577
  fill: "#ffffffff",
19559
19578
  draggable: false
@@ -19571,6 +19590,7 @@ var WeaveFrameNode = class extends WeaveNode {
19571
19590
  text: props.title,
19572
19591
  stroke: "#000000ff",
19573
19592
  strokeWidth: 1,
19593
+ strokeScaleEnabled: false,
19574
19594
  listening: false,
19575
19595
  draggable: false
19576
19596
  });
@@ -19584,6 +19604,7 @@ var WeaveFrameNode = class extends WeaveNode {
19584
19604
  height: props.frameHeight,
19585
19605
  draggable: false,
19586
19606
  stroke: "transparent",
19607
+ strokeScaleEnabled: false,
19587
19608
  borderWidth: props.borderWidth,
19588
19609
  clipX: 0,
19589
19610
  clipY: 0,
@@ -20162,6 +20183,7 @@ var WeaveRectangleToolAction = class extends WeaveAction {
20162
20183
  const nodeHandler = this.instance.getNodeHandler("rectangle");
20163
20184
  const node = nodeHandler.create(this.rectId, {
20164
20185
  ...this.props,
20186
+ strokeScaleEnabled: false,
20165
20187
  x: this.clickPoint?.x ?? 0,
20166
20188
  y: this.clickPoint?.y ?? 0,
20167
20189
  width: 0,
@@ -20326,6 +20348,7 @@ var WeavePenToolAction = class extends WeaveAction {
20326
20348
  const nodeHandler = this.instance.getNodeHandler("line");
20327
20349
  const node = nodeHandler.create(this.lineId, {
20328
20350
  ...this.props,
20351
+ strokeScaleEnabled: false,
20329
20352
  x: this.clickPoint?.x ?? 0,
20330
20353
  y: this.clickPoint?.y ?? 0,
20331
20354
  points: [0, 0]
@@ -20335,6 +20358,7 @@ var WeavePenToolAction = class extends WeaveAction {
20335
20358
  x: this.clickPoint?.x ?? 0,
20336
20359
  y: this.clickPoint?.y ?? 0,
20337
20360
  radius: 5 / stage.scaleX(),
20361
+ strokeScaleEnabled: false,
20338
20362
  stroke: "#cccccc",
20339
20363
  strokeWidth: 0,
20340
20364
  fill: "#cccccc"
@@ -20351,6 +20375,7 @@ var WeavePenToolAction = class extends WeaveAction {
20351
20375
  x: this.clickPoint?.x ?? 0,
20352
20376
  y: this.clickPoint?.y ?? 0,
20353
20377
  radius: 5 / stage.scaleX(),
20378
+ strokeScaleEnabled: false,
20354
20379
  stroke: "#cccccc",
20355
20380
  strokeWidth: 0,
20356
20381
  fill: "#cccccc"
@@ -20543,6 +20568,7 @@ var WeaveBrushToolAction = class extends WeaveAction {
20543
20568
  const nodeHandler = this.instance.getNodeHandler("line");
20544
20569
  const node = nodeHandler.create(this.strokeId, {
20545
20570
  ...this.props,
20571
+ strokeScaleEnabled: false,
20546
20572
  x: this.clickPoint?.x ?? 0,
20547
20573
  y: this.clickPoint?.y ?? 0,
20548
20574
  points: [0, 0]
@@ -20688,6 +20714,7 @@ var WeaveTextToolAction = class extends WeaveAction {
20688
20714
  strokeEnabled: false,
20689
20715
  stroke: "#000000ff",
20690
20716
  strokeWidth: 1,
20717
+ strokeScaleEnabled: false,
20691
20718
  align: "left",
20692
20719
  verticalAlign: "top",
20693
20720
  opacity: 1,
@@ -21616,6 +21643,13 @@ var WeaveStageDropAreaPlugin = class extends WeavePlugin {
21616
21643
  //#region src/plugins/nodes-snapping/constants.ts
21617
21644
  const WEAVE_NODES_SNAPPING_KEY = "nodesSnapping";
21618
21645
  const GUIDE_LINE_NAME = "guide-line";
21646
+ const GUIDE_LINE_DEFAULT_CONFIG = {
21647
+ stroke: "rgb(0, 161, 255)",
21648
+ strokeWidth: 1,
21649
+ dash: [4, 6]
21650
+ };
21651
+ const GUIDE_LINE_DRAG_SNAPPING_THRESHOLD = 10;
21652
+ const GUIDE_LINE_TRANSFORM_SNAPPING_THRESHOLD = 10;
21619
21653
  const GUIDE_ORIENTATION = {
21620
21654
  ["HORIZONTAL"]: "H",
21621
21655
  ["VERTICAL"]: "V"
@@ -21629,9 +21663,12 @@ const NODE_SNAP = {
21629
21663
  //#endregion
21630
21664
  //#region src/plugins/nodes-snapping/nodes-snapping.ts
21631
21665
  var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21632
- constructor() {
21666
+ constructor(params) {
21633
21667
  super();
21634
- this.guideLineOffset = 10;
21668
+ const { config } = params ?? {};
21669
+ this.guideLineConfig = config?.guideLine ?? GUIDE_LINE_DEFAULT_CONFIG;
21670
+ this.dragSnappingThreshold = config?.dragSnappingThreshold ?? GUIDE_LINE_DRAG_SNAPPING_THRESHOLD;
21671
+ this.transformSnappingThreshold = config?.transformSnappingThreshold ?? GUIDE_LINE_TRANSFORM_SNAPPING_THRESHOLD;
21635
21672
  this.enabled = true;
21636
21673
  }
21637
21674
  getName() {
@@ -21643,42 +21680,76 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21643
21680
  setEnabled(enabled) {
21644
21681
  this.enabled = enabled;
21645
21682
  }
21646
- initEvents() {
21647
- const stage = this.instance.getStage();
21683
+ evaluateGuidelines(e) {
21648
21684
  const mainLayer = this.instance.getMainLayer();
21649
- if (mainLayer) {
21650
- stage.on("dragmove", (e) => {
21651
- if (!this.enabled) return;
21652
- if (e.target instanceof Konva.Transformer) {
21653
- const actualTarget = e.target;
21654
- const node = actualTarget.getNodes()[0];
21655
- if (typeof node === "undefined") return;
21656
- mainLayer.find(`.${GUIDE_LINE_NAME}`).forEach((l) => l.destroy());
21657
- const lineGuideStops = this.getLineGuideStops(node);
21658
- const itemBounds = this.getObjectSnappingEdges(node);
21659
- const guides = this.getGuides(lineGuideStops, itemBounds);
21660
- if (!guides.length) return;
21661
- this.drawGuides(guides);
21662
- const absPos = node.absolutePosition();
21685
+ if (!this.enabled) return;
21686
+ if (!mainLayer) return;
21687
+ let node = void 0;
21688
+ if (e.type === "dragmove" && e.target instanceof Konva.Transformer) {
21689
+ const actualTarget = e.target;
21690
+ node = actualTarget.getNodes()[0];
21691
+ }
21692
+ if (e.type === "transform") node = e.target;
21693
+ if (typeof node === "undefined") return;
21694
+ mainLayer.find(`.${GUIDE_LINE_NAME}`).forEach((l) => l.destroy());
21695
+ const lineGuideStops = this.getLineGuideStops(node);
21696
+ const itemBounds = this.getObjectSnappingEdges(node);
21697
+ const guides = this.getGuides(lineGuideStops, itemBounds, e.type);
21698
+ if (!guides.length) return;
21699
+ this.drawGuides(guides);
21700
+ if (e.type === "dragmove") {
21701
+ const absPos = node.absolutePosition();
21702
+ guides.forEach((lg) => {
21703
+ switch (lg.orientation) {
21704
+ case GUIDE_ORIENTATION.VERTICAL: {
21705
+ absPos.x = lg.lineGuide + lg.offset;
21706
+ break;
21707
+ }
21708
+ case GUIDE_ORIENTATION.HORIZONTAL: {
21709
+ absPos.y = lg.lineGuide + lg.offset;
21710
+ break;
21711
+ }
21712
+ }
21713
+ });
21714
+ node.absolutePosition(absPos);
21715
+ }
21716
+ if (e.type === "transform") {
21717
+ const nodesSelectionPlugin = this.instance.getPlugin("nodesSelection");
21718
+ if (nodesSelectionPlugin) {
21719
+ const transformer = nodesSelectionPlugin.getTransformer();
21720
+ transformer.anchorDragBoundFunc((_, newAbsPos) => {
21721
+ const finalPos = { ...newAbsPos };
21663
21722
  guides.forEach((lg) => {
21664
21723
  switch (lg.orientation) {
21665
21724
  case GUIDE_ORIENTATION.VERTICAL: {
21666
- absPos.x = lg.lineGuide + lg.offset;
21725
+ const distX = Math.sqrt(Math.pow(newAbsPos.x - lg.lineGuide, 2));
21726
+ if (distX < this.transformSnappingThreshold) finalPos.x = lg.lineGuide;
21667
21727
  break;
21668
21728
  }
21669
21729
  case GUIDE_ORIENTATION.HORIZONTAL: {
21670
- absPos.y = lg.lineGuide + lg.offset;
21730
+ const distY = Math.sqrt(Math.pow(newAbsPos.y - lg.lineGuide, 2));
21731
+ if (distY < this.transformSnappingThreshold) finalPos.y = lg.lineGuide;
21671
21732
  break;
21672
21733
  }
21673
21734
  }
21674
21735
  });
21675
- node.absolutePosition(absPos);
21676
- }
21677
- });
21678
- stage.on("dragend", () => {
21679
- if (!this.enabled) return;
21680
- mainLayer.find(`.${GUIDE_LINE_NAME}`).forEach((l) => l.destroy());
21681
- });
21736
+ return finalPos;
21737
+ });
21738
+ }
21739
+ }
21740
+ }
21741
+ cleanupEvaluateGuidelines() {
21742
+ const mainLayer = this.instance.getMainLayer();
21743
+ if (!this.enabled) return;
21744
+ if (!mainLayer) return;
21745
+ mainLayer.find(`.${GUIDE_LINE_NAME}`).forEach((l) => l.destroy());
21746
+ }
21747
+ initEvents() {
21748
+ const stage = this.instance.getStage();
21749
+ const mainLayer = this.instance.getMainLayer();
21750
+ if (mainLayer) {
21751
+ stage.on("dragmove", this.evaluateGuidelines.bind(this));
21752
+ stage.on("dragend", this.cleanupEvaluateGuidelines.bind(this));
21682
21753
  }
21683
21754
  }
21684
21755
  getLineGuideStops(skipShape) {
@@ -21715,7 +21786,7 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21715
21786
  getObjectSnappingEdges(node) {
21716
21787
  const box = node.getClientRect();
21717
21788
  const absPos = node.absolutePosition();
21718
- return {
21789
+ const snappingEdges = {
21719
21790
  vertical: [
21720
21791
  {
21721
21792
  guide: Math.round(box.x),
@@ -21751,14 +21822,15 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21751
21822
  }
21752
21823
  ]
21753
21824
  };
21825
+ return snappingEdges;
21754
21826
  }
21755
- getGuides(lineGuideStops, itemBounds) {
21827
+ getGuides(lineGuideStops, itemBounds, type) {
21756
21828
  const resultV = [];
21757
21829
  const resultH = [];
21758
21830
  lineGuideStops.vertical.forEach((lineGuide) => {
21759
21831
  itemBounds.vertical.forEach((itemBound) => {
21760
21832
  const diff = Math.abs(lineGuide - itemBound.guide);
21761
- if (diff < this.guideLineOffset) resultV.push({
21833
+ if (diff < this.dragSnappingThreshold) resultV.push({
21762
21834
  lineGuide,
21763
21835
  diff,
21764
21836
  snap: itemBound.snap,
@@ -21769,7 +21841,7 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21769
21841
  lineGuideStops.horizontal.forEach((lineGuide) => {
21770
21842
  itemBounds.horizontal.forEach((itemBound) => {
21771
21843
  const diff = Math.abs(lineGuide - itemBound.guide);
21772
- if (diff < this.guideLineOffset) resultH.push({
21844
+ if (diff < this.dragSnappingThreshold) resultH.push({
21773
21845
  lineGuide,
21774
21846
  diff,
21775
21847
  snap: itemBound.snap,
@@ -21778,20 +21850,40 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21778
21850
  });
21779
21851
  });
21780
21852
  const guides = [];
21781
- const minV = resultV.sort((a, b) => a.diff - b.diff)[0];
21782
- const minH = resultH.sort((a, b) => a.diff - b.diff)[0];
21783
- if (minV) guides.push({
21784
- lineGuide: minV.lineGuide,
21785
- offset: minV.offset,
21786
- orientation: GUIDE_ORIENTATION.VERTICAL,
21787
- snap: minV.snap
21788
- });
21789
- if (minH) guides.push({
21790
- lineGuide: minH.lineGuide,
21791
- offset: minH.offset,
21792
- orientation: GUIDE_ORIENTATION.HORIZONTAL,
21793
- snap: minH.snap
21794
- });
21853
+ if (type === "dragmove") {
21854
+ const minV = resultV.sort((a, b) => a.diff - b.diff)[0];
21855
+ const minH = resultH.sort((a, b) => a.diff - b.diff)[0];
21856
+ if (minV) guides.push({
21857
+ lineGuide: minV.lineGuide,
21858
+ offset: minV.offset,
21859
+ orientation: GUIDE_ORIENTATION.VERTICAL,
21860
+ snap: minV.snap
21861
+ });
21862
+ if (minH) guides.push({
21863
+ lineGuide: minH.lineGuide,
21864
+ offset: minH.offset,
21865
+ orientation: GUIDE_ORIENTATION.HORIZONTAL,
21866
+ snap: minH.snap
21867
+ });
21868
+ }
21869
+ if (type === "transform") {
21870
+ resultV.forEach((v) => {
21871
+ guides.push({
21872
+ lineGuide: v.lineGuide,
21873
+ offset: v.offset,
21874
+ orientation: GUIDE_ORIENTATION.VERTICAL,
21875
+ snap: v.snap
21876
+ });
21877
+ });
21878
+ resultH.forEach((h) => {
21879
+ guides.push({
21880
+ lineGuide: h.lineGuide,
21881
+ offset: h.offset,
21882
+ orientation: GUIDE_ORIENTATION.HORIZONTAL,
21883
+ snap: h.snap
21884
+ });
21885
+ });
21886
+ }
21795
21887
  return guides;
21796
21888
  }
21797
21889
  drawGuides(guides) {
@@ -21800,16 +21892,16 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21800
21892
  if (mainLayer) guides.forEach((lg) => {
21801
21893
  if (lg.orientation === GUIDE_ORIENTATION.HORIZONTAL) {
21802
21894
  const line = new Konva.Line({
21895
+ ...this.guideLineConfig,
21896
+ strokeWidth: (this.guideLineConfig.strokeWidth ?? GUIDE_LINE_DEFAULT_CONFIG.strokeWidth) / stage.scaleX(),
21897
+ dash: this.guideLineConfig.dash?.map((e) => e / stage.scaleX()),
21803
21898
  points: [
21804
21899
  -6e3,
21805
21900
  0,
21806
21901
  6e3,
21807
21902
  0
21808
21903
  ],
21809
- stroke: "rgb(0, 161, 255)",
21810
- strokeWidth: 1 / stage.scaleX(),
21811
- name: GUIDE_LINE_NAME,
21812
- dash: [4 / stage.scaleX(), 6 / stage.scaleX()]
21904
+ name: GUIDE_LINE_NAME
21813
21905
  });
21814
21906
  mainLayer.add(line);
21815
21907
  line.absolutePosition({
@@ -21819,16 +21911,16 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21819
21911
  }
21820
21912
  if (lg.orientation === GUIDE_ORIENTATION.VERTICAL) {
21821
21913
  const line = new Konva.Line({
21914
+ ...this.guideLineConfig,
21915
+ strokeWidth: (this.guideLineConfig.strokeWidth ?? GUIDE_LINE_DEFAULT_CONFIG.strokeWidth) / stage.scaleX(),
21916
+ dash: this.guideLineConfig.dash?.map((e) => e / stage.scaleX()),
21822
21917
  points: [
21823
21918
  0,
21824
21919
  -6e3,
21825
21920
  0,
21826
21921
  6e3
21827
21922
  ],
21828
- stroke: "rgb(0, 161, 255)",
21829
- strokeWidth: 1 / stage.scaleX(),
21830
- name: GUIDE_LINE_NAME,
21831
- dash: [4 / stage.scaleX(), 6 / stage.scaleX()]
21923
+ name: GUIDE_LINE_NAME
21832
21924
  });
21833
21925
  mainLayer.add(line);
21834
21926
  line.absolutePosition({
@@ -21847,4 +21939,4 @@ var WeaveNodesSnappingPlugin = class extends WeavePlugin {
21847
21939
  };
21848
21940
 
21849
21941
  //#endregion
21850
- export { BRUSH_TOOL_STATE, COPY_PASTE_NODES_PLUGIN_STATE, FRAME_TOOL_ACTION_NAME, FRAME_TOOL_STATE, GUIDE_LINE_NAME, 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_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 };
21942
+ 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_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 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inditextech/weave-sdk",
3
- "version": "0.5.0",
3
+ "version": "0.7.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.5.0",
46
+ "@inditextech/weave-types": "0.7.0",
47
47
  "@syncedstore/core": "0.6.0",
48
48
  "canvas": "3.1.0",
49
49
  "konva": "9.3.20",