ngx-vflow 1.14.0 → 1.15.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.
Files changed (30) hide show
  1. package/esm2022/lib/vflow/components/node/node.component.mjs +5 -4
  2. package/esm2022/lib/vflow/interfaces/flow-entity.interface.mjs +1 -1
  3. package/esm2022/lib/vflow/interfaces/node.interface.mjs +13 -5
  4. package/esm2022/lib/vflow/interfaces/optimization.interface.mjs +2 -1
  5. package/esm2022/lib/vflow/interfaces/template-context.interface.mjs +1 -1
  6. package/esm2022/lib/vflow/models/edge.model.mjs +4 -9
  7. package/esm2022/lib/vflow/models/node.model.mjs +51 -7
  8. package/esm2022/lib/vflow/services/edge-rendering.service.mjs +1 -1
  9. package/esm2022/lib/vflow/services/flow-rendering.service.mjs +9 -1
  10. package/esm2022/lib/vflow/utils/is-callable.mjs +10 -0
  11. package/esm2022/lib/vflow/utils/is-vflow-component.mjs +9 -0
  12. package/esm2022/public-api.mjs +2 -1
  13. package/esm2022/testing/provide-custom-node-mocks.mjs +3 -2
  14. package/fesm2022/ngx-vflow-testing.mjs +2 -1
  15. package/fesm2022/ngx-vflow-testing.mjs.map +1 -1
  16. package/fesm2022/ngx-vflow.mjs +231 -167
  17. package/fesm2022/ngx-vflow.mjs.map +1 -1
  18. package/lib/vflow/interfaces/flow-entity.interface.d.ts +2 -1
  19. package/lib/vflow/interfaces/node.interface.d.ts +2 -2
  20. package/lib/vflow/interfaces/optimization.interface.d.ts +4 -0
  21. package/lib/vflow/interfaces/template-context.interface.d.ts +4 -0
  22. package/lib/vflow/models/edge.model.d.ts +2 -0
  23. package/lib/vflow/models/node.model.d.ts +4 -0
  24. package/lib/vflow/public-components/custom-template-edge/custom-template-edge.component.d.ts +1 -0
  25. package/lib/vflow/services/edge-rendering.service.d.ts +1 -1
  26. package/lib/vflow/services/flow-rendering.service.d.ts +4 -0
  27. package/lib/vflow/utils/is-callable.d.ts +1 -0
  28. package/lib/vflow/utils/is-vflow-component.d.ts +4 -0
  29. package/package.json +1 -1
  30. package/public-api.d.ts +1 -0
@@ -1,4 +1,5 @@
1
- import { WritableSignal } from '@angular/core';
1
+ import { Signal, WritableSignal } from '@angular/core';
2
2
  export interface FlowEntity {
3
3
  selected: WritableSignal<boolean>;
4
+ shouldLoad: Signal<boolean>;
4
5
  }
@@ -82,13 +82,13 @@ export interface TemplateDynamicGroupNode<T> extends SharedDynamicNode {
82
82
  data?: WritableSignal<T>;
83
83
  }
84
84
  export interface ComponentNode<T = any> extends SharedNode {
85
- type: Type<CustomNodeComponent<T>>;
85
+ type: Type<CustomNodeComponent<T>> | (() => Promise<Type<CustomNodeComponent<T>>>);
86
86
  data?: T;
87
87
  width?: number;
88
88
  height?: number;
89
89
  }
90
90
  export interface ComponentDynamicNode<T = any> extends SharedDynamicNode {
91
- type: Type<CustomDynamicNodeComponent<T>>;
91
+ type: Type<CustomDynamicNodeComponent<T>> | (() => Promise<Type<CustomDynamicNodeComponent<T>>>);
92
92
  data?: WritableSignal<T>;
93
93
  width?: WritableSignal<number>;
94
94
  height?: WritableSignal<number>;
@@ -22,4 +22,8 @@ export interface Optimization {
22
22
  * This should help to avoid performance issues when zooming out too much.
23
23
  */
24
24
  virtualizationZoomThreshold?: number;
25
+ /**
26
+ * The trigger for lazy loading of entities.
27
+ */
28
+ lazyLoadTrigger?: 'immediate' | 'viewport';
25
29
  }
@@ -10,12 +10,14 @@ export interface EdgeContext {
10
10
  markerStart: Signal<string>;
11
11
  markerEnd: Signal<string>;
12
12
  selected: Signal<boolean>;
13
+ shouldLoad: Signal<boolean>;
13
14
  };
14
15
  }
15
16
  export interface NodeContext {
16
17
  $implicit: {
17
18
  node: any;
18
19
  selected: Signal<boolean>;
20
+ shouldLoad: Signal<boolean>;
19
21
  };
20
22
  }
21
23
  export interface SvgNodeContext {
@@ -24,6 +26,7 @@ export interface SvgNodeContext {
24
26
  selected: Signal<boolean>;
25
27
  width: Signal<number>;
26
28
  height: Signal<number>;
29
+ shouldLoad: Signal<boolean>;
27
30
  };
28
31
  }
29
32
  export interface GroupNodeContext {
@@ -32,6 +35,7 @@ export interface GroupNodeContext {
32
35
  selected: Signal<boolean>;
33
36
  width: Signal<number>;
34
37
  height: Signal<number>;
38
+ shouldLoad: Signal<boolean>;
35
39
  };
36
40
  }
