ngx-vflow 1.5.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/esm2022/lib/vflow/components/connection/connection.component.mjs +2 -1
  2. package/esm2022/lib/vflow/components/edge/edge.component.mjs +5 -27
  3. package/esm2022/lib/vflow/components/edge-label/edge-label.component.mjs +2 -1
  4. package/esm2022/lib/vflow/components/node/node.component.mjs +3 -3
  5. package/esm2022/lib/vflow/directives/selectable.directive.mjs +1 -6
  6. package/esm2022/lib/vflow/directives/template.directive.mjs +16 -1
  7. package/esm2022/lib/vflow/interfaces/contextable.interface.mjs +2 -0
  8. package/esm2022/lib/vflow/interfaces/template-context.interface.mjs +1 -1
  9. package/esm2022/lib/vflow/models/edge.model.mjs +26 -1
  10. package/esm2022/lib/vflow/models/node.model.mjs +22 -1
  11. package/esm2022/lib/vflow/public-components/custom-template-edge/custom-template-edge.component.mjs +29 -0
  12. package/esm2022/lib/vflow/vflow.mjs +4 -2
  13. package/esm2022/public-api.mjs +2 -1
  14. package/fesm2022/ngx-vflow.mjs +92 -31
  15. package/fesm2022/ngx-vflow.mjs.map +1 -1
  16. package/lib/vflow/components/connection/connection.component.d.ts +2 -6
  17. package/lib/vflow/components/edge/edge.component.d.ts +2 -7
  18. package/lib/vflow/components/edge-label/edge-label.component.d.ts +2 -6
  19. package/lib/vflow/directives/template.directive.d.ts +6 -1
  20. package/lib/vflow/interfaces/contextable.interface.d.ts +5 -0
  21. package/lib/vflow/interfaces/template-context.interface.d.ts +37 -1
  22. package/lib/vflow/models/edge.model.d.ts +20 -1
  23. package/lib/vflow/models/node.model.d.ts +8 -1
  24. package/lib/vflow/public-components/custom-template-edge/custom-template-edge.component.d.ts +17 -0
  25. package/lib/vflow/vflow.d.ts +3 -2
  26. package/package.json +1 -1
  27. package/public-api.d.ts +1 -0
@@ -1,5 +1,6 @@
1
1
  import { TemplateRef } from '@angular/core';
2
2
  import { ConnectionModel } from '../../models/connection.model';
