ngx-vflow 1.1.1 → 1.2.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.
@@ -5,6 +5,7 @@ import * as i0 from "@angular/core";
5
5
  export declare class EdgeLabelComponent implements AfterViewInit {
6
6
  private zone;
7
7
  private destroyRef;
8
+ private settingsService;
8
9
  model: import("@angular/core").InputSignal<EdgeLabelModel>;
9
10
  edgeModel: import("@angular/core").InputSignal<EdgeModel>;
10
11
  point: import("@angular/core").InputSignal<{
@@ -12,7 +13,7 @@ export declare class EdgeLabelComponent implements AfterViewInit {
12
13
  y: number;
13
14
  }>;
14
15
  htmlTemplate: import("@angular/core").InputSignal<TemplateRef<any> | undefined>;
15
- edgeLabelWrapperRef: import("@angular/core").Signal<ElementRef<HTMLDivElement>>;
16
+ edgeLabelWrapperRef: import("@angular/core").Signal<ElementRef<Element>>;
16
17
  /**
17
18
  * Centered point of label
18
19
  *
@@ -22,11 +23,12 @@ export declare class EdgeLabelComponent implements AfterViewInit {
22
23
  x: number;
23
24
  y: number;
24
25
  }>;
26
+ protected edgeLabelStyle: import("@angular/core").Signal<Partial<CSSStyleDeclaration> | null>;
25
27
  ngAfterViewInit(): void;
26
28
  protected getLabelContext(): {
27
29
  $implicit: {
28
30
  edge: import("ngx-vflow").Edge<unknown>;
29
- label: import("ngx-vflow").EdgeLabel<unknown>;
31
+ label: import("ngx-vflow").EdgeLabel;
30
32
  };
31
33
  };
32
34
  static ɵfac: i0.ɵɵFactoryDeclaration<EdgeLabelComponent, never>;
@@ -64,6 +64,13 @@ export declare class VflowComponent implements OnInit {
64
64
  */
65
65
  set connection(connection: ConnectionModel);
66
66
  get connection(): ConnectionModel;
67
+ /**
68
+ * Snap grid for node movement. Passes as [x, y]
69
+ */
70
+ set snapGrid(value: [
71
+ number,
72
+ number
73
+ ]);
67
74
  /**
68
75
  * Nodes to render
69
76
  */
@@ -153,6 +160,6 @@ export declare class VflowComponent implements OnInit {
153
160
  protected trackEdges(idx: number, { edge }: EdgeModel): Edge<unknown>;
154
161
  private setInitialNodesOrder;
155
162
  static ɵfac: i0.ɵɵFactoryDeclaration<VflowComponent, never>;
156
- static ɵcmp: i0.ɵɵComponentDeclaration<VflowComponent, "vflow", never, { "view": { "alias": "view"; "required": false; }; "minZoom": { "alias": "minZoom"; "required": false; }; "maxZoom": { "alias": "maxZoom"; "required": false; }; "background": { "alias": "background"; "required": false; }; "optimization": { "alias": "optimization"; "required": false; "isSignal": true; }; "entitiesSelectable": { "alias": "entitiesSelectable"; "required": false; }; "keyboardShortcuts": { "alias": "keyboardShortcuts"; "required": false; }; "connection": { "alias": "connection"; "required": false; }; "nodes": { "alias": "nodes"; "required": true; }; "edges": { "alias": "edges"; "required": false; }; }, { "onComponentNodeEvent": "onComponentNodeEvent"; }, ["nodeTemplateDirective", "groupNodeTemplateDirective", "edgeTemplateDirective", "edgeLabelHtmlDirective", "connectionTemplateDirective"], never, true, [{ directive: typeof i1.ChangesControllerDirective; inputs: {}; outputs: { "onNodesChange": "onNodesChange"; "onNodesChange.position": "onNodesChange.position"; "onNodesChange.position.single": "onNodesChange.position.single"; "onNodesChange.position.many": "onNodesChange.position.many"; "onNodesChange.size": "onNodesChange.size"; "onNodesChange.size.single": "onNodesChange.size.single"; "onNodesChange.size.many": "onNodesChange.size.many"; "onNodesChange.add": "onNodesChange.add"; "onNodesChange.add.single": "onNodesChange.add.single"; "onNodesChange.add.many": "onNodesChange.add.many"; "onNodesChange.remove": "onNodesChange.remove"; "onNodesChange.remove.single": "onNodesChange.remove.single"; "onNodesChange.remove.many": "onNodesChange.remove.many"; "onNodesChange.select": "onNodesChange.select"; "onNodesChange.select.single": "onNodesChange.select.single"; "onNodesChange.select.many": "onNodesChange.select.many"; "onEdgesChange": "onEdgesChange"; "onEdgesChange.detached": "onEdgesChange.detached"; "onEdgesChange.detached.single": "onEdgesChange.detached.single"; "onEdgesChange.detached.many": "onEdgesChange.detached.many"; "onEdgesChange.add": "onEdgesChange.add"; "onEdgesChange.add.single": "onEdgesChange.add.single"; "onEdgesChange.add.many": "onEdgesChange.add.many"; "onEdgesChange.remove": "onEdgesChange.remove"; "onEdgesChange.remove.single": "onEdgesChange.remove.single"; "onEdgesChange.remove.many": "onEdgesChange.remove.many"; "onEdgesChange.select": "onEdgesChange.select"; "onEdgesChange.select.single": "onEdgesChange.select.single"; "onEdgesChange.select.many": "onEdgesChange.select.many"; }; }]>;
163
+ static ɵcmp: i0.ɵɵComponentDeclaration<VflowComponent, "vflow", never, { "view": { "alias": "view"; "required": false; }; "minZoom": { "alias": "minZoom"; "required": false; }; "maxZoom": { "alias": "maxZoom"; "required": false; }; "background": { "alias": "background"; "required": false; }; "optimization": { "alias": "optimization"; "required": false; "isSignal": true; }; "entitiesSelectable": { "alias": "entitiesSelectable"; "required": false; }; "keyboardShortcuts": { "alias": "keyboardShortcuts"; "required": false; }; "connection": { "alias": "connection"; "required": false; }; "snapGrid": { "alias": "snapGrid"; "required": false; }; "nodes": { "alias": "nodes"; "required": true; }; "edges": { "alias": "edges"; "required": false; }; }, { "onComponentNodeEvent": "onComponentNodeEvent"; }, ["nodeTemplateDirective", "groupNodeTemplateDirective", "edgeTemplateDirective", "edgeLabelHtmlDirective", "connectionTemplateDirective"], never, true, [{ directive: typeof i1.ChangesControllerDirective; inputs: {}; outputs: { "onNodesChange": "onNodesChange"; "onNodesChange.position": "onNodesChange.position"; "onNodesChange.position.single": "onNodesChange.position.single"; "onNodesChange.position.many": "onNodesChange.position.many"; "onNodesChange.size": "onNodesChange.size"; "onNodesChange.size.single": "onNodesChange.size.single"; "onNodesChange.size.many": "onNodesChange.size.many"; "onNodesChange.add": "onNodesChange.add"; "onNodesChange.add.single": "onNodesChange.add.single"; "onNodesChange.add.many": "onNodesChange.add.many"; "onNodesChange.remove": "onNodesChange.remove"; "onNodesChange.remove.single": "onNodesChange.remove.single"; "onNodesChange.remove.many": "onNodesChange.remove.many"; "onNodesChange.select": "onNodesChange.select"; "onNodesChange.select.single": "onNodesChange.select.single"; "onNodesChange.select.many": "onNodesChange.select.many"; "onEdgesChange": "onEdgesChange"; "onEdgesChange.detached": "onEdgesChange.detached"; "onEdgesChange.detached.single": "onEdgesChange.detached.single"; "onEdgesChange.detached.many": "onEdgesChange.detached.many"; "onEdgesChange.add": "onEdgesChange.add"; "onEdgesChange.add.single": "onEdgesChange.add.single"; "onEdgesChange.add.many": "onEdgesChange.add.many"; "onEdgesChange.remove": "onEdgesChange.remove"; "onEdgesChange.remove.single": "onEdgesChange.remove.single"; "onEdgesChange.remove.many": "onEdgesChange.remove.many"; "onEdgesChange.select": "onEdgesChange.select"; "onEdgesChange.select.single": "onEdgesChange.select.single"; "onEdgesChange.select.many": "onEdgesChange.select.many"; }; }]>;
157
164
  static ngAcceptInputType_connection: i2.ConnectionSettings;
158
165
  }
@@ -0,0 +1 @@
1
+ export declare const MAGIC_NUMBER_TO_FIX_GLITCH_IN_CHROME = 2;
@@ -1,6 +1,15 @@
1
- export type EdgeLabelType = 'html-template';
1
+ /**
2
+ * @deprecated not used anymore internally
3
+ */
4
+ export type EdgeLabelType = 'default' | 'html-template';
2
5
  export type EdgeLabelPosition = 'start' | 'center' | 'end';
3
- export interface EdgeLabel<T = unknown> {
4
- type: EdgeLabelType;
6
+ export type EdgeLabel<T = unknown> = DefaultEdgeLabel | HtmlTemplateEdgeLabel<T>;
7
+ export interface DefaultEdgeLabel {
8
+ type: 'default';
9
+ text: string;
10
+ style?: Partial<CSSStyleDeclaration>;
11
+ }
12
+ export interface HtmlTemplateEdgeLabel<T = unknown> {
13
+ type: 'html-template';
5
14
  data?: T;
6
15
  }
@@ -31,6 +31,8 @@ export declare class NodeModel<T = unknown> implements FlowEntity {
31
31
  }>;
32
32
  styleWidth: Signal<string>;
33
33
  styleHeight: Signal<string>;
34
+ foWidth: Signal<number>;
35
+ foHeight: Signal<number>;
34
36
  renderOrder: import("@angular/core").WritableSignal<number>;
35
37
  selected: import("@angular/core").WritableSignal<boolean>;
36
38
  selected$: import("rxjs").Observable<boolean>;
@@ -2,6 +2,7 @@ import { NodeModel } from '../models/node.model';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class DraggableService {
4
4
  private entitiesService;
5
+ private settingsService;
5
6
  /**
6
7
  * Enable draggable behavior for element.
7
8
  *
@@ -30,6 +31,14 @@ export declare class DraggableService {
30
31
  */
31
32
  private getDragBehavior;
32
33
  private getDragNodes;
34
+ /**
35
+ * @todo make it unit testable
36
+ */
37
+ private moveNode;
38
+ /**
39
+ * @todo make it unit testable
40
+ */
41
+ private alignToGrid;
33
42
  static ɵfac: i0.ɵɵFactoryDeclaration<DraggableService, never>;
34
43
  static ɵprov: i0.ɵɵInjectableDeclaration<DraggableService>;
35
44
  }
@@ -18,6 +18,7 @@ export declare class FlowSettingsService {
18
18
  minZoom: WritableSignal<number>;
19
19
  maxZoom: WritableSignal<number>;
20
20
  background: WritableSignal<Background>;
21
+ snapGrid: WritableSignal<[number, number]>;
21
22
  static ɵfac: i0.ɵɵFactoryDeclaration<FlowSettingsService, never>;
22
23
  static ɵprov: i0.ɵɵInjectableDeclaration<FlowSettingsService>;
23
24
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-vflow",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "license": "MIT",
5
5
  "homepage": "https://www.ngx-vflow.org/",
6
6
  "author": "Artem Mangilev",