37
41
  export interface ConnectionContext {
@@ -17,6 +17,7 @@ export declare class EdgeModel implements FlowEntity, Contextable<EdgeContext> {
17
17
  floating: boolean;
18
18
  selected: import("@angular/core").WritableSignal<boolean>;
19
19
  selected$: import("rxjs").Observable<boolean>;
20
+ shouldLoad: import("@angular/core").Signal<boolean>;
20
21
  renderOrder: import("@angular/core").WritableSignal<number>;
21
22
  detached: import("@angular/core").Signal<boolean>;
22
23
  detached$: import("rxjs").Observable<boolean>;
@@ -42,6 +43,7 @@ export declare class EdgeModel implements FlowEntity, Contextable<EdgeContext> {
42
43
  markerStart: import("@angular/core").Signal<string>;
43
44
  markerEnd: import("@angular/core").Signal<string>;
44
45
  selected: import("@angular/core").Signal<boolean>;
46
+ shouldLoad: import("@angular/core").Signal<boolean>;
45
47
  };
46
48
  };
47
49
  edgeLabels: {
@@ -15,6 +15,8 @@ export declare class NodeModel<T = unknown> implements FlowEntity, Contextable<N
15
15
  private static defaultHeight;
16
16
  private static defaultColor;
17
17
  private entitiesService;
18
+ private settingsService;
19
+ private nodeRenderingService;
18
20
  isVisible: import("@angular/core").WritableSignal<boolean>;
19
21
  point: import("@angular/core").WritableSignal<Point>;
20
22
  point$: Observable<Point>;
@@ -59,6 +61,8 @@ export declare class NodeModel<T = unknown> implements FlowEntity, Contextable<N
59
61
  dragHandlesCount: import("@angular/core").WritableSignal<number>;
60
62
  readonly magnetRadius = 20;
61
63
  isComponentType: boolean;
64
+ shouldLoad: import("@angular/core").Signal<boolean>;
65
+ componentInstance$: Observable<any>;
62
66
  text: import("@angular/core").WritableSignal<string>;
63
67
  componentTypeInputs: {
64
68
  node: Node<T> | DynamicNode<T>;
@@ -10,6 +10,7 @@ export declare class CustomTemplateEdgeComponent {
10
10
  markerStart: import("@angular/core").Signal<string>;
11
11
  markerEnd: import("@angular/core").Signal<string>;
12
12
  selected: import("@angular/core").Signal<boolean>;
13
+ shouldLoad: import("@angular/core").Signal<boolean>;
13
14
  };
14
15
  protected pull(): void;
15
16
  static ɵfac: i0.ɵɵFactoryDeclaration<CustomTemplateEdgeComponent, never>;
@@ -4,7 +4,7 @@ export declare class EdgeRenderingService {
4
4
  private flowEntitiesService;
5
5
  private flowSettingsService;
6
6
  readonly edges: import("@angular/core").Signal<EdgeModel[]>;
7
- private viewportEdges;
7
+ readonly viewportEdges: import("@angular/core").Signal<EdgeModel[]>;
8
8
  private maxOrder;
9
9
  pull(edge: EdgeModel): void;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<EdgeRenderingService, never>;
@@ -1,5 +1,9 @@
1
1
  import * as i0 from "@angular/core";
2
2
  export declare class FlowRenderingService {
3
+ private readonly nodeRenderingService;
4
+ private readonly edgeRenderingService;
5
+ private readonly flowEntitiesService;
6
+ private readonly settingsService;
3
7
  flowInitialized: import("@angular/core").WritableSignal<boolean>;
4
8
  constructor();
5
9
  static ɵfac: i0.ɵɵFactoryDeclaration<FlowRenderingService, never>;
@@ -0,0 +1 @@
1
+ export declare function isCallable(fn: any): boolean;
@@ -0,0 +1,4 @@
1
+ import { CustomDynamicNodeComponent } from '../public-components/custom-dynamic-node/custom-dynamic-node.component';
2
+ import { CustomNodeComponent } from '../public-components/custom-node/custom-node.component';
3
+ export declare function isCustomNodeComponent(type: any): type is CustomNodeComponent;
4
+ export declare function isCustomDynamicNodeComponent(type: any): type is CustomDynamicNodeComponent;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-vflow",
3
- "version": "1.14.0",
3
+ "version": "1.15.0",
4
4
  "license": "MIT",
5
5
  "homepage": "https://www.ngx-vflow.org/",
6
6
  "author": "Artem Mangilev",
package/public-api.d.ts CHANGED
@@ -43,5 +43,6 @@ export { FlowEntitiesService as ɵFlowEntitiesService } from './lib/vflow/servic
43
43
  export { NodeAccessorService as ɵNodeAccessorService } from './lib/vflow/services/node-accessor.service';
44
44
  export { ViewportService as ɵViewportService } from './lib/vflow/services/viewport.service';
45
45
  export { SelectionService as ɵSelectionService } from './lib/vflow/services/selection.service';
46
+ export { NodeRenderingService as ɵNodeRenderingService } from './lib/vflow/services/node-rendering.service';
46
47
  export { RootPointerDirective as ɵRootPointerDirective } from './lib/vflow/directives/root-pointer.directive';
47
48
  export { SpacePointContextDirective as ɵSpacePointContextDirective } from './lib/vflow/directives/space-point-context.directive';