3
+ import { ConnectionContext } from '../../interfaces/template-context.interface';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class ConnectionComponent {
5
6
  model: import("@angular/core").InputSignal<ConnectionModel>;
@@ -9,12 +10,7 @@ export declare class ConnectionComponent {
9
10
  protected path: import("@angular/core").Signal<string | null>;
10
11
  protected markerUrl: import("@angular/core").Signal<string>;
11
12
  protected readonly defaultColor = "rgb(177, 177, 183)";
12
- protected getContext(): {
13
- $implicit: {
14
- path: import("@angular/core").Signal<string | null>;
15
- marker: import("@angular/core").Signal<string>;
16
- };
17
- };
13
+ protected getContext(): ConnectionContext;
18
14
  static ɵfac: i0.ɵɵFactoryDeclaration<ConnectionComponent, never>;
19
15
  static ɵcmp: i0.ɵɵComponentDeclaration<ConnectionComponent, "g[connection]", never, { "model": { "alias": "model"; "required": true; "isSignal": true; }; "template": { "alias": "template"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
20
16
  }
@@ -1,9 +1,9 @@
1
- import { ElementRef, Injector, OnInit, TemplateRef } from '@angular/core';
1
+ import { Injector, TemplateRef } from '@angular/core';
2
2
  import { EdgeModel } from '../../models/edge.model';
3
3
  import { EdgeContext } from '../../interfaces/template-context.interface';
4
4
  import { HandleModel } from '../../models/handle.model';
5
5
  import * as i0 from "@angular/core";
6
- export declare class EdgeComponent implements OnInit {
6
+ export declare class EdgeComponent {
7
7
  protected injector: Injector;
8
8
  private selectionService;
9
9
  private flowSettingsService;
@@ -13,12 +13,7 @@ export declare class EdgeComponent implements OnInit {
13
13
  model: import("@angular/core").InputSignal<EdgeModel>;
14
14
  edgeTemplate: import("@angular/core").InputSignal<TemplateRef<EdgeContext> | undefined>;
15
15
  edgeLabelHtmlTemplate: import("@angular/core").InputSignal<TemplateRef<any> | undefined>;
16
- interactiveEdgeRef: import("@angular/core").Signal<ElementRef<Element>>;
17
- protected markerStartUrl: import("@angular/core").Signal<string>;
18
- protected markerEndUrl: import("@angular/core").Signal<string>;
19
16
  protected isReconnecting: import("@angular/core").Signal<boolean>;
20
- protected edgeContext: EdgeContext;
21
- ngOnInit(): void;
22
17
  select(): void;
23
18
  pull(): void;
24
19
  protected startReconnection(event: Event, handle: HandleModel): void;
@@ -1,6 +1,7 @@
1
1
  import { AfterViewInit, ElementRef, TemplateRef } from '@angular/core';
2
2
  import { EdgeLabelModel } from '../../models/edge-label.model';
3
3
  import { EdgeModel } from '../../models/edge.model';
4
+ import { HtmlEdgeLabelContext } from '../../interfaces/template-context.interface';
4
5
  import * as i0 from "@angular/core";
5
6
  export declare class EdgeLabelComponent implements AfterViewInit {
6
7
  private zone;
@@ -25,12 +26,7 @@ export declare class EdgeLabelComponent implements AfterViewInit {
25
26
  }>;
26
27
  protected edgeLabelStyle: import("@angular/core").Signal<Partial<CSSStyleDeclaration> | null>;
27
28
  ngAfterViewInit(): void;
28
- protected getLabelContext(): {
29
- $implicit: {
30
- edge: import("ngx-vflow").Edge<unknown>;
31
- label: import("ngx-vflow").EdgeLabel;
32
- };
33
- };
29
+ protected getLabelContext(): HtmlEdgeLabelContext;
34
30
  static ɵfac: i0.ɵɵFactoryDeclaration<EdgeLabelComponent, never>;
35
31
  static ɵcmp: i0.ɵɵComponentDeclaration<EdgeLabelComponent, "g[edgeLabel]", never, { "model": { "alias": "model"; "required": true; "isSignal": true; }; "edgeModel": { "alias": "edgeModel"; "required": true; "isSignal": true; }; "point": { "alias": "point"; "required": false; "isSignal": true; }; "htmlTemplate": { "alias": "htmlTemplate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
36
32
  }
@@ -1,28 +1,33 @@
1
1
  import { TemplateRef } from '@angular/core';
2
- import { EdgeContext } from '../interfaces/template-context.interface';
2
+ import { ConnectionContext, EdgeContext, GroupNodeContext, HtmlEdgeLabelContext, NodeContext } from '../interfaces/template-context.interface';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class EdgeTemplateDirective {
5
5
  templateRef: TemplateRef<EdgeContext>;
6
+ static ngTemplateContextGuard(dir: EdgeTemplateDirective, ctx: unknown): ctx is EdgeContext;
6
7
  static ɵfac: i0.ɵɵFactoryDeclaration<EdgeTemplateDirective, never>;
7
8
  static ɵdir: i0.ɵɵDirectiveDeclaration<EdgeTemplateDirective, "ng-template[edge]", never, {}, {}, never, never, true, never>;
8
9
  }
9
10
  export declare class ConnectionTemplateDirective {
10
11
  templateRef: TemplateRef<any>;
12
+ static ngTemplateContextGuard(dir: ConnectionTemplateDirective, ctx: unknown): ctx is ConnectionContext;
11
13
  static ɵfac: i0.ɵɵFactoryDeclaration<ConnectionTemplateDirective, never>;
12
14
  static ɵdir: i0.ɵɵDirectiveDeclaration<ConnectionTemplateDirective, "ng-template[connection]", never, {}, {}, never, never, true, never>;
13
15
  }
14
16
  export declare class EdgeLabelHtmlTemplateDirective {
15
17
  templateRef: TemplateRef<any>;
18
+ static ngTemplateContextGuard(dir: EdgeLabelHtmlTemplateDirective, ctx: unknown): ctx is HtmlEdgeLabelContext;
16
19
  static ɵfac: i0.ɵɵFactoryDeclaration<EdgeLabelHtmlTemplateDirective, never>;
17
20
  static ɵdir: i0.ɵɵDirectiveDeclaration<EdgeLabelHtmlTemplateDirective, "ng-template[edgeLabelHtml]", never, {}, {}, never, never, true, never>;
18
21
  }
19
22
  export declare class NodeHtmlTemplateDirective {
20
23
  templateRef: TemplateRef<any>;
24
+ static ngTemplateContextGuard(dir: NodeHtmlTemplateDirective, ctx: unknown): ctx is NodeContext;
21
25
  static ɵfac: i0.ɵɵFactoryDeclaration<NodeHtmlTemplateDirective, never>;
22
26
  static ɵdir: i0.ɵɵDirectiveDeclaration<NodeHtmlTemplateDirective, "ng-template[nodeHtml]", never, {}, {}, never, never, true, never>;
23
27
  }
24
28
  export declare class GroupNodeTemplateDirective {
25
29
  templateRef: TemplateRef<any>;
30
+ static ngTemplateContextGuard(dir: GroupNodeTemplateDirective, ctx: unknown): ctx is GroupNodeContext;
26
31
  static ɵfac: i0.ɵɵFactoryDeclaration<GroupNodeTemplateDirective, never>;
27
32
  static ɵdir: i0.ɵɵDirectiveDeclaration<GroupNodeTemplateDirective, "ng-template[groupNode]", never, {}, {}, never, never, true, never>;
28
33
  }
@@ -0,0 +1,5 @@
1
+ export interface Contextable<T extends {
2
+ $implicit: unknown;
3
+ }> {
4
+ context: T;
5
+ }
@@ -1,11 +1,47 @@
1
1
  import { Signal } from '@angular/core';
2
2
  import { Edge } from './edge.interface';
3
+ import { HtmlTemplateEdgeLabel } from './edge-label.interface';
4
+ import { Point } from './point.interface';
5
+ import { HandleState } from '../models/handle.model';
3
6
  export interface EdgeContext {
4
7
  $implicit: {
5
- edge: Edge;
8
+ edge: Edge<any>;
6
9
  path: Signal<string>;
7
10
  markerStart: Signal<string>;
8
11
  markerEnd: Signal<string>;
9
12
  selected: Signal<boolean>;
10
13
  };
11
14
  }
15
+ export interface NodeContext {
16
+ $implicit: {
17
+ node: any;
18
+ selected: Signal<boolean>;
19
+ };
20
+ }
21
+ export interface GroupNodeContext {
22
+ $implicit: {
23
+ node: any;
24
+ selected: Signal<boolean>;
25
+ width: Signal<number>;
26
+ height: Signal<number>;
27
+ };
28
+ }
29
+ export interface ConnectionContext {
30
+ $implicit: {
31
+ path: Signal<string | null>;
32
+ marker: Signal<string>;
33
+ };
34
+ }
35
+ export interface HtmlEdgeLabelContext {
36
+ $implicit: {
37
+ edge: Edge<any>;
38
+ label: HtmlTemplateEdgeLabel<any>;
39
+ };
40
+ }
41
+ export interface HandleContext {
42
+ $implicit: {
43
+ point: Signal<Point>;
44
+ state: Signal<HandleState>;
45
+ node: any;
46
+ };
47
+ }
@@ -3,7 +3,9 @@ import { Edge, Curve, EdgeType } from '../interfaces/edge.interface';
3
3
  import { EdgeLabelModel } from './edge-label.model';
4
4
  import { NodeModel } from './node.model';
5
5
  import { FlowEntity } from '../interfaces/flow-entity.interface';
6
- export declare class EdgeModel implements FlowEntity {
6
+ import { Contextable } from '../interfaces/contextable.interface';
7
+ import { EdgeContext } from '../interfaces/template-context.interface';
8
+ export declare class EdgeModel implements FlowEntity, Contextable<EdgeContext> {
7
9
  edge: Edge;
8
10
  source: import("@angular/core").WritableSignal<NodeModel<unknown> | undefined>;
9
11
  target: import("@angular/core").WritableSignal<NodeModel<unknown> | undefined>;
@@ -18,6 +20,23 @@ export declare class EdgeModel implements FlowEntity {
18
20
  path: import("@angular/core").Signal<import("../interfaces/path-data.interface").PathData>;
19
21
  sourceHandle: import("@angular/core").Signal<import("./handle.model").HandleModel | null>;
20
22
  targetHandle: import("@angular/core").Signal<import("./handle.model").HandleModel | null>;
23
+ /**
24
+ * TODO: not reactive
25
+ */
26
+ markerStartUrl: import("@angular/core").Signal<string>;
27
+ /**
28
+ * TODO: not reactive
29
+ */
30
+ markerEndUrl: import("@angular/core").Signal<string>;
31
+ context: {
32
+ $implicit: {
33
+ edge: Edge<unknown>;
34
+ path: import("@angular/core").Signal<string>;
35
+ markerStart: import("@angular/core").Signal<string>;
36
+ markerEnd: import("@angular/core").Signal<string>;
37
+ selected: import("@angular/core").Signal<boolean>;
38
+ };
39
+ };
21
40
  edgeLabels: {
22
41
  [position in EdgeLabelPosition]?: EdgeLabelModel;
23
42
  };
@@ -3,7 +3,11 @@ import { DynamicNode, Node } from '../interfaces/node.interface';
3
3
  import { HandleModel } from './handle.model';
4
4
  import { FlowEntity } from '../interfaces/flow-entity.interface';
5
5
  import { Point } from '../interfaces/point.interface';
6
- export declare class NodeModel<T = unknown> implements FlowEntity {
6
+ import { Contextable } from '../interfaces/contextable.interface';
7
+ import { GroupNodeContext, NodeContext } from '../interfaces/template-context.interface';
8
+ export declare class NodeModel<T = unknown> implements FlowEntity, Contextable<NodeContext | GroupNodeContext | {
9
+ $implicit: object;
10
+ }> {
7
11
  node: Node<T> | DynamicNode<T>;
8
12
  private static defaultWidth;
9
13
  private static defaultHeight;
@@ -57,6 +61,9 @@ export declare class NodeModel<T = unknown> implements FlowEntity {
57
61
  resizable: import("@angular/core").WritableSignal<boolean>;
58
62
  resizing: import("@angular/core").WritableSignal<boolean>;
59
63
  resizerTemplate: import("@angular/core").WritableSignal<TemplateRef<unknown> | null>;
64
+ context: {
65
+ $implicit: {};
66
+ };
60
67
  private parentId;
61
68
  constructor(node: Node<T> | DynamicNode<T>);
62
69
  setPoint(point: Point): void;
@@ -0,0 +1,17 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class CustomTemplateEdgeComponent {
3
+ private edge;
4
+ private flowSettingsService;
5
+ private edgeRenderingService;
6
+ protected model: import("../../models/edge.model").EdgeModel;
7
+ protected context: {
8
+ edge: import("ngx-vflow").Edge<unknown>;
9
+ path: import("@angular/core").Signal<string>;
10
+ markerStart: import("@angular/core").Signal<string>;
11
+ markerEnd: import("@angular/core").Signal<string>;
12
+ selected: import("@angular/core").Signal<boolean>;
13
+ };
14
+ protected pull(): void;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<CustomTemplateEdgeComponent, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<CustomTemplateEdgeComponent, "g[customTemplateEdge]", never, {}, {}, never, ["*"], true, never>;
17
+ }
@@ -2,9 +2,10 @@ import { VflowComponent } from './components/vflow/vflow.component';
2
2
  import { DragHandleDirective } from './directives/drag-handle.directive';
3
3
  import { SelectableDirective } from './directives/selectable.directive';
4
4
  import { ConnectionTemplateDirective, EdgeLabelHtmlTemplateDirective, EdgeTemplateDirective, GroupNodeTemplateDirective, HandleTemplateDirective, NodeHtmlTemplateDirective } from './directives/template.directive';
5
+ import { ConnectionControllerDirective } from './directives/connection-controller.directive';
5
6
  import { MiniMapComponent } from './public-components/minimap/minimap.component';
6
7
  import { NodeToolbarComponent } from './public-components/node-toolbar/node-toolbar.component';
7
8
  import { ResizableComponent } from './public-components/resizable/resizable.component';
8
9
  import { HandleComponent } from './public-components/handle/handle.component';
9
- import { ConnectionControllerDirective } from './directives/connection-controller.directive';
10
- export declare const Vflow: readonly [typeof VflowComponent, typeof HandleComponent, typeof ResizableComponent, typeof SelectableDirective, typeof MiniMapComponent, typeof NodeToolbarComponent, typeof DragHandleDirective, typeof ConnectionControllerDirective, typeof NodeHtmlTemplateDirective, typeof GroupNodeTemplateDirective, typeof EdgeLabelHtmlTemplateDirective, typeof EdgeTemplateDirective, typeof ConnectionTemplateDirective, typeof HandleTemplateDirective];
10
+ import { CustomTemplateEdgeComponent } from './public-components/custom-template-edge/custom-template-edge.component';
11
+ export declare const Vflow: readonly [typeof VflowComponent, typeof HandleComponent, typeof ResizableComponent, typeof SelectableDirective, typeof MiniMapComponent, typeof NodeToolbarComponent, typeof CustomTemplateEdgeComponent, typeof DragHandleDirective, typeof ConnectionControllerDirective, typeof NodeHtmlTemplateDirective, typeof GroupNodeTemplateDirective, typeof EdgeLabelHtmlTemplateDirective, typeof EdgeTemplateDirective, typeof ConnectionTemplateDirective, typeof HandleTemplateDirective];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-vflow",
3
- "version": "1.5.0",
3
+ "version": "1.6.1",
4
4
  "license": "MIT",
5
5
  "homepage": "https://www.ngx-vflow.org/",
6
6
  "author": "Artem Mangilev",
package/public-api.d.ts CHANGED
@@ -24,6 +24,7 @@ export * from './lib/vflow/public-components/custom-dynamic-node/custom-dynamic-
24
24
  export * from './lib/vflow/public-components/resizable/resizable.component';
25
25
  export * from './lib/vflow/public-components/minimap/minimap.component';
26
26
  export * from './lib/vflow/public-components/node-toolbar/node-toolbar.component';
27
+ export * from './lib/vflow/public-components/custom-template-edge/custom-template-edge.component';
27
28
  export * from './lib/vflow/directives/template.directive';
28
29
  export * from './lib/vflow/directives/connection-controller.directive';
29
30
  export * from './lib/vflow/directives/changes-controller.directive';