@angflow/angular 0.0.19 → 0.3.4
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/README.md +108 -15
- package/dist/base.css +8 -0
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/lib/agent/agent-bridge.service.d.ts +3 -1
- package/dist/esm/lib/agent/agent-bridge.service.js +130 -23
- package/dist/esm/lib/agent/agent-bridge.service.js.map +1 -1
- package/dist/esm/lib/agent/chat/agent-chat.component.d.ts +0 -1
- package/dist/esm/lib/agent/chat/agent-chat.service.d.ts +0 -1
- package/dist/esm/lib/agent/chat/agent-chat.service.js +11 -2
- package/dist/esm/lib/agent/chat/agent-chat.service.js.map +1 -1
- package/dist/esm/lib/agent/chat/default-system-prompt.d.ts +1 -2
- package/dist/esm/lib/agent/chat/default-system-prompt.js +2 -1
- package/dist/esm/lib/agent/chat/default-system-prompt.js.map +1 -1
- package/dist/esm/lib/agent/chat/index.d.ts +0 -1
- package/dist/esm/lib/agent/chat/provide-agent-chat.d.ts +0 -1
- package/dist/esm/lib/agent/chat/types.d.ts +0 -1
- package/dist/esm/lib/agent/history.d.ts +0 -1
- package/dist/esm/lib/agent/index.d.ts +0 -1
- package/dist/esm/lib/agent/provide-agent-bridge.d.ts +0 -1
- package/dist/esm/lib/agent/tool-schemas.d.ts +0 -1
- package/dist/esm/lib/agent/tool-schemas.js +3 -1
- package/dist/esm/lib/agent/tool-schemas.js.map +1 -1
- package/dist/esm/lib/agent/transports/websocket.d.ts +8 -1
- package/dist/esm/lib/agent/transports/websocket.js +14 -2
- package/dist/esm/lib/agent/transports/websocket.js.map +1 -1
- package/dist/esm/lib/agent/transports/window.d.ts +0 -1
- package/dist/esm/lib/agent/transports/window.js +2 -1
- package/dist/esm/lib/agent/transports/window.js.map +1 -1
- package/dist/esm/lib/agent/types.d.ts +0 -1
- package/dist/esm/lib/components/a11y-descriptions/a11y-descriptions.component.d.ts +0 -1
- package/dist/esm/lib/components/attribution/attribution.component.d.ts +0 -1
- package/dist/esm/lib/components/background/background.component.d.ts +0 -1
- package/dist/esm/lib/components/connection-line/connection-line.component.d.ts +0 -1
- package/dist/esm/lib/components/controls/controls.component.d.ts +0 -1
- package/dist/esm/lib/components/controls/controls.component.js +2 -1
- package/dist/esm/lib/components/controls/controls.component.js.map +1 -1
- package/dist/esm/lib/components/edge-label-renderer/edge-label-renderer.component.d.ts +0 -1
- package/dist/esm/lib/components/edge-toolbar/edge-toolbar.component.d.ts +7 -2
- package/dist/esm/lib/components/edge-toolbar/edge-toolbar.component.js +11 -4
- package/dist/esm/lib/components/edge-toolbar/edge-toolbar.component.js.map +1 -1
- package/dist/esm/lib/components/edges/base-edge.component.d.ts +0 -1
- package/dist/esm/lib/components/edges/bezier-edge.component.d.ts +0 -1
- package/dist/esm/lib/components/edges/bezier-edge.component.js +2 -1
- package/dist/esm/lib/components/edges/bezier-edge.component.js.map +1 -1
- package/dist/esm/lib/components/edges/edge-text.component.d.ts +0 -1
- package/dist/esm/lib/components/edges/simple-bezier-edge.component.d.ts +0 -1
- package/dist/esm/lib/components/edges/simple-bezier-edge.component.js +2 -1
- package/dist/esm/lib/components/edges/simple-bezier-edge.component.js.map +1 -1
- package/dist/esm/lib/components/edges/smooth-step-edge.component.d.ts +0 -1
- package/dist/esm/lib/components/edges/smooth-step-edge.component.js +2 -1
- package/dist/esm/lib/components/edges/smooth-step-edge.component.js.map +1 -1
- package/dist/esm/lib/components/edges/step-edge.component.d.ts +0 -1
- package/dist/esm/lib/components/edges/step-edge.component.js +2 -1
- package/dist/esm/lib/components/edges/step-edge.component.js.map +1 -1
- package/dist/esm/lib/components/edges/straight-edge.component.d.ts +0 -1
- package/dist/esm/lib/components/edges/straight-edge.component.js +2 -1
- package/dist/esm/lib/components/edges/straight-edge.component.js.map +1 -1
- package/dist/esm/lib/components/handle/handle.component.d.ts +1 -1
- package/dist/esm/lib/components/handle/handle.component.js +13 -1
- package/dist/esm/lib/components/handle/handle.component.js.map +1 -1
- package/dist/esm/lib/components/handle-group/handle-group.component.d.ts +0 -1
- package/dist/esm/lib/components/handle-group/handle-row.component.d.ts +0 -1
- package/dist/esm/lib/components/minimap/minimap.component.d.ts +19 -17
- package/dist/esm/lib/components/minimap/minimap.component.js +143 -183
- package/dist/esm/lib/components/minimap/minimap.component.js.map +1 -1
- package/dist/esm/lib/components/ng-flow-provider/ng-flow-provider.component.d.ts +13 -5
- package/dist/esm/lib/components/ng-flow-provider/ng-flow-provider.component.js +13 -4
- package/dist/esm/lib/components/ng-flow-provider/ng-flow-provider.component.js.map +1 -1
- package/dist/esm/lib/components/node-resizer/node-resizer.component.d.ts +2 -1
- package/dist/esm/lib/components/node-resizer/node-resizer.component.js +43 -26
- package/dist/esm/lib/components/node-resizer/node-resizer.component.js.map +1 -1
- package/dist/esm/lib/components/node-toolbar/node-toolbar.component.d.ts +0 -1
- package/dist/esm/lib/components/node-toolbar/node-toolbar.component.js +1 -1
- package/dist/esm/lib/components/node-toolbar/node-toolbar.component.js.map +1 -1
- package/dist/esm/lib/components/nodes/default-node.component.d.ts +6 -15
- package/dist/esm/lib/components/nodes/default-node.component.js +13 -22
- package/dist/esm/lib/components/nodes/default-node.component.js.map +1 -1
- package/dist/esm/lib/components/nodes/group-node.component.d.ts +5 -16
- package/dist/esm/lib/components/nodes/group-node.component.js +8 -16
- package/dist/esm/lib/components/nodes/group-node.component.js.map +1 -1
- package/dist/esm/lib/components/nodes/input-node.component.d.ts +6 -15
- package/dist/esm/lib/components/nodes/input-node.component.js +11 -20
- package/dist/esm/lib/components/nodes/input-node.component.js.map +1 -1
- package/dist/esm/lib/components/nodes/output-node.component.d.ts +6 -15
- package/dist/esm/lib/components/nodes/output-node.component.js +11 -20
- package/dist/esm/lib/components/nodes/output-node.component.js.map +1 -1
- package/dist/esm/lib/components/nodes/template-node.component.d.ts +2 -14
- package/dist/esm/lib/components/nodes/template-node.component.js +16 -26
- package/dist/esm/lib/components/nodes/template-node.component.js.map +1 -1
- package/dist/esm/lib/components/panel/panel.component.d.ts +0 -1
- package/dist/esm/lib/components/selection-box/selection-box.component.d.ts +11 -1
- package/dist/esm/lib/components/selection-box/selection-box.component.js +108 -3
- package/dist/esm/lib/components/selection-box/selection-box.component.js.map +1 -1
- package/dist/esm/lib/components/viewport-portal/viewport-portal.component.d.ts +0 -1
- package/dist/esm/lib/container/edge-renderer/edge-renderer.component.d.ts +27 -3
- package/dist/esm/lib/container/edge-renderer/edge-renderer.component.js +151 -61
- package/dist/esm/lib/container/edge-renderer/edge-renderer.component.js.map +1 -1
- package/dist/esm/lib/container/ng-flow/ng-flow.component.d.ts +4 -8
- package/dist/esm/lib/container/ng-flow/ng-flow.component.js +151 -54
- package/dist/esm/lib/container/ng-flow/ng-flow.component.js.map +1 -1
- package/dist/esm/lib/container/node-renderer/node-renderer.component.d.ts +7 -1
- package/dist/esm/lib/container/node-renderer/node-renderer.component.js +70 -14
- package/dist/esm/lib/container/node-renderer/node-renderer.component.js.map +1 -1
- package/dist/esm/lib/container/pane/pane.component.d.ts +0 -1
- package/dist/esm/lib/container/pane/pane.component.js +23 -3
- package/dist/esm/lib/container/pane/pane.component.js.map +1 -1
- package/dist/esm/lib/container/viewport/viewport.component.d.ts +0 -1
- package/dist/esm/lib/directives/drag.directive.d.ts +1 -2
- package/dist/esm/lib/directives/drag.directive.js +1 -1
- package/dist/esm/lib/directives/drag.directive.js.map +1 -1
- package/dist/esm/lib/directives/drop-zone.directive.d.ts +0 -1
- package/dist/esm/lib/directives/key-handler.directive.d.ts +0 -1
- package/dist/esm/lib/directives/key-handler.directive.js +6 -2
- package/dist/esm/lib/directives/key-handler.directive.js.map +1 -1
- package/dist/esm/lib/directives/node-type.directive.d.ts +0 -1
- package/dist/esm/lib/graph/collapse.d.ts +35 -0
- package/dist/esm/lib/graph/collapse.js +102 -0
- package/dist/esm/lib/graph/collapse.js.map +1 -0
- package/dist/esm/lib/graph/group-bounds.d.ts +42 -0
- package/dist/esm/lib/graph/group-bounds.js +34 -0
- package/dist/esm/lib/graph/group-bounds.js.map +1 -0
- package/dist/esm/lib/layout/dagre-layout.d.ts +0 -1
- package/dist/esm/lib/layout/index.d.ts +1 -2
- package/dist/esm/lib/layout/index.js.map +1 -1
- package/dist/esm/lib/layout/layout-nodes.d.ts +39 -5
- package/dist/esm/lib/layout/layout-nodes.js +94 -7
- package/dist/esm/lib/layout/layout-nodes.js.map +1 -1
- package/dist/esm/lib/public-api.d.ts +4 -2
- package/dist/esm/lib/public-api.js +2 -1
- package/dist/esm/lib/public-api.js.map +1 -1
- package/dist/esm/lib/services/flow-store.service.d.ts +25 -2
- package/dist/esm/lib/services/flow-store.service.js +101 -14
- package/dist/esm/lib/services/flow-store.service.js.map +1 -1
- package/dist/esm/lib/services/ng-flow.service.d.ts +82 -7
- package/dist/esm/lib/services/ng-flow.service.js +210 -25
- package/dist/esm/lib/services/ng-flow.service.js.map +1 -1
- package/dist/esm/lib/services/tokens.d.ts +0 -1
- package/dist/esm/lib/types/edges.d.ts +0 -1
- package/dist/esm/lib/types/general.d.ts +0 -1
- package/dist/esm/lib/types/index.d.ts +0 -1
- package/dist/esm/lib/types/node-template.d.ts +2 -1
- package/dist/esm/lib/types/nodes.d.ts +4 -1
- package/dist/esm/lib/types/store.d.ts +0 -1
- package/dist/esm/lib/utils/changes.d.ts +28 -2
- package/dist/esm/lib/utils/changes.js +57 -1
- package/dist/esm/lib/utils/changes.js.map +1 -1
- package/dist/esm/lib/utils/index.d.ts +2 -2
- package/dist/esm/lib/utils/index.js +2 -1
- package/dist/esm/lib/utils/index.js.map +1 -1
- package/dist/esm/lib/utils/inject-flow-store.d.ts +16 -0
- package/dist/esm/lib/utils/inject-flow-store.js +23 -0
- package/dist/esm/lib/utils/inject-flow-store.js.map +1 -0
- package/dist/esm/lib/utils/inject-ng-flow-node.d.ts +0 -1
- package/dist/esm/lib/utils/position-tween.d.ts +0 -1
- package/dist/esm/lib/utils/template-interpolation.d.ts +0 -1
- package/dist/esm/lib/utils/type-guards.d.ts +0 -1
- package/dist/esm/lib/utils/type-guards.js +2 -0
- package/dist/esm/lib/utils/type-guards.js.map +1 -1
- package/dist/esm/test-setup.d.ts +0 -1
- package/dist/style.css +8 -0
- package/package.json +83 -78
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/lib/agent/agent-bridge.service.d.ts.map +0 -1
- package/dist/esm/lib/agent/chat/agent-chat.component.d.ts.map +0 -1
- package/dist/esm/lib/agent/chat/agent-chat.service.d.ts.map +0 -1
- package/dist/esm/lib/agent/chat/default-system-prompt.d.ts.map +0 -1
- package/dist/esm/lib/agent/chat/index.d.ts.map +0 -1
- package/dist/esm/lib/agent/chat/provide-agent-chat.d.ts.map +0 -1
- package/dist/esm/lib/agent/chat/types.d.ts.map +0 -1
- package/dist/esm/lib/agent/history.d.ts.map +0 -1
- package/dist/esm/lib/agent/index.d.ts.map +0 -1
- package/dist/esm/lib/agent/provide-agent-bridge.d.ts.map +0 -1
- package/dist/esm/lib/agent/tool-schemas.d.ts.map +0 -1
- package/dist/esm/lib/agent/transports/websocket.d.ts.map +0 -1
- package/dist/esm/lib/agent/transports/window.d.ts.map +0 -1
- package/dist/esm/lib/agent/types.d.ts.map +0 -1
- package/dist/esm/lib/components/a11y-descriptions/a11y-descriptions.component.d.ts.map +0 -1
- package/dist/esm/lib/components/attribution/attribution.component.d.ts.map +0 -1
- package/dist/esm/lib/components/background/background.component.d.ts.map +0 -1
- package/dist/esm/lib/components/connection-line/connection-line.component.d.ts.map +0 -1
- package/dist/esm/lib/components/controls/controls.component.d.ts.map +0 -1
- package/dist/esm/lib/components/edge-label-renderer/edge-label-renderer.component.d.ts.map +0 -1
- package/dist/esm/lib/components/edge-toolbar/edge-toolbar.component.d.ts.map +0 -1
- package/dist/esm/lib/components/edges/base-edge.component.d.ts.map +0 -1
- package/dist/esm/lib/components/edges/bezier-edge.component.d.ts.map +0 -1
- package/dist/esm/lib/components/edges/edge-text.component.d.ts.map +0 -1
- package/dist/esm/lib/components/edges/simple-bezier-edge.component.d.ts.map +0 -1
- package/dist/esm/lib/components/edges/smooth-step-edge.component.d.ts.map +0 -1
- package/dist/esm/lib/components/edges/step-edge.component.d.ts.map +0 -1
- package/dist/esm/lib/components/edges/straight-edge.component.d.ts.map +0 -1
- package/dist/esm/lib/components/handle/handle.component.d.ts.map +0 -1
- package/dist/esm/lib/components/handle-group/handle-group.component.d.ts.map +0 -1
- package/dist/esm/lib/components/handle-group/handle-row.component.d.ts.map +0 -1
- package/dist/esm/lib/components/minimap/minimap.component.d.ts.map +0 -1
- package/dist/esm/lib/components/ng-flow-provider/ng-flow-provider.component.d.ts.map +0 -1
- package/dist/esm/lib/components/node-resizer/node-resizer.component.d.ts.map +0 -1
- package/dist/esm/lib/components/node-toolbar/node-toolbar.component.d.ts.map +0 -1
- package/dist/esm/lib/components/nodes/default-node.component.d.ts.map +0 -1
- package/dist/esm/lib/components/nodes/group-node.component.d.ts.map +0 -1
- package/dist/esm/lib/components/nodes/input-node.component.d.ts.map +0 -1
- package/dist/esm/lib/components/nodes/output-node.component.d.ts.map +0 -1
- package/dist/esm/lib/components/nodes/template-node.component.d.ts.map +0 -1
- package/dist/esm/lib/components/panel/panel.component.d.ts.map +0 -1
- package/dist/esm/lib/components/selection-box/selection-box.component.d.ts.map +0 -1
- package/dist/esm/lib/components/viewport-portal/viewport-portal.component.d.ts.map +0 -1
- package/dist/esm/lib/container/edge-renderer/edge-renderer.component.d.ts.map +0 -1
- package/dist/esm/lib/container/ng-flow/ng-flow.component.d.ts.map +0 -1
- package/dist/esm/lib/container/node-renderer/node-renderer.component.d.ts.map +0 -1
- package/dist/esm/lib/container/pane/pane.component.d.ts.map +0 -1
- package/dist/esm/lib/container/viewport/viewport.component.d.ts.map +0 -1
- package/dist/esm/lib/directives/drag.directive.d.ts.map +0 -1
- package/dist/esm/lib/directives/drop-zone.directive.d.ts.map +0 -1
- package/dist/esm/lib/directives/key-handler.directive.d.ts.map +0 -1
- package/dist/esm/lib/directives/node-type.directive.d.ts.map +0 -1
- package/dist/esm/lib/layout/dagre-layout.d.ts.map +0 -1
- package/dist/esm/lib/layout/index.d.ts.map +0 -1
- package/dist/esm/lib/layout/layout-nodes.d.ts.map +0 -1
- package/dist/esm/lib/public-api.d.ts.map +0 -1
- package/dist/esm/lib/services/flow-store.service.d.ts.map +0 -1
- package/dist/esm/lib/services/ng-flow.service.d.ts.map +0 -1
- package/dist/esm/lib/services/tokens.d.ts.map +0 -1
- package/dist/esm/lib/types/edges.d.ts.map +0 -1
- package/dist/esm/lib/types/general.d.ts.map +0 -1
- package/dist/esm/lib/types/index.d.ts.map +0 -1
- package/dist/esm/lib/types/node-template.d.ts.map +0 -1
- package/dist/esm/lib/types/nodes.d.ts.map +0 -1
- package/dist/esm/lib/types/store.d.ts.map +0 -1
- package/dist/esm/lib/utils/changes.d.ts.map +0 -1
- package/dist/esm/lib/utils/index.d.ts.map +0 -1
- package/dist/esm/lib/utils/inject-ng-flow-node.d.ts.map +0 -1
- package/dist/esm/lib/utils/position-tween.d.ts.map +0 -1
- package/dist/esm/lib/utils/template-interpolation.d.ts.map +0 -1
- package/dist/esm/lib/utils/type-guards.d.ts.map +0 -1
- package/dist/esm/test-setup.d.ts.map +0 -1
|
@@ -13,18 +13,7 @@ import * as i0 from "@angular/core";
|
|
|
13
13
|
*/
|
|
14
14
|
export declare class TemplateNodeComponent {
|
|
15
15
|
private readonly store;
|
|
16
|
-
readonly
|
|
17
|
-
readonly data: import("@angular/core").InputSignal<any>;
|
|
18
|
-
readonly type: import("@angular/core").InputSignal<string | undefined>;
|
|
19
|
-
readonly selected: import("@angular/core").InputSignal<boolean>;
|
|
20
|
-
readonly dragging: import("@angular/core").InputSignal<boolean>;
|
|
21
|
-
readonly zIndex: import("@angular/core").InputSignal<number>;
|
|
22
|
-
readonly isConnectable: import("@angular/core").InputSignal<boolean>;
|
|
23
|
-
readonly positionAbsoluteX: import("@angular/core").InputSignal<number>;
|
|
24
|
-
readonly positionAbsoluteY: import("@angular/core").InputSignal<number>;
|
|
25
|
-
readonly sourcePosition: import("@angular/core").InputSignal<Position | undefined>;
|
|
26
|
-
readonly targetPosition: import("@angular/core").InputSignal<Position | undefined>;
|
|
27
|
-
readonly dragHandle: import("@angular/core").InputSignal<string | undefined>;
|
|
16
|
+
readonly node: import("../../types").NgFlowNodeContext<Record<string, unknown>>;
|
|
28
17
|
readonly spec: import("@angular/core").Signal<import("../../types").NodeTemplateSpec | undefined>;
|
|
29
18
|
readonly title: import("@angular/core").Signal<string>;
|
|
30
19
|
readonly iconPath: import("@angular/core").Signal<string | null>;
|
|
@@ -43,6 +32,5 @@ export declare class TemplateNodeComponent {
|
|
|
43
32
|
position: Position;
|
|
44
33
|
}[]>;
|
|
45
34
|
static ɵfac: i0.ɵɵFactoryDeclaration<TemplateNodeComponent, never>;
|
|
46
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TemplateNodeComponent, "ng-flow-template-node", never, {
|
|
35
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TemplateNodeComponent, "ng-flow-template-node", never, {}, {}, never, never, true, never>;
|
|
47
36
|
}
|
|
48
|
-
//# sourceMappingURL=template-node.component.d.ts.map
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, computed, inject
|
|
1
|
+
import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';
|
|
2
2
|
import { Position } from '@angflow/system';
|
|
3
3
|
import { HandleComponent } from '../handle/handle.component';
|
|
4
4
|
import { FlowStore } from '../../services/flow-store.service';
|
|
5
5
|
import { interpolateTemplateString, isTemplateConditionTrue, } from '../../utils/template-interpolation';
|
|
6
|
+
import { injectNgFlowNode } from '../../utils/inject-ng-flow-node';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
const POSITION_MAP = {
|
|
8
9
|
top: Position.Top,
|
|
@@ -39,34 +40,23 @@ const ICONS = {
|
|
|
39
40
|
export class TemplateNodeComponent {
|
|
40
41
|
constructor() {
|
|
41
42
|
this.store = inject(FlowStore);
|
|
42
|
-
this.
|
|
43
|
-
this.
|
|
44
|
-
this.
|
|
45
|
-
this.selected = input(false, ...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
|
|
46
|
-
this.dragging = input(false, ...(ngDevMode ? [{ debugName: "dragging" }] : /* istanbul ignore next */ []));
|
|
47
|
-
this.zIndex = input(0, ...(ngDevMode ? [{ debugName: "zIndex" }] : /* istanbul ignore next */ []));
|
|
48
|
-
this.isConnectable = input(true, ...(ngDevMode ? [{ debugName: "isConnectable" }] : /* istanbul ignore next */ []));
|
|
49
|
-
this.positionAbsoluteX = input(0, ...(ngDevMode ? [{ debugName: "positionAbsoluteX" }] : /* istanbul ignore next */ []));
|
|
50
|
-
this.positionAbsoluteY = input(0, ...(ngDevMode ? [{ debugName: "positionAbsoluteY" }] : /* istanbul ignore next */ []));
|
|
51
|
-
this.sourcePosition = input(...(ngDevMode ? [undefined, { debugName: "sourcePosition" }] : /* istanbul ignore next */ []));
|
|
52
|
-
this.targetPosition = input(...(ngDevMode ? [undefined, { debugName: "targetPosition" }] : /* istanbul ignore next */ []));
|
|
53
|
-
this.dragHandle = input(...(ngDevMode ? [undefined, { debugName: "dragHandle" }] : /* istanbul ignore next */ []));
|
|
54
|
-
this.spec = computed(() => this.store.nodeTemplates().get(this.type() ?? ''), ...(ngDevMode ? [{ debugName: "spec" }] : /* istanbul ignore next */ []));
|
|
55
|
-
this.title = computed(() => interpolateTemplateString(this.spec()?.title ?? '', this.data()), ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
|
|
43
|
+
this.node = injectNgFlowNode();
|
|
44
|
+
this.spec = computed(() => this.store.nodeTemplates().get(this.node.type() ?? ''), ...(ngDevMode ? [{ debugName: "spec" }] : /* istanbul ignore next */ []));
|
|
45
|
+
this.title = computed(() => interpolateTemplateString(this.spec()?.title ?? '', this.node.data()), ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
|
|
56
46
|
this.iconPath = computed(() => {
|
|
57
47
|
const icon = this.spec()?.icon;
|
|
58
48
|
return icon ? ICONS[icon] ?? null : null;
|
|
59
49
|
}, ...(ngDevMode ? [{ debugName: "iconPath" }] : /* istanbul ignore next */ []));
|
|
60
50
|
this.badges = computed(() => (this.spec()?.badges ?? [])
|
|
61
|
-
.filter((b) => isTemplateConditionTrue(b.showIf, this.data()))
|
|
51
|
+
.filter((b) => isTemplateConditionTrue(b.showIf, this.node.data()))
|
|
62
52
|
.map((b) => ({
|
|
63
|
-
text: interpolateTemplateString(b.text, this.data()),
|
|
53
|
+
text: interpolateTemplateString(b.text, this.node.data()),
|
|
64
54
|
color: BADGE_COLORS.has(b.color) ? b.color : 'slate',
|
|
65
55
|
})), ...(ngDevMode ? [{ debugName: "badges" }] : /* istanbul ignore next */ []));
|
|
66
56
|
this.fields = computed(() => (this.spec()?.fields ?? [])
|
|
67
|
-
.filter((f) => isTemplateConditionTrue(f.showIf, this.data()))
|
|
68
|
-
.map((f) => ({ label: f.label, value: interpolateTemplateString(f.value, this.data()) })), ...(ngDevMode ? [{ debugName: "fields" }] : /* istanbul ignore next */ []));
|
|
69
|
-
this.bodyText = computed(() => interpolateTemplateString(this.spec()?.body ?? '', this.data()), ...(ngDevMode ? [{ debugName: "bodyText" }] : /* istanbul ignore next */ []));
|
|
57
|
+
.filter((f) => isTemplateConditionTrue(f.showIf, this.node.data()))
|
|
58
|
+
.map((f) => ({ label: f.label, value: interpolateTemplateString(f.value, this.node.data()) })), ...(ngDevMode ? [{ debugName: "fields" }] : /* istanbul ignore next */ []));
|
|
59
|
+
this.bodyText = computed(() => interpolateTemplateString(this.spec()?.body ?? '', this.node.data()), ...(ngDevMode ? [{ debugName: "bodyText" }] : /* istanbul ignore next */ []));
|
|
70
60
|
this.handles = computed(() => {
|
|
71
61
|
const declared = this.spec()?.handles ?? [
|
|
72
62
|
{ type: 'target', position: 'left' },
|
|
@@ -80,12 +70,12 @@ export class TemplateNodeComponent {
|
|
|
80
70
|
}, ...(ngDevMode ? [{ debugName: "handles" }] : /* istanbul ignore next */ []));
|
|
81
71
|
}
|
|
82
72
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: TemplateNodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
83
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: TemplateNodeComponent, isStandalone: true, selector: "ng-flow-template-node",
|
|
73
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: TemplateNodeComponent, isStandalone: true, selector: "ng-flow-template-node", ngImport: i0, template: `
|
|
84
74
|
@if (spec(); as s) {
|
|
85
75
|
<div
|
|
86
76
|
class="ng-flow__template-node"
|
|
87
77
|
[class.ng-flow__template-node--compact]="(s.variant ?? 'detailed') === 'compact'"
|
|
88
|
-
[class.ng-flow__template-node--selected]="selected()"
|
|
78
|
+
[class.ng-flow__template-node--selected]="node.selected()"
|
|
89
79
|
[style.borderLeftColor]="s.accent ?? null"
|
|
90
80
|
>
|
|
91
81
|
<div class="ng-flow__template-node__header" [style.color]="s.accent ?? null">
|
|
@@ -135,7 +125,7 @@ export class TemplateNodeComponent {
|
|
|
135
125
|
[type]="h.type"
|
|
136
126
|
[id]="h.id ?? null"
|
|
137
127
|
[position]="h.position"
|
|
138
|
-
[isConnectable]="isConnectable()"
|
|
128
|
+
[isConnectable]="node.isConnectable()"
|
|
139
129
|
/>
|
|
140
130
|
}
|
|
141
131
|
</div>
|
|
@@ -149,7 +139,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
|
|
|
149
139
|
<div
|
|
150
140
|
class="ng-flow__template-node"
|
|
151
141
|
[class.ng-flow__template-node--compact]="(s.variant ?? 'detailed') === 'compact'"
|
|
152
|
-
[class.ng-flow__template-node--selected]="selected()"
|
|
142
|
+
[class.ng-flow__template-node--selected]="node.selected()"
|
|
153
143
|
[style.borderLeftColor]="s.accent ?? null"
|
|
154
144
|
>
|
|
155
145
|
<div class="ng-flow__template-node__header" [style.color]="s.accent ?? null">
|
|
@@ -199,11 +189,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
|
|
|
199
189
|
[type]="h.type"
|
|
200
190
|
[id]="h.id ?? null"
|
|
201
191
|
[position]="h.position"
|
|
202
|
-
[isConnectable]="isConnectable()"
|
|
192
|
+
[isConnectable]="node.isConnectable()"
|
|
203
193
|
/>
|
|
204
194
|
}
|
|
205
195
|
</div>
|
|
206
196
|
}
|
|
207
197
|
`, styles: ["\n .ng-flow__template-node {\n min-width: 140px;\n max-width: 280px;\n padding: 8px 10px;\n border: 1px solid #d4d4d8;\n border-left: 3px solid #94a3b8;\n border-radius: 6px;\n background: #ffffff;\n font-size: 12px;\n color: #1e293b;\n }\n .ng-flow__template-node--selected {\n box-shadow: 0 0 0 1px #6366f1;\n }\n .ng-flow__template-node--compact {\n padding: 4px 8px;\n min-width: 100px;\n }\n .ng-flow__template-node__header {\n display: flex;\n align-items: center;\n gap: 6px;\n font-weight: 600;\n }\n .ng-flow__template-node__icon {\n width: 16px;\n height: 16px;\n flex: none;\n }\n .ng-flow__template-node__badges {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-top: 4px;\n }\n .ng-flow__template-node__badge {\n padding: 0 6px;\n border-radius: 999px;\n font-size: 10px;\n line-height: 16px;\n }\n .ng-flow__template-node__badge--slate { background: #f1f5f9; color: #475569; }\n .ng-flow__template-node__badge--indigo { background: #e0e7ff; color: #4338ca; }\n .ng-flow__template-node__badge--emerald { background: #d1fae5; color: #047857; }\n .ng-flow__template-node__badge--amber { background: #fef3c7; color: #b45309; }\n .ng-flow__template-node__badge--rose { background: #ffe4e6; color: #be123c; }\n .ng-flow__template-node__fields {\n margin: 6px 0 0;\n }\n .ng-flow__template-node__field {\n display: flex;\n justify-content: space-between;\n gap: 8px;\n }\n .ng-flow__template-node__field dt {\n color: #64748b;\n font-weight: 400;\n }\n .ng-flow__template-node__field dd {\n margin: 0;\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n }\n .ng-flow__template-node__body {\n margin: 6px 0 0;\n color: #475569;\n }\n "] }]
|
|
208
|
-
}]
|
|
198
|
+
}] });
|
|
209
199
|
//# sourceMappingURL=template-node.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-node.component.js","sourceRoot":"","sources":["../../../../../src/lib/components/nodes/template-node.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"template-node.component.js","sourceRoot":"","sources":["../../../../../src/lib/components/nodes/template-node.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,4 +22,3 @@ export declare class PanelComponent {
|
|
|
22
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<PanelComponent, never>;
|
|
23
23
|
static ɵcmp: i0.ɵɵComponentDeclaration<PanelComponent, "ng-flow-panel", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
24
24
|
}
|
|
25
|
-
//# sourceMappingURL=panel.component.d.ts.map
|
|
@@ -3,6 +3,10 @@ import * as i0 from "@angular/core";
|
|
|
3
3
|
export declare class SelectionBoxComponent {
|
|
4
4
|
readonly store: FlowStore<import("../../types").Node, import("../../types").Edge>;
|
|
5
5
|
readonly contextMenu: import("@angular/core").OutputEmitterRef<MouseEvent>;
|
|
6
|
+
private readonly destroyRef;
|
|
7
|
+
private readonly nodesSelectionBox;
|
|
8
|
+
private dragInstance;
|
|
9
|
+
constructor();
|
|
6
10
|
readonly isVisible: import("@angular/core").Signal<boolean>;
|
|
7
11
|
readonly rect: import("@angular/core").Signal<import("@angflow/system").SelectionRect | null>;
|
|
8
12
|
readonly nodesSelectionBounds: import("@angular/core").Signal<{
|
|
@@ -13,7 +17,13 @@ export declare class SelectionBoxComponent {
|
|
|
13
17
|
}>;
|
|
14
18
|
readonly nodesSelectionTransform: import("@angular/core").Signal<string>;
|
|
15
19
|
onContextMenu(event: MouseEvent): void;
|
|
20
|
+
onKeyDown(event: KeyboardEvent): void;
|
|
21
|
+
/**
|
|
22
|
+
* Ports React's useMoveSelectedNodes: shift every selected & draggable node
|
|
23
|
+
* by a snap-grid-aware velocity, then push the batch through the same
|
|
24
|
+
* updateNodePositions path a drag uses.
|
|
25
|
+
*/
|
|
26
|
+
private moveSelectedNodes;
|
|
16
27
|
static ɵfac: i0.ɵɵFactoryDeclaration<SelectionBoxComponent, never>;
|
|
17
28
|
static ɵcmp: i0.ɵɵComponentDeclaration<SelectionBoxComponent, "ng-flow-selection-box", never, {}, { "contextMenu": "contextMenu"; }, never, never, true, never>;
|
|
18
29
|
}
|
|
19
|
-
//# sourceMappingURL=selection-box.component.d.ts.map
|
|
@@ -1,10 +1,21 @@
|
|
|
1
|
-
import { Component, ChangeDetectionStrategy, inject, computed, output } from '@angular/core';
|
|
1
|
+
import { Component, ChangeDetectionStrategy, inject, computed, output, viewChild, effect, DestroyRef, } from '@angular/core';
|
|
2
|
+
import { XYDrag, calculateNodePosition, snapPosition, } from '@angflow/system';
|
|
2
3
|
import { FlowStore } from '../../services/flow-store.service';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
5
|
+
/** Per-key unit direction vectors for arrow-key node movement (React parity). */
|
|
6
|
+
const arrowKeyDiffs = {
|
|
7
|
+
ArrowUp: { x: 0, y: -1 },
|
|
8
|
+
ArrowDown: { x: 0, y: 1 },
|
|
9
|
+
ArrowLeft: { x: -1, y: 0 },
|
|
10
|
+
ArrowRight: { x: 1, y: 0 },
|
|
11
|
+
};
|
|
4
12
|
export class SelectionBoxComponent {
|
|
5
13
|
constructor() {
|
|
6
14
|
this.store = inject(FlowStore);
|
|
7
15
|
this.contextMenu = output();
|
|
16
|
+
this.destroyRef = inject(DestroyRef);
|
|
17
|
+
this.nodesSelectionBox = viewChild('nodesSelectionBox', ...(ngDevMode ? [{ debugName: "nodesSelectionBox" }] : /* istanbul ignore next */ []));
|
|
18
|
+
this.dragInstance = null;
|
|
8
19
|
this.isVisible = computed(() => this.store.userSelectionActive() && this.store.userSelectionRect() !== null, ...(ngDevMode ? [{ debugName: "isVisible" }] : /* istanbul ignore next */ []));
|
|
9
20
|
this.rect = computed(() => this.store.userSelectionRect(), ...(ngDevMode ? [{ debugName: "rect" }] : /* istanbul ignore next */ []));
|
|
10
21
|
this.nodesSelectionBounds = computed(() => {
|
|
@@ -30,13 +41,101 @@ export class SelectionBoxComponent {
|
|
|
30
41
|
const b = this.nodesSelectionBounds();
|
|
31
42
|
return `translate(${b.x}px, ${b.y}px)`;
|
|
32
43
|
}, ...(ngDevMode ? [{ debugName: "nodesSelectionTransform" }] : /* istanbul ignore next */ []));
|
|
44
|
+
// Bind/unbind XYDrag to the nodes-selection box as it enters/leaves the
|
|
45
|
+
// DOM (@if on nodesSelectionActive). No nodeId is passed: XYDrag's
|
|
46
|
+
// undefined-nodeId path collects all selected nodes and routes through the
|
|
47
|
+
// onSelectionDrag* store callbacks (already wired on <ng-flow>), mirroring
|
|
48
|
+
// React's useDrag({ nodeRef }) with no nodeId.
|
|
49
|
+
effect(() => {
|
|
50
|
+
const box = this.nodesSelectionBox();
|
|
51
|
+
if (!box) {
|
|
52
|
+
// Box left the DOM (selection cleared) — drop the d3-drag binding.
|
|
53
|
+
this.dragInstance?.destroy();
|
|
54
|
+
this.dragInstance = null;
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (!this.dragInstance) {
|
|
58
|
+
this.dragInstance = XYDrag({
|
|
59
|
+
getStoreItems: () => this.store.getStoreItems(),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
this.dragInstance.update({
|
|
63
|
+
domNode: box.nativeElement,
|
|
64
|
+
// nodeId intentionally omitted → selection-drag path.
|
|
65
|
+
noDragClassName: this.store.noDragClassName(),
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
// Safety net: if the component is destroyed while the box is still bound
|
|
69
|
+
// (e.g. <ng-flow> torn down mid-drag), release the d3 listeners.
|
|
70
|
+
this.destroyRef.onDestroy(() => this.dragInstance?.destroy());
|
|
33
71
|
}
|
|
34
72
|
onContextMenu(event) {
|
|
35
73
|
event.preventDefault();
|
|
36
74
|
this.contextMenu.emit(event);
|
|
37
75
|
}
|
|
76
|
+
onKeyDown(event) {
|
|
77
|
+
if (event.key === 'Escape') {
|
|
78
|
+
event.preventDefault();
|
|
79
|
+
this.store.nodesSelectionActive.set(false);
|
|
80
|
+
event.currentTarget?.blur();
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const direction = arrowKeyDiffs[event.key];
|
|
84
|
+
if (!direction)
|
|
85
|
+
return;
|
|
86
|
+
event.preventDefault();
|
|
87
|
+
this.moveSelectedNodes(direction, event.shiftKey ? 4 : 1);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Ports React's useMoveSelectedNodes: shift every selected & draggable node
|
|
91
|
+
* by a snap-grid-aware velocity, then push the batch through the same
|
|
92
|
+
* updateNodePositions path a drag uses.
|
|
93
|
+
*/
|
|
94
|
+
moveSelectedNodes(direction, factor) {
|
|
95
|
+
const store = this.store;
|
|
96
|
+
const snapToGrid = store.snapToGrid();
|
|
97
|
+
const snapGrid = store.snapGrid();
|
|
98
|
+
const nodeExtent = store.nodeExtent();
|
|
99
|
+
const nodeOrigin = store.nodeOrigin();
|
|
100
|
+
const nodesDraggable = store.nodesDraggable();
|
|
101
|
+
const onError = store.onError();
|
|
102
|
+
const nodeLookup = store.nodeLookup;
|
|
103
|
+
// By default a node moves 5px per press; snap grid overrides the velocity.
|
|
104
|
+
const xVelo = snapToGrid ? snapGrid[0] : 5;
|
|
105
|
+
const yVelo = snapToGrid ? snapGrid[1] : 5;
|
|
106
|
+
const xDiff = direction.x * xVelo * factor;
|
|
107
|
+
const yDiff = direction.y * yVelo * factor;
|
|
108
|
+
const nodeUpdates = new Map();
|
|
109
|
+
for (const [, node] of nodeLookup) {
|
|
110
|
+
const userDraggable = node.draggable;
|
|
111
|
+
const isSelectedDraggable = node.selected && (userDraggable || (nodesDraggable && typeof userDraggable === 'undefined'));
|
|
112
|
+
if (!isSelectedDraggable)
|
|
113
|
+
continue;
|
|
114
|
+
let nextPosition = {
|
|
115
|
+
x: node.internals.positionAbsolute.x + xDiff,
|
|
116
|
+
y: node.internals.positionAbsolute.y + yDiff,
|
|
117
|
+
};
|
|
118
|
+
if (snapToGrid) {
|
|
119
|
+
nextPosition = snapPosition(nextPosition, snapGrid);
|
|
120
|
+
}
|
|
121
|
+
const { position, positionAbsolute } = calculateNodePosition({
|
|
122
|
+
nodeId: node.id,
|
|
123
|
+
nextPosition,
|
|
124
|
+
nodeLookup,
|
|
125
|
+
nodeExtent,
|
|
126
|
+
nodeOrigin,
|
|
127
|
+
onError,
|
|
128
|
+
});
|
|
129
|
+
node.position = position;
|
|
130
|
+
node.internals.positionAbsolute = positionAbsolute;
|
|
131
|
+
nodeUpdates.set(node.id, node);
|
|
132
|
+
}
|
|
133
|
+
if (nodeUpdates.size > 0) {
|
|
134
|
+
store.updateNodePositions(nodeUpdates);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
38
137
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: SelectionBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: SelectionBoxComponent, isStandalone: true, selector: "ng-flow-selection-box", outputs: { contextMenu: "contextMenu" }, host: { styleAttribute: "display: contents;" }, ngImport: i0, template: `
|
|
138
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: SelectionBoxComponent, isStandalone: true, selector: "ng-flow-selection-box", outputs: { contextMenu: "contextMenu" }, host: { styleAttribute: "display: contents;" }, viewQueries: [{ propertyName: "nodesSelectionBox", first: true, predicate: ["nodesSelectionBox"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
40
139
|
@if (isVisible()) {
|
|
41
140
|
<div
|
|
42
141
|
class="ng-flow__selection xy-flow__selection"
|
|
@@ -50,11 +149,14 @@ export class SelectionBoxComponent {
|
|
|
50
149
|
}
|
|
51
150
|
@if (store.nodesSelectionActive()) {
|
|
52
151
|
<div
|
|
152
|
+
#nodesSelectionBox
|
|
53
153
|
class="ng-flow__selection ng-flow__nodesselection xy-flow__selection xy-flow__nodesselection"
|
|
54
154
|
style="position: absolute; pointer-events: all; z-index: 10; transform-origin: left top;"
|
|
55
155
|
[style.transform]="nodesSelectionTransform()"
|
|
56
156
|
[style.width.px]="nodesSelectionBounds().width"
|
|
57
157
|
[style.height.px]="nodesSelectionBounds().height"
|
|
158
|
+
tabindex="-1"
|
|
159
|
+
(keydown)="onKeyDown($event)"
|
|
58
160
|
(contextmenu)="onContextMenu($event)"
|
|
59
161
|
></div>
|
|
60
162
|
}
|
|
@@ -83,15 +185,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
|
|
|
83
185
|
}
|
|
84
186
|
@if (store.nodesSelectionActive()) {
|
|
85
187
|
<div
|
|
188
|
+
#nodesSelectionBox
|
|
86
189
|
class="ng-flow__selection ng-flow__nodesselection xy-flow__selection xy-flow__nodesselection"
|
|
87
190
|
style="position: absolute; pointer-events: all; z-index: 10; transform-origin: left top;"
|
|
88
191
|
[style.transform]="nodesSelectionTransform()"
|
|
89
192
|
[style.width.px]="nodesSelectionBounds().width"
|
|
90
193
|
[style.height.px]="nodesSelectionBounds().height"
|
|
194
|
+
tabindex="-1"
|
|
195
|
+
(keydown)="onKeyDown($event)"
|
|
91
196
|
(contextmenu)="onContextMenu($event)"
|
|
92
197
|
></div>
|
|
93
198
|
}
|
|
94
199
|
`,
|
|
95
200
|
}]
|
|
96
|
-
}], propDecorators: { contextMenu: [{ type: i0.Output, args: ["contextMenu"] }] } });
|
|
201
|
+
}], ctorParameters: () => [], propDecorators: { contextMenu: [{ type: i0.Output, args: ["contextMenu"] }], nodesSelectionBox: [{ type: i0.ViewChild, args: ['nodesSelectionBox', { isSignal: true }] }] } });
|
|
97
202
|
//# sourceMappingURL=selection-box.component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selection-box.component.js","sourceRoot":"","sources":["../../../../../src/lib/components/selection-box/selection-box.component.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"selection-box.component.js","sourceRoot":"","sources":["../../../../../src/lib/components/selection-box/selection-box.component.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,4 +10,3 @@ export declare class ViewportPortalComponent {
|
|
|
10
10
|
static ɵfac: i0.ɵɵFactoryDeclaration<ViewportPortalComponent, never>;
|
|
11
11
|
static ɵcmp: i0.ɵɵComponentDeclaration<ViewportPortalComponent, "ng-flow-viewport-portal", never, {}, {}, never, ["*"], true, never>;
|
|
12
12
|
}
|
|
13
|
-
//# sourceMappingURL=viewport-portal.component.d.ts.map
|
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
import { Type } from '@angular/core';
|
|
2
2
|
import { type HandleType, type Connection, type FinalConnectionState } from '@angflow/system';
|
|
3
3
|
import { FlowStore } from '../../services/flow-store.service';
|
|
4
|
-
import type { Edge, EdgeTypes } from '../../types';
|
|
4
|
+
import type { Edge, EdgeTypes, InternalNode } from '../../types';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Pure, identity-free fingerprint of everything that affects an edge's
|
|
8
|
+
* geometry: endpoint absolute positions, node sizes, and the global edge
|
|
9
|
+
* mode (plus the flow id, which feeds marker URLs). Used as the memo key so
|
|
10
|
+
* a dragged node (position change) or a remeasure (size change) invalidates
|
|
11
|
+
* the cached inputs while an unchanged frame stays a cheap string-equal hit.
|
|
12
|
+
*/
|
|
13
|
+
export declare function computeEdgeGeometryKey(edge: Edge, sourceNode: InternalNode | undefined, targetNode: InternalNode | undefined, edgeMode: 'handles' | 'floating', rfId?: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Computes an edge's SVG path string from a built inputs object. Byte-for-byte
|
|
16
|
+
* equivalent to the inline switch the template used to call per binding —
|
|
17
|
+
* extracted so the memo can compute it exactly once per inputs build.
|
|
18
|
+
*/
|
|
19
|
+
export declare function computeEdgePathFromInputs(ei: Record<string, unknown>): string;
|
|
6
20
|
export declare class EdgeRendererComponent {
|
|
7
21
|
readonly store: FlowStore<import("../../types").Node, Edge>;
|
|
8
22
|
readonly reconnectRadius: import("@angular/core").InputSignal<number>;
|
|
@@ -50,7 +64,7 @@ export declare class EdgeRendererComponent {
|
|
|
50
64
|
handleType: HandleType;
|
|
51
65
|
connectionState: FinalConnectionState;
|
|
52
66
|
}>;
|
|
53
|
-
readonly visibleEdges: import("@angular/core").Signal<Edge[]>;
|
|
67
|
+
readonly visibleEdges: import("@angular/core").Signal<import("../../public-api").DisplayEdge<Edge>[]>;
|
|
54
68
|
readonly markers: import("@angular/core").Signal<Record<string, unknown>[]>;
|
|
55
69
|
isCustomEdge(type?: string): boolean;
|
|
56
70
|
getEdgeClasses(edge: Edge): string;
|
|
@@ -68,7 +82,18 @@ export declare class EdgeRendererComponent {
|
|
|
68
82
|
*/
|
|
69
83
|
getEdgeComponentInputs(edge: Edge, all: Record<string, unknown>): Record<string, unknown>;
|
|
70
84
|
private getDeclaredInputs;
|
|
85
|
+
private buildEdgeInputs;
|
|
86
|
+
/**
|
|
87
|
+
* Per-edge memo of the built inputs object and its computed path. The
|
|
88
|
+
* template calls getEdgeInputs(edge) up to 3x per edge (main SVG, custom-edge
|
|
89
|
+
* overlay, label) and getEdgePath() twice; without this each call rebuilt the
|
|
90
|
+
* inputs and recomputed the path. Cached on edge id, validated against a
|
|
91
|
+
* geometry fingerprint plus reference identities for the inputs that don't
|
|
92
|
+
* appear in the key (edge object, handle-data map, handle bounds).
|
|
93
|
+
*/
|
|
94
|
+
private readonly edgeMemo;
|
|
71
95
|
getEdgeInputs(edge: Edge): Record<string, any>;
|
|
96
|
+
constructor();
|
|
72
97
|
onEdgeEvent(event: MouseEvent, edge: Edge, eventType: string): void;
|
|
73
98
|
onEdgeKeyDown(event: KeyboardEvent, edge: Edge): void;
|
|
74
99
|
onEdgeFocus(edge: Edge): void;
|
|
@@ -87,4 +112,3 @@ export declare class EdgeRendererComponent {
|
|
|
87
112
|
static ɵfac: i0.ɵɵFactoryDeclaration<EdgeRendererComponent, never>;
|
|
88
113
|
static ɵcmp: i0.ɵɵComponentDeclaration<EdgeRendererComponent, "ng-flow-edge-renderer", never, { "reconnectRadius": { "alias": "reconnectRadius"; "required": false; "isSignal": true; }; "customEdgeTypes": { "alias": "customEdgeTypes"; "required": false; "isSignal": true; }; }, { "edgeClick": "edgeClick"; "edgeDoubleClick": "edgeDoubleClick"; "edgeContextMenu": "edgeContextMenu"; "edgeMouseEnter": "edgeMouseEnter"; "edgeMouseMove": "edgeMouseMove"; "edgeMouseLeave": "edgeMouseLeave"; "reconnect": "reconnect"; "reconnectStart": "reconnectStart"; "reconnectEnd": "reconnectEnd"; }, never, never, true, never>;
|
|
89
114
|
}
|
|
90
|
-
//# sourceMappingURL=edge-renderer.component.d.ts.map
|