@foblex/flow 19.1.6 → 19.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.
- package/AI.md +6 -4
- package/README.md +13 -4
- package/fesm2022/foblex-flow.mjs +808 -381
- package/fesm2022/foblex-flow.mjs.map +1 -1
- package/index.d.ts +178 -22
- package/package.json +2 -2
- package/schematics/ng-add/index.js +112 -16
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/ng-add/schema.json +1 -1
package/fesm2022/foblex-flow.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, Injectable, ElementRef, DestroyRef, Injector, input, effect, untracked, Directive, signal, numberAttribute, model, booleanAttribute, ChangeDetectionStrategy, Component, viewChild, Input,
|
|
2
|
+
import { InjectionToken, inject, Injectable, ElementRef, DestroyRef, Injector, input, effect, untracked, Directive, signal, computed, numberAttribute, model, booleanAttribute, ChangeDetectionStrategy, Component, viewChild, Input, contentChildren, contentChild, Renderer2, output, NgZone, ViewContainerRef, TemplateRef, runInInjectionContext, EventEmitter, Output, afterNextRender, NgModule } from '@angular/core';
|
|
3
3
|
import { TransformModelExtensions, PointExtensions, RectExtensions, GetIntersections, RoundedRect, Point, LineExtensions, SizeExtensions, setRectToElement, adjustRectToMinSize, setRectToViewBox } from '@foblex/2d';
|
|
4
4
|
import { __decorate } from 'tslib';
|
|
5
5
|
import { FExecutionRegister, FMediator } from '@foblex/mediator';
|
|
@@ -980,11 +980,13 @@ class FitToFlowRequest {
|
|
|
980
980
|
toCenter;
|
|
981
981
|
animated;
|
|
982
982
|
emitCanvasChange;
|
|
983
|
+
maxScale;
|
|
983
984
|
static fToken = Symbol('FitToFlowRequest');
|
|
984
|
-
constructor(toCenter, animated, emitCanvasChange = true) {
|
|
985
|
+
constructor(toCenter, animated, emitCanvasChange = true, maxScale) {
|
|
985
986
|
this.toCenter = toCenter;
|
|
986
987
|
this.animated = animated;
|
|
987
988
|
this.emitCanvasChange = emitCanvasChange;
|
|
989
|
+
this.maxScale = maxScale;
|
|
988
990
|
}
|
|
989
991
|
}
|
|
990
992
|
|
|
@@ -997,16 +999,16 @@ let FitToFlow = class FitToFlow {
|
|
|
997
999
|
return this._store.transform;
|
|
998
1000
|
}
|
|
999
1001
|
_mediator = inject(FMediator);
|
|
1000
|
-
handle({ toCenter, animated, emitCanvasChange }) {
|
|
1002
|
+
handle({ toCenter, animated, emitCanvasChange, maxScale }) {
|
|
1001
1003
|
const fNodesRect = this._mediator.execute(new CalculateNodesBoundingBoxRequest()) ||
|
|
1002
1004
|
RectExtensions.initialize();
|
|
1003
1005
|
if (fNodesRect.width === 0 || fNodesRect.height === 0) {
|
|
1004
1006
|
return;
|
|
1005
1007
|
}
|
|
1006
|
-
this.fitToParent(fNodesRect, RectExtensions.fromElement(this._store.flowHost), this._store.nodes.getAll().map((x) => x._position), toCenter);
|
|
1008
|
+
this.fitToParent(fNodesRect, RectExtensions.fromElement(this._store.flowHost), this._store.nodes.getAll().map((x) => x._position), toCenter, maxScale);
|
|
1007
1009
|
this._mediator.execute(new RedrawCanvasWithAnimationRequest(animated, ECanvasRedrawContext.VIEWPORT_ONLY, emitCanvasChange));
|
|
1008
1010
|
}
|
|
1009
|
-
fitToParent(rect, parentRect, points, toCenter) {
|
|
1011
|
+
fitToParent(rect, parentRect, points, toCenter, maxScale) {
|
|
1010
1012
|
this._transform.scaledPosition = PointExtensions.initialize();
|
|
1011
1013
|
this._transform.position = this._getZeroPositionWithoutScale(points);
|
|
1012
1014
|
const itemsContainerWidth = rect.width / this._transform.scale + toCenter.x;
|
|
@@ -1016,6 +1018,11 @@ let FitToFlow = class FitToFlow {
|
|
|
1016
1018
|
(itemsContainerWidth < parentRect.width && itemsContainerHeight < parentRect.height)) {
|
|
1017
1019
|
this._transform.scale = Math.min(parentRect.width / itemsContainerWidth, parentRect.height / itemsContainerHeight);
|
|
1018
1020
|
}
|
|
1021
|
+
// A small bounding box (a couple of nodes) would otherwise be magnified to
|
|
1022
|
+
// fill the viewport; the optional cap keeps the content readable (issue #147).
|
|
1023
|
+
if (maxScale != null && this._transform.scale > maxScale) {
|
|
1024
|
+
this._transform.scale = maxScale;
|
|
1025
|
+
}
|
|
1019
1026
|
const newX = (parentRect.width - itemsContainerWidth * this._transform.scale) / 2 -
|
|
1020
1027
|
this._transform.position.x * this._transform.scale;
|
|
1021
1028
|
const newY = (parentRect.height - itemsContainerHeight * this._transform.scale) / 2 -
|
|
@@ -1971,6 +1978,21 @@ const F_CONNECTION_WAYPOINTS = new InjectionToken('F_CONNECTION_WAYPOINTS');
|
|
|
1971
1978
|
class FConnectionWaypointsBase {
|
|
1972
1979
|
hostElement = inject((ElementRef)).nativeElement;
|
|
1973
1980
|
candidates = signal([], ...(ngDevMode ? [{ debugName: "candidates" }] : []));
|
|
1981
|
+
/**
|
|
1982
|
+
* Handle display positions supplied by the line builder (for example the
|
|
1983
|
+
* bend apex of a rounded segment corner). The waypoint model itself is
|
|
1984
|
+
* untouched — dragging and events always operate on the real waypoints.
|
|
1985
|
+
*/
|
|
1986
|
+
handles = signal([], ...(ngDevMode ? [{ debugName: "handles" }] : []));
|
|
1987
|
+
/**
|
|
1988
|
+
* Where the waypoint handles are drawn and hit-tested: the builder-supplied
|
|
1989
|
+
* positions when they cover every waypoint, otherwise the waypoints
|
|
1990
|
+
* themselves.
|
|
1991
|
+
*/
|
|
1992
|
+
displayedWaypoints = computed(() => {
|
|
1993
|
+
const handles = this.handles();
|
|
1994
|
+
return handles.length === this.waypoints().length ? handles : this.waypoints();
|
|
1995
|
+
}, ...(ngDevMode ? [{ debugName: "displayedWaypoints" }] : []));
|
|
1974
1996
|
_activeIndex = 0;
|
|
1975
1997
|
_waypoints = [];
|
|
1976
1998
|
insert(candidate) {
|
|
@@ -2005,7 +2027,11 @@ function findWaypointCandidate(connection, position) {
|
|
|
2005
2027
|
function findExistingWaypoint(connection, position) {
|
|
2006
2028
|
const component = connection.fWaypoints();
|
|
2007
2029
|
const radius = component?.radius() || 8;
|
|
2008
|
-
|
|
2030
|
+
// Handles can be drawn slightly off the raw waypoint (on the bend apex of a
|
|
2031
|
+
// rounded corner), so hit-test where they are rendered but hand back the
|
|
2032
|
+
// real waypoint — dragging always operates on the model value.
|
|
2033
|
+
const index = (component?.displayedWaypoints() ?? []).findIndex((x) => isPointerInsidePoint(position, x, radius));
|
|
2034
|
+
return index >= 0 ? component?.waypoints()[index] : undefined;
|
|
2009
2035
|
}
|
|
2010
2036
|
|
|
2011
2037
|
function pickWaypoint(connections, position) {
|
|
@@ -2060,13 +2086,13 @@ class FConnectionWaypoints extends FConnectionWaypointsBase {
|
|
|
2060
2086
|
this._notifyDataChanged();
|
|
2061
2087
|
}
|
|
2062
2088
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FConnectionWaypoints, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2063
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: FConnectionWaypoints, isStandalone: true, selector: "f-connection-waypoints", inputs: { radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, waypoints: { classPropertyName: "waypoints", publicName: "waypoints", isSignal: true, isRequired: false, transformFunction: null }, visibility: { classPropertyName: "visibility", publicName: "visibility", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { waypoints: "waypointsChange" }, host: { classAttribute: "f-component f-connection-waypoints" }, providers: [{ provide: F_CONNECTION_WAYPOINTS, useExisting: FConnectionWaypoints }], usesInheritance: true, ngImport: i0, template: "@if (visibility()) {\n
|
|
2089
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: FConnectionWaypoints, isStandalone: true, selector: "f-connection-waypoints", inputs: { radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, waypoints: { classPropertyName: "waypoints", publicName: "waypoints", isSignal: true, isRequired: false, transformFunction: null }, visibility: { classPropertyName: "visibility", publicName: "visibility", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { waypoints: "waypointsChange" }, host: { classAttribute: "f-component f-connection-waypoints" }, providers: [{ provide: F_CONNECTION_WAYPOINTS, useExisting: FConnectionWaypoints }], usesInheritance: true, ngImport: i0, template: "@if (visibility()) {\n<svg xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n @for (candidate of candidates(); track $index) {\n <circle\n [attr.r]=\"radius()\"\n class=\"f-candidate\"\n [attr.cx]=\"candidate.x\"\n [attr.cy]=\"candidate.y\"\n ></circle>\n } @for (point of displayedWaypoints(); track $index) {\n <circle\n [attr.r]=\"radius()\"\n (contextmenu)=\"remove($index, $event)\"\n class=\"f-waypoint\"\n [attr.cx]=\"point.x\"\n [attr.cy]=\"point.y\"\n ></circle>\n }\n </g>\n</svg>\n}\n", styles: [":host{pointer-events:none;position:absolute}svg{display:block;vertical-align:middle;position:absolute;overflow:visible}circle{pointer-events:visible}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2064
2090
|
}
|
|
2065
2091
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FConnectionWaypoints, decorators: [{
|
|
2066
2092
|
type: Component,
|
|
2067
2093
|
args: [{ selector: 'f-connection-waypoints', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
2068
2094
|
class: 'f-component f-connection-waypoints',
|
|
2069
|
-
}, providers: [{ provide: F_CONNECTION_WAYPOINTS, useExisting: FConnectionWaypoints }], template: "@if (visibility()) {\n
|
|
2095
|
+
}, providers: [{ provide: F_CONNECTION_WAYPOINTS, useExisting: FConnectionWaypoints }], template: "@if (visibility()) {\n<svg xmlns=\"http://www.w3.org/2000/svg\">\n <g>\n @for (candidate of candidates(); track $index) {\n <circle\n [attr.r]=\"radius()\"\n class=\"f-candidate\"\n [attr.cx]=\"candidate.x\"\n [attr.cy]=\"candidate.y\"\n ></circle>\n } @for (point of displayedWaypoints(); track $index) {\n <circle\n [attr.r]=\"radius()\"\n (contextmenu)=\"remove($index, $event)\"\n class=\"f-waypoint\"\n [attr.cx]=\"point.x\"\n [attr.cy]=\"point.y\"\n ></circle>\n }\n </g>\n</svg>\n}\n", styles: [":host{pointer-events:none;position:absolute}svg{display:block;vertical-align:middle;position:absolute;overflow:visible}circle{pointer-events:visible}\n"] }]
|
|
2070
2096
|
}], propDecorators: { radius: [{ type: i0.Input, args: [{ isSignal: true, alias: "radius", required: false }] }], waypoints: [{ type: i0.Input, args: [{ isSignal: true, alias: "waypoints", required: false }] }, { type: i0.Output, args: ["waypointsChange"] }], visibility: [{ type: i0.Input, args: [{ isSignal: true, alias: "visibility", required: false }] }] } });
|
|
2071
2097
|
|
|
2072
2098
|
var EFMarkerType;
|
|
@@ -2642,6 +2668,29 @@ function dist(a, b) {
|
|
|
2642
2668
|
return Math.hypot(b.x - a.x, b.y - a.y);
|
|
2643
2669
|
}
|
|
2644
2670
|
|
|
2671
|
+
/**
|
|
2672
|
+
* Control point for a cubic segment end that lies on an intermediate waypoint.
|
|
2673
|
+
* The tangent runs from the previous toward the next neighbor (Catmull-Rom
|
|
2674
|
+
* style), so the two segments meeting at the waypoint share one tangent
|
|
2675
|
+
* direction and the curve passes through it smoothly. Connector sides shape
|
|
2676
|
+
* only the real endpoints of the connection, never the waypoints.
|
|
2677
|
+
*
|
|
2678
|
+
* `distance` is positive for an outgoing control point and negative for an
|
|
2679
|
+
* incoming one.
|
|
2680
|
+
*/
|
|
2681
|
+
function calculateSmoothControlPoint(anchor, previous, next, distance) {
|
|
2682
|
+
const dx = next.x - previous.x;
|
|
2683
|
+
const dy = next.y - previous.y;
|
|
2684
|
+
const length = Math.hypot(dx, dy);
|
|
2685
|
+
if (length === 0) {
|
|
2686
|
+
return { x: anchor.x, y: anchor.y };
|
|
2687
|
+
}
|
|
2688
|
+
return {
|
|
2689
|
+
x: anchor.x + (dx / length) * distance,
|
|
2690
|
+
y: anchor.y + (dy / length) * distance,
|
|
2691
|
+
};
|
|
2692
|
+
}
|
|
2693
|
+
|
|
2645
2694
|
function mergePointChains(chains) {
|
|
2646
2695
|
const out = [];
|
|
2647
2696
|
for (const chain of chains) {
|
|
@@ -2763,13 +2812,19 @@ class CalculateAdaptiveCurveData {
|
|
|
2763
2812
|
const clampedOffset = Math.max(0, offset ?? 0);
|
|
2764
2813
|
const anchors = buildConnectionAnchors(source, target, waypoints);
|
|
2765
2814
|
const segments = [];
|
|
2815
|
+
// Connector sides shape only the first and the last tangent; at
|
|
2816
|
+
// intermediate waypoints both adjacent segments share one Catmull-Rom
|
|
2817
|
+
// style tangent, so the curve passes through waypoints without kinks.
|
|
2766
2818
|
for (let i = 0; i < anchors.length - 1; i++) {
|
|
2767
2819
|
const a = anchors[i];
|
|
2768
2820
|
const b = anchors[i + 1];
|
|
2769
|
-
const
|
|
2770
|
-
const
|
|
2771
|
-
|
|
2772
|
-
|
|
2821
|
+
const handle = Math.hypot(b.x - a.x, b.y - a.y) / 3;
|
|
2822
|
+
const c1 = i === 0
|
|
2823
|
+
? CalculateAdaptiveCurveData._softControl(sourceSide, a, b, CalculateAdaptiveCurveData._handleLength(a, b, sourceSide, clampedOffset))
|
|
2824
|
+
: calculateSmoothControlPoint(a, anchors[i - 1], b, handle);
|
|
2825
|
+
const c2 = i === anchors.length - 2
|
|
2826
|
+
? CalculateAdaptiveCurveData._softControl(targetSide, b, a, CalculateAdaptiveCurveData._handleLength(b, a, targetSide, clampedOffset))
|
|
2827
|
+
: calculateSmoothControlPoint(b, a, anchors[i + 2], -handle);
|
|
2773
2828
|
segments.push({ p0: a, c1, c2, p3: b, chainIndex: i });
|
|
2774
2829
|
}
|
|
2775
2830
|
const points = sampleMultiCubicUniform(segments, 12);
|
|
@@ -2787,11 +2842,19 @@ class CalculateBezierCurveData {
|
|
|
2787
2842
|
handle({ source, sourceSide, target, targetSide, offset, waypoints, }) {
|
|
2788
2843
|
const anchors = buildConnectionAnchors(source, target, waypoints);
|
|
2789
2844
|
const segments = [];
|
|
2845
|
+
// Connector sides shape only the first and the last tangent; at
|
|
2846
|
+
// intermediate waypoints both adjacent segments share one Catmull-Rom
|
|
2847
|
+
// style tangent, so the curve passes through waypoints without kinks.
|
|
2790
2848
|
for (let i = 0; i < anchors.length - 1; i++) {
|
|
2791
2849
|
const a = anchors[i];
|
|
2792
2850
|
const b = anchors[i + 1];
|
|
2793
|
-
const
|
|
2794
|
-
const
|
|
2851
|
+
const handle = Math.hypot(b.x - a.x, b.y - a.y) / 3;
|
|
2852
|
+
const c1 = i === 0
|
|
2853
|
+
? getAnglePoint(sourceSide, a, b, offset ?? 0)
|
|
2854
|
+
: calculateSmoothControlPoint(a, anchors[i - 1], b, handle);
|
|
2855
|
+
const c2 = i === anchors.length - 2
|
|
2856
|
+
? getAnglePoint(targetSide, b, a, offset ?? 0)
|
|
2857
|
+
: calculateSmoothControlPoint(b, a, anchors[i + 2], -handle);
|
|
2795
2858
|
segments.push({ p0: a, c1, c2, p3: b, chainIndex: i });
|
|
2796
2859
|
}
|
|
2797
2860
|
const points = sampleMultiCubicUniform(segments, 12);
|
|
@@ -2894,6 +2957,38 @@ function createSegmentLinePath(points, borderRadius) {
|
|
|
2894
2957
|
parts.push(`L ${last.x + END_EPS} ${last.y + END_EPS}`);
|
|
2895
2958
|
return parts.join(' ');
|
|
2896
2959
|
}
|
|
2960
|
+
/**
|
|
2961
|
+
* The point of the rendered path closest to corner `b` — the apex of the
|
|
2962
|
+
* rounded bend `getBend` produces for it, or `b` itself when the corner is
|
|
2963
|
+
* rendered sharp. Uses the same bend-size clamping as `getBend`, so the
|
|
2964
|
+
* result always lies on the path.
|
|
2965
|
+
*/
|
|
2966
|
+
function calculateCornerApex(a, b, c, size) {
|
|
2967
|
+
if (size <= 0) {
|
|
2968
|
+
return { x: b.x, y: b.y };
|
|
2969
|
+
}
|
|
2970
|
+
const collinearX = Math.abs(a.x - b.x) <= EPS$1 && Math.abs(b.x - c.x) <= EPS$1;
|
|
2971
|
+
const collinearY = Math.abs(a.y - b.y) <= EPS$1 && Math.abs(b.y - c.y) <= EPS$1;
|
|
2972
|
+
if (collinearX || collinearY) {
|
|
2973
|
+
return { x: b.x, y: b.y };
|
|
2974
|
+
}
|
|
2975
|
+
const ab = Math.hypot(b.x - a.x, b.y - a.y);
|
|
2976
|
+
const bc = Math.hypot(c.x - b.x, c.y - b.y);
|
|
2977
|
+
const bendSize = Math.min(ab * 0.5, bc * 0.5, size);
|
|
2978
|
+
if (bendSize < MIN_VISIBLE || ab === 0 || bc === 0) {
|
|
2979
|
+
return { x: b.x, y: b.y };
|
|
2980
|
+
}
|
|
2981
|
+
// The bend is a quadratic from (b - bendSize*din) to (b + bendSize*dout)
|
|
2982
|
+
// with control b; its apex at t = 0.5 is b + 0.25 * bendSize * (dout - din).
|
|
2983
|
+
const dinX = (b.x - a.x) / ab;
|
|
2984
|
+
const dinY = (b.y - a.y) / ab;
|
|
2985
|
+
const doutX = (c.x - b.x) / bc;
|
|
2986
|
+
const doutY = (c.y - b.y) / bc;
|
|
2987
|
+
return {
|
|
2988
|
+
x: b.x + 0.25 * bendSize * (doutX - dinX),
|
|
2989
|
+
y: b.y + 0.25 * bendSize * (doutY - dinY),
|
|
2990
|
+
};
|
|
2991
|
+
}
|
|
2897
2992
|
function getBend(a, b, c, size) {
|
|
2898
2993
|
const x = b.x;
|
|
2899
2994
|
const y = b.y;
|
|
@@ -2933,17 +3028,24 @@ const CONNECTOR_SIDE_POINT = {
|
|
|
2933
3028
|
[EFConnectableSide.BOTTOM]: PointExtensions.initialize(0, 1),
|
|
2934
3029
|
[EFConnectableSide.AUTO]: PointExtensions.initialize(0, 0),
|
|
2935
3030
|
};
|
|
3031
|
+
const HARD_VIOLATION_SCORE = 1000;
|
|
3032
|
+
const ARRIVAL_AXIS_SCORE = 8;
|
|
3033
|
+
const BEND_SCORE = 1;
|
|
3034
|
+
const LENGTH_SCORE = 1e-6;
|
|
3035
|
+
const NODE_ZONE_SCORE = 1;
|
|
3036
|
+
const NODE_ZONE_SCORE_LIMIT = 600;
|
|
2936
3037
|
class CalculateSegmentLineData {
|
|
2937
3038
|
handle({ source, sourceSide, target, targetSide, waypoints, offset, radius, }) {
|
|
2938
3039
|
const anchors = buildConnectionAnchors(source, target, waypoints);
|
|
2939
|
-
const chains =
|
|
3040
|
+
const chains = anchors.length === 2
|
|
3041
|
+
? [this._getPathPoints(source, sourceSide, target, targetSide, offset ?? 0)]
|
|
3042
|
+
: this._buildWaypointChains(anchors, sourceSide, targetSide, offset ?? 0);
|
|
2940
3043
|
const candidates = [];
|
|
2941
|
-
for (
|
|
2942
|
-
const
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
|
|
2946
|
-
candidates.push(...calculatePolylineCandidates(points));
|
|
3044
|
+
for (const chain of chains) {
|
|
3045
|
+
const candidate = this._calculateChainCandidate(chain);
|
|
3046
|
+
if (candidate) {
|
|
3047
|
+
candidates.push(candidate);
|
|
3048
|
+
}
|
|
2947
3049
|
}
|
|
2948
3050
|
const polyline = normalizePolyline(mergePointChains(chains));
|
|
2949
3051
|
const penultimatePoint = polyline.length > 1 ? polyline[polyline.length - 2] : source;
|
|
@@ -2954,8 +3056,205 @@ class CalculateSegmentLineData {
|
|
|
2954
3056
|
secondPoint,
|
|
2955
3057
|
points: polyline,
|
|
2956
3058
|
candidates,
|
|
3059
|
+
waypointHandles: this._calculateWaypointHandles(waypoints ?? [], polyline, radius ?? 0),
|
|
2957
3060
|
};
|
|
2958
3061
|
}
|
|
3062
|
+
/**
|
|
3063
|
+
* Display positions for the waypoint handles. A waypoint that is a rounded
|
|
3064
|
+
* corner of the polyline maps to the apex of its bend, so the handle sits on
|
|
3065
|
+
* the rendered path; a waypoint lying mid-segment is already on the line.
|
|
3066
|
+
*/
|
|
3067
|
+
_calculateWaypointHandles(waypoints, polyline, radius) {
|
|
3068
|
+
return waypoints.map((waypoint) => {
|
|
3069
|
+
const index = polyline.findIndex((point) => point.x === waypoint.x && point.y === waypoint.y);
|
|
3070
|
+
if (index <= 0 || index >= polyline.length - 1) {
|
|
3071
|
+
return { x: waypoint.x, y: waypoint.y };
|
|
3072
|
+
}
|
|
3073
|
+
return calculateCornerApex(polyline[index - 1], waypoint, polyline[index + 1], radius);
|
|
3074
|
+
});
|
|
3075
|
+
}
|
|
3076
|
+
/**
|
|
3077
|
+
* Routes the connection through intermediate waypoints. Connector sides and
|
|
3078
|
+
* the connector gap apply only at the real endpoints; waypoints are
|
|
3079
|
+
* pass-through anchors, so no connector-like stubs appear around them. Each
|
|
3080
|
+
* chain is an explicit orthogonal route that never doubles back on the
|
|
3081
|
+
* direction it arrived with — a same-line reversal would be collapsed by
|
|
3082
|
+
* polyline normalization and would detach the path from the waypoint.
|
|
3083
|
+
*/
|
|
3084
|
+
_buildWaypointChains(anchors, sourceSide, targetSide, offset) {
|
|
3085
|
+
const sourceDirection = CONNECTOR_SIDE_POINT[sourceSide];
|
|
3086
|
+
const targetDirection = CONNECTOR_SIDE_POINT[targetSide];
|
|
3087
|
+
const nodeZones = [
|
|
3088
|
+
{ anchor: anchors[0], direction: { x: -sourceDirection.x, y: -sourceDirection.y } },
|
|
3089
|
+
{
|
|
3090
|
+
anchor: anchors[anchors.length - 1],
|
|
3091
|
+
direction: { x: -targetDirection.x, y: -targetDirection.y },
|
|
3092
|
+
},
|
|
3093
|
+
].filter((zone) => zone.direction.x !== 0 || zone.direction.y !== 0);
|
|
3094
|
+
const chains = [];
|
|
3095
|
+
let leaveDirection = null;
|
|
3096
|
+
for (let i = 0; i < anchors.length - 1; i++) {
|
|
3097
|
+
const a = anchors[i];
|
|
3098
|
+
const b = anchors[i + 1];
|
|
3099
|
+
const isFirstChain = i === 0;
|
|
3100
|
+
const isLastChain = i === anchors.length - 2;
|
|
3101
|
+
let chain;
|
|
3102
|
+
if (isFirstChain) {
|
|
3103
|
+
const sourceGap = {
|
|
3104
|
+
x: a.x + sourceDirection.x * offset,
|
|
3105
|
+
y: a.y + sourceDirection.y * offset,
|
|
3106
|
+
};
|
|
3107
|
+
const route = this._routeOrthogonal(sourceGap, sourceDirection, b, null, nodeZones);
|
|
3108
|
+
chain = [a, ...route];
|
|
3109
|
+
}
|
|
3110
|
+
else if (isLastChain) {
|
|
3111
|
+
const targetGap = {
|
|
3112
|
+
x: b.x + targetDirection.x * offset,
|
|
3113
|
+
y: b.y + targetDirection.y * offset,
|
|
3114
|
+
};
|
|
3115
|
+
const stubDirection = { x: -targetDirection.x, y: -targetDirection.y };
|
|
3116
|
+
const route = this._routeOrthogonal(a, leaveDirection, targetGap, stubDirection, nodeZones);
|
|
3117
|
+
chain = [...route, b];
|
|
3118
|
+
}
|
|
3119
|
+
else {
|
|
3120
|
+
chain = this._routeOrthogonal(a, leaveDirection, b, null, nodeZones);
|
|
3121
|
+
}
|
|
3122
|
+
chains.push(chain);
|
|
3123
|
+
leaveDirection = this._calculateArrivalDirection(isLastChain ? chain.slice(0, -1) : chain);
|
|
3124
|
+
}
|
|
3125
|
+
return chains;
|
|
3126
|
+
}
|
|
3127
|
+
/**
|
|
3128
|
+
* Connects two points with an axis-aligned route. Candidates are the
|
|
3129
|
+
* straight segment, both L-shapes, and both Z-shapes; the route that keeps
|
|
3130
|
+
* the constraints wins. `leaveDirection` is the motion the path arrived
|
|
3131
|
+
* with (its reversal as a first move is forbidden); `stubDirection` is the
|
|
3132
|
+
* upcoming connector stub motion (arriving against it is forbidden).
|
|
3133
|
+
* A non-dominant-axis arrival is only softly penalized, so waypoints are
|
|
3134
|
+
* entered along the axis they are farther away on.
|
|
3135
|
+
*/
|
|
3136
|
+
_routeOrthogonal(from, leaveDirection, to, stubDirection, nodeZones) {
|
|
3137
|
+
if (from.x === to.x && from.y === to.y) {
|
|
3138
|
+
return [from];
|
|
3139
|
+
}
|
|
3140
|
+
const corners = [];
|
|
3141
|
+
if (from.x === to.x || from.y === to.y) {
|
|
3142
|
+
corners.push([]);
|
|
3143
|
+
}
|
|
3144
|
+
corners.push([{ x: to.x, y: from.y }]);
|
|
3145
|
+
corners.push([{ x: from.x, y: to.y }]);
|
|
3146
|
+
const centerBetweenPoints = calculateCenterBetweenPoints(from, to);
|
|
3147
|
+
corners.push([
|
|
3148
|
+
{ x: centerBetweenPoints.x, y: from.y },
|
|
3149
|
+
{ x: centerBetweenPoints.x, y: to.y },
|
|
3150
|
+
]);
|
|
3151
|
+
corners.push([
|
|
3152
|
+
{ x: from.x, y: centerBetweenPoints.y },
|
|
3153
|
+
{ x: to.x, y: centerBetweenPoints.y },
|
|
3154
|
+
]);
|
|
3155
|
+
const dominantAxis = Math.abs(to.x - from.x) >= Math.abs(to.y - from.y) ? 'x' : 'y';
|
|
3156
|
+
let bestRoute = null;
|
|
3157
|
+
let bestScore = Number.POSITIVE_INFINITY;
|
|
3158
|
+
for (const cornerPoints of corners) {
|
|
3159
|
+
const route = this._compactRoute([from, ...cornerPoints, to]);
|
|
3160
|
+
const score = this._scoreRoute(route, leaveDirection, stubDirection, dominantAxis, nodeZones);
|
|
3161
|
+
if (score < bestScore) {
|
|
3162
|
+
bestScore = score;
|
|
3163
|
+
bestRoute = route;
|
|
3164
|
+
}
|
|
3165
|
+
}
|
|
3166
|
+
return bestRoute ?? [from, to];
|
|
3167
|
+
}
|
|
3168
|
+
_compactRoute(points) {
|
|
3169
|
+
const route = [points[0]];
|
|
3170
|
+
for (let i = 1; i < points.length; i++) {
|
|
3171
|
+
const last = route[route.length - 1];
|
|
3172
|
+
if (points[i].x !== last.x || points[i].y !== last.y) {
|
|
3173
|
+
route.push(points[i]);
|
|
3174
|
+
}
|
|
3175
|
+
}
|
|
3176
|
+
return route;
|
|
3177
|
+
}
|
|
3178
|
+
_scoreRoute(route, leaveDirection, stubDirection, dominantAxis, nodeZones) {
|
|
3179
|
+
let score = 0;
|
|
3180
|
+
let length = 0;
|
|
3181
|
+
let zoneLength = 0;
|
|
3182
|
+
for (let i = 0; i < route.length - 1; i++) {
|
|
3183
|
+
length += Math.abs(route[i + 1].x - route[i].x) + Math.abs(route[i + 1].y - route[i].y);
|
|
3184
|
+
for (const zone of nodeZones) {
|
|
3185
|
+
zoneLength += this._calculateSegmentLengthInZone(route[i], route[i + 1], zone);
|
|
3186
|
+
}
|
|
3187
|
+
}
|
|
3188
|
+
score += Math.min(NODE_ZONE_SCORE_LIMIT, zoneLength * NODE_ZONE_SCORE);
|
|
3189
|
+
const first = this._segmentDirection(route[0], route[1]);
|
|
3190
|
+
if (leaveDirection &&
|
|
3191
|
+
(leaveDirection.x !== 0 || leaveDirection.y !== 0) &&
|
|
3192
|
+
first.x === -leaveDirection.x &&
|
|
3193
|
+
first.y === -leaveDirection.y) {
|
|
3194
|
+
score += HARD_VIOLATION_SCORE;
|
|
3195
|
+
}
|
|
3196
|
+
const arrival = this._segmentDirection(route[route.length - 2], route[route.length - 1]);
|
|
3197
|
+
if (stubDirection && arrival.x === -stubDirection.x && arrival.y === -stubDirection.y) {
|
|
3198
|
+
score += HARD_VIOLATION_SCORE;
|
|
3199
|
+
}
|
|
3200
|
+
if (!stubDirection && arrival[dominantAxis] === 0) {
|
|
3201
|
+
score += ARRIVAL_AXIS_SCORE;
|
|
3202
|
+
}
|
|
3203
|
+
return score + (route.length - 2) * BEND_SCORE + length * LENGTH_SCORE;
|
|
3204
|
+
}
|
|
3205
|
+
_segmentDirection(a, b) {
|
|
3206
|
+
return { x: Math.sign(b.x - a.x), y: Math.sign(b.y - a.y) };
|
|
3207
|
+
}
|
|
3208
|
+
/**
|
|
3209
|
+
* Length of the part of an axis-aligned segment lying inside the half-plane
|
|
3210
|
+
* behind a connector (where the endpoint's node body is).
|
|
3211
|
+
*/
|
|
3212
|
+
_calculateSegmentLengthInZone(a, b, zone) {
|
|
3213
|
+
const zoneAxis = zone.direction.x !== 0 ? 'x' : 'y';
|
|
3214
|
+
const zoneSign = zone.direction[zoneAxis];
|
|
3215
|
+
const boundary = zone.anchor[zoneAxis];
|
|
3216
|
+
const start = (a[zoneAxis] - boundary) * zoneSign;
|
|
3217
|
+
const end = (b[zoneAxis] - boundary) * zoneSign;
|
|
3218
|
+
if (start <= 0 && end <= 0) {
|
|
3219
|
+
return 0;
|
|
3220
|
+
}
|
|
3221
|
+
const segmentLength = Math.abs(b.x - a.x) + Math.abs(b.y - a.y);
|
|
3222
|
+
if (a[zoneAxis] === b[zoneAxis]) {
|
|
3223
|
+
return segmentLength;
|
|
3224
|
+
}
|
|
3225
|
+
const insideLength = Math.max(start, end) - Math.max(0, Math.min(start, end));
|
|
3226
|
+
return Math.min(segmentLength, Math.max(0, insideLength));
|
|
3227
|
+
}
|
|
3228
|
+
/**
|
|
3229
|
+
* Waypoint-creation candidate for one chain: the midpoint of its longest
|
|
3230
|
+
* straight segment. Corner rounding consumes at most half of each adjacent
|
|
3231
|
+
* segment, so this point always lies on the rendered path — a length-based
|
|
3232
|
+
* chain midpoint can land on a rounded corner and float off the line.
|
|
3233
|
+
*/
|
|
3234
|
+
_calculateChainCandidate(chain) {
|
|
3235
|
+
let bestLength = 0;
|
|
3236
|
+
let candidate = null;
|
|
3237
|
+
for (let i = 0; i < chain.length - 1; i++) {
|
|
3238
|
+
const length = Math.abs(chain[i + 1].x - chain[i].x) + Math.abs(chain[i + 1].y - chain[i].y);
|
|
3239
|
+
if (length > bestLength) {
|
|
3240
|
+
bestLength = length;
|
|
3241
|
+
candidate = {
|
|
3242
|
+
x: (chain[i].x + chain[i + 1].x) / 2,
|
|
3243
|
+
y: (chain[i].y + chain[i + 1].y) / 2,
|
|
3244
|
+
};
|
|
3245
|
+
}
|
|
3246
|
+
}
|
|
3247
|
+
return candidate;
|
|
3248
|
+
}
|
|
3249
|
+
_calculateArrivalDirection(chain) {
|
|
3250
|
+
for (let i = chain.length - 1; i > 0; i--) {
|
|
3251
|
+
const direction = this._segmentDirection(chain[i - 1], chain[i]);
|
|
3252
|
+
if (direction.x !== 0 || direction.y !== 0) {
|
|
3253
|
+
return direction;
|
|
3254
|
+
}
|
|
3255
|
+
}
|
|
3256
|
+
return null;
|
|
3257
|
+
}
|
|
2959
3258
|
_getPathPoints(source, sourceSide, target, targetSide, offset) {
|
|
2960
3259
|
const sourceDirection = CONNECTOR_SIDE_POINT[sourceSide];
|
|
2961
3260
|
const targetDirection = CONNECTOR_SIDE_POINT[targetSide];
|
|
@@ -3531,11 +3830,12 @@ class FConnectionBase extends MIXIN_BASE$1 {
|
|
|
3531
3830
|
}
|
|
3532
3831
|
setLine({ point1, point2 }) {
|
|
3533
3832
|
this.line = LineExtensions.initialize(point1, point2);
|
|
3534
|
-
const { path, points, penultimatePoint, secondPoint, candidates } = this._getPathResult(point1, point2);
|
|
3833
|
+
const { path, points, penultimatePoint, secondPoint, candidates, waypointHandles } = this._getPathResult(point1, point2);
|
|
3535
3834
|
this.path = path;
|
|
3536
3835
|
this._penultimatePoint = penultimatePoint || point1;
|
|
3537
3836
|
this._secondPoint = secondPoint || point2;
|
|
3538
3837
|
this.fWaypoints()?.candidates.set(candidates || []);
|
|
3838
|
+
this.fWaypoints()?.handles.set(waypointHandles || []);
|
|
3539
3839
|
this._contentLayoutEngine.layout(points || [], this._contents());
|
|
3540
3840
|
}
|
|
3541
3841
|
_contents() {
|
|
@@ -8107,96 +8407,363 @@ class CreateConnectionFinalizeRequest {
|
|
|
8107
8407
|
}
|
|
8108
8408
|
}
|
|
8109
8409
|
|
|
8110
|
-
|
|
8111
|
-
|
|
8112
|
-
|
|
8113
|
-
|
|
8114
|
-
|
|
8115
|
-
|
|
8116
|
-
}
|
|
8117
|
-
|
|
8118
|
-
|
|
8119
|
-
|
|
8120
|
-
|
|
8121
|
-
|
|
8122
|
-
|
|
8123
|
-
|
|
8124
|
-
|
|
8125
|
-
|
|
8126
|
-
|
|
8127
|
-
|
|
8128
|
-
|
|
8129
|
-
|
|
8410
|
+
let uniqueId$6 = 0;
|
|
8411
|
+
class FConnectionComponent extends FConnectionBase {
|
|
8412
|
+
fId = input(`f-connection-${uniqueId$6++}`, ...(ngDevMode ? [{ debugName: "fId", alias: 'fConnectionId' }] : [{ alias: 'fConnectionId' }]));
|
|
8413
|
+
fSourceId = input('', ...(ngDevMode ? [{ debugName: "fSourceId", transform: (value) => stringAttribute(value) || '' }] : [{
|
|
8414
|
+
transform: (value) => stringAttribute(value) || '',
|
|
8415
|
+
}]));
|
|
8416
|
+
fTargetId = input('', ...(ngDevMode ? [{ debugName: "fTargetId", transform: (value) => stringAttribute(value) || '' }] : [{
|
|
8417
|
+
transform: (value) => stringAttribute(value) || '',
|
|
8418
|
+
}]));
|
|
8419
|
+
/** @deprecated Use `fSourceId`. */
|
|
8420
|
+
fOutputId = input('', ...(ngDevMode ? [{ debugName: "fOutputId", transform: (value) => stringAttribute(value) || '' }] : [{
|
|
8421
|
+
transform: (value) => stringAttribute(value) || '',
|
|
8422
|
+
}]));
|
|
8423
|
+
/** @deprecated Use `fTargetId`. */
|
|
8424
|
+
fInputId = input('', ...(ngDevMode ? [{ debugName: "fInputId", transform: (value) => stringAttribute(value) || '' }] : [{
|
|
8425
|
+
transform: (value) => stringAttribute(value) || '',
|
|
8426
|
+
}]));
|
|
8427
|
+
fRadius = 8;
|
|
8428
|
+
fOffset = 12;
|
|
8429
|
+
fBehavior = EFConnectionBehavior.FIXED;
|
|
8430
|
+
fType = EFConnectionType.STRAIGHT;
|
|
8431
|
+
fSelectionDisabled = input(false, ...(ngDevMode ? [{ debugName: "fSelectionDisabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
8432
|
+
fReassignableStart = input(false, ...(ngDevMode ? [{ debugName: "fReassignableStart", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
8433
|
+
fDraggingDisabled = input(false, ...(ngDevMode ? [{ debugName: "fDraggingDisabled", alias: 'fReassignDisabled',
|
|
8434
|
+
transform: booleanAttribute }] : [{
|
|
8435
|
+
alias: 'fReassignDisabled',
|
|
8436
|
+
transform: booleanAttribute,
|
|
8437
|
+
}]));
|
|
8438
|
+
fSourceSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fSourceSide", transform: (x) => {
|
|
8439
|
+
return castToEnum(x, 'fSourceSide', EFConnectionConnectableSide);
|
|
8440
|
+
} }] : [{
|
|
8441
|
+
transform: (x) => {
|
|
8442
|
+
return castToEnum(x, 'fSourceSide', EFConnectionConnectableSide);
|
|
8443
|
+
},
|
|
8444
|
+
}]));
|
|
8445
|
+
fTargetSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fTargetSide", transform: (x) => {
|
|
8446
|
+
return castToEnum(x, 'fTargetSide', EFConnectionConnectableSide);
|
|
8447
|
+
} }] : [{
|
|
8448
|
+
transform: (x) => {
|
|
8449
|
+
return castToEnum(x, 'fTargetSide', EFConnectionConnectableSide);
|
|
8450
|
+
},
|
|
8451
|
+
}]));
|
|
8452
|
+
/** @deprecated Use `fTargetSide`. */
|
|
8453
|
+
fInputSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fInputSide", transform: (x) => {
|
|
8454
|
+
return castToEnum(x, 'fInputSide', EFConnectionConnectableSide);
|
|
8455
|
+
} }] : [{
|
|
8456
|
+
transform: (x) => {
|
|
8457
|
+
return castToEnum(x, 'fInputSide', EFConnectionConnectableSide);
|
|
8458
|
+
},
|
|
8459
|
+
}]));
|
|
8460
|
+
/** @deprecated Use `fSourceSide`. */
|
|
8461
|
+
fOutputSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fOutputSide", transform: (x) => {
|
|
8462
|
+
return castToEnum(x, 'fOutputSide', EFConnectionConnectableSide);
|
|
8463
|
+
} }] : [{
|
|
8464
|
+
transform: (x) => {
|
|
8465
|
+
return castToEnum(x, 'fOutputSide', EFConnectionConnectableSide);
|
|
8466
|
+
},
|
|
8467
|
+
}]));
|
|
8468
|
+
get boundingElement() {
|
|
8469
|
+
return this.fPath().hostElement;
|
|
8130
8470
|
}
|
|
8131
|
-
|
|
8132
|
-
|
|
8133
|
-
|
|
8471
|
+
_mediator = inject(FMediator);
|
|
8472
|
+
ngOnInit() {
|
|
8473
|
+
this._mediator.execute(new AddConnectionToStoreRequest(this));
|
|
8134
8474
|
}
|
|
8135
|
-
|
|
8136
|
-
|
|
8475
|
+
ngOnChanges() {
|
|
8476
|
+
this._mediator.execute(new EmitConnectionsChangesRequest());
|
|
8137
8477
|
}
|
|
8138
|
-
|
|
8139
|
-
|
|
8140
|
-
};
|
|
8141
|
-
ResolveConnectableOutputForOutlet = __decorate([
|
|
8142
|
-
FExecutionRegister(ResolveConnectableOutputForOutletRequest)
|
|
8143
|
-
], ResolveConnectableOutputForOutlet);
|
|
8144
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ResolveConnectableOutputForOutlet, decorators: [{
|
|
8145
|
-
type: Injectable
|
|
8146
|
-
}] });
|
|
8147
|
-
|
|
8148
|
-
class FCreateConnectionEvent {
|
|
8149
|
-
// -----------------------------
|
|
8150
|
-
// Preferred API
|
|
8151
|
-
// -----------------------------
|
|
8152
|
-
/** Source connector id */
|
|
8153
|
-
sourceId;
|
|
8154
|
-
/** Target connector id (can be undefined if dropped to nowhere) */
|
|
8155
|
-
targetId;
|
|
8156
|
-
/** Pointer position where the user dropped pointer. */
|
|
8157
|
-
dropPosition;
|
|
8158
|
-
// -----------------------------
|
|
8159
|
-
// Deprecated compatibility API (keep as FIELDS)
|
|
8160
|
-
// -----------------------------
|
|
8161
|
-
/** @deprecated Use `sourceId` */
|
|
8162
|
-
fOutputId;
|
|
8163
|
-
/** @deprecated Use `targetId` */
|
|
8164
|
-
fInputId;
|
|
8165
|
-
/** @deprecated Use `dropPosition` */
|
|
8166
|
-
fDropPosition;
|
|
8167
|
-
constructor(sourceId, targetId, dropPosition) {
|
|
8168
|
-
// preferred
|
|
8169
|
-
this.sourceId = sourceId;
|
|
8170
|
-
this.targetId = targetId;
|
|
8171
|
-
this.dropPosition = dropPosition;
|
|
8172
|
-
// legacy aliases
|
|
8173
|
-
this.fOutputId = sourceId;
|
|
8174
|
-
this.fInputId = targetId;
|
|
8175
|
-
this.fDropPosition = dropPosition;
|
|
8478
|
+
ngOnDestroy() {
|
|
8479
|
+
this._mediator.execute(new RemoveConnectionFromStoreRequest(this));
|
|
8176
8480
|
}
|
|
8481
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FConnectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
8482
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: FConnectionComponent, isStandalone: false, selector: "f-connection", inputs: { fId: { classPropertyName: "fId", publicName: "fConnectionId", isSignal: true, isRequired: false, transformFunction: null }, fSourceId: { classPropertyName: "fSourceId", publicName: "fSourceId", isSignal: true, isRequired: false, transformFunction: null }, fTargetId: { classPropertyName: "fTargetId", publicName: "fTargetId", isSignal: true, isRequired: false, transformFunction: null }, fOutputId: { classPropertyName: "fOutputId", publicName: "fOutputId", isSignal: true, isRequired: false, transformFunction: null }, fInputId: { classPropertyName: "fInputId", publicName: "fInputId", isSignal: true, isRequired: false, transformFunction: null }, fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fSelectionDisabled: { classPropertyName: "fSelectionDisabled", publicName: "fSelectionDisabled", isSignal: true, isRequired: false, transformFunction: null }, fReassignableStart: { classPropertyName: "fReassignableStart", publicName: "fReassignableStart", isSignal: true, isRequired: false, transformFunction: null }, fDraggingDisabled: { classPropertyName: "fDraggingDisabled", publicName: "fReassignDisabled", isSignal: true, isRequired: false, transformFunction: null }, fSourceSide: { classPropertyName: "fSourceSide", publicName: "fSourceSide", isSignal: true, isRequired: false, transformFunction: null }, fTargetSide: { classPropertyName: "fTargetSide", publicName: "fTargetSide", isSignal: true, isRequired: false, transformFunction: null }, fInputSide: { classPropertyName: "fInputSide", publicName: "fInputSide", isSignal: true, isRequired: false, transformFunction: null }, fOutputSide: { classPropertyName: "fOutputSide", publicName: "fOutputSide", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "fId()", "attr.data-f-connection-type": "fType", "class.f-connection-selection-disabled": "fSelectionDisabled()", "class.f-connection-reassign-disabled": "fDraggingDisabled()" }, classAttribute: "f-component f-connection" }, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FConnectionComponent }], exportAs: ["fComponent"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-marker-circle, f-connection-marker-arrow\" />\n<ng-content select=\"f-connection-gradient\" />\n<ng-content select=\"f-connection-waypoints\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none}:host svg{display:block;vertical-align:middle;overflow:visible!important;position:absolute}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionGradientRenderer, selector: "linearGradient[fConnectionGradientRenderer]", inputs: ["fConnectionGradientRendererFor"] }, { kind: "component", type: FConnectionDragHandleStart, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: FConnectionDragHandleEnd, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionPath, selector: "path[f-connection-path]", inputs: ["useGradient"] }, { kind: "component", type: FConnectionSelection, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8177
8483
|
}
|
|
8484
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FConnectionComponent, decorators: [{
|
|
8485
|
+
type: Component,
|
|
8486
|
+
args: [{ standalone: false, selector: 'f-connection', exportAs: 'fComponent', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
8487
|
+
'[attr.id]': 'fId()',
|
|
8488
|
+
'[attr.data-f-connection-type]': 'fType',
|
|
8489
|
+
class: 'f-component f-connection',
|
|
8490
|
+
'[class.f-connection-selection-disabled]': 'fSelectionDisabled()',
|
|
8491
|
+
'[class.f-connection-reassign-disabled]': 'fDraggingDisabled()',
|
|
8492
|
+
}, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FConnectionComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-marker-circle, f-connection-marker-arrow\" />\n<ng-content select=\"f-connection-gradient\" />\n<ng-content select=\"f-connection-waypoints\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none}:host svg{display:block;vertical-align:middle;overflow:visible!important;position:absolute}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"] }]
|
|
8493
|
+
}], propDecorators: { fId: [{ type: i0.Input, args: [{ isSignal: true, alias: "fConnectionId", required: false }] }], fSourceId: [{ type: i0.Input, args: [{ isSignal: true, alias: "fSourceId", required: false }] }], fTargetId: [{ type: i0.Input, args: [{ isSignal: true, alias: "fTargetId", required: false }] }], fOutputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "fOutputId", required: false }] }], fInputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "fInputId", required: false }] }], fRadius: [{
|
|
8494
|
+
type: Input,
|
|
8495
|
+
args: [{ transform: numberAttribute }]
|
|
8496
|
+
}], fOffset: [{
|
|
8497
|
+
type: Input,
|
|
8498
|
+
args: [{ transform: numberAttribute }]
|
|
8499
|
+
}], fBehavior: [{
|
|
8500
|
+
type: Input,
|
|
8501
|
+
args: [{ transform: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }]
|
|
8502
|
+
}], fType: [{
|
|
8503
|
+
type: Input
|
|
8504
|
+
}], fSelectionDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "fSelectionDisabled", required: false }] }], fReassignableStart: [{ type: i0.Input, args: [{ isSignal: true, alias: "fReassignableStart", required: false }] }], fDraggingDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "fReassignDisabled", required: false }] }], fSourceSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fSourceSide", required: false }] }], fTargetSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fTargetSide", required: false }] }], fInputSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fInputSide", required: false }] }], fOutputSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fOutputSide", required: false }] }] } });
|
|
8178
8505
|
|
|
8179
|
-
|
|
8180
|
-
|
|
8181
|
-
|
|
8182
|
-
|
|
8183
|
-
|
|
8184
|
-
|
|
8185
|
-
|
|
8186
|
-
|
|
8187
|
-
|
|
8188
|
-
|
|
8189
|
-
|
|
8190
|
-
|
|
8191
|
-
|
|
8192
|
-
|
|
8193
|
-
|
|
8194
|
-
|
|
8195
|
-
|
|
8196
|
-
|
|
8197
|
-
|
|
8198
|
-
|
|
8199
|
-
|
|
8506
|
+
let uniqueId$5 = 0;
|
|
8507
|
+
class FConnectionForCreateComponent extends FConnectionBase {
|
|
8508
|
+
fId = signal(`f-connection-for-create-${uniqueId$5++}`, ...(ngDevMode ? [{ debugName: "fId" }] : []));
|
|
8509
|
+
fOutputId = signal('', ...(ngDevMode ? [{ debugName: "fOutputId" }] : []));
|
|
8510
|
+
fInputId = signal('', ...(ngDevMode ? [{ debugName: "fInputId" }] : []));
|
|
8511
|
+
fRadius = 8;
|
|
8512
|
+
fOffset = 12;
|
|
8513
|
+
fBehavior = EFConnectionBehavior.FIXED;
|
|
8514
|
+
fType = EFConnectionType.STRAIGHT;
|
|
8515
|
+
fInputSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fInputSide", transform: (x) => {
|
|
8516
|
+
return castToEnum(x, 'fInputSide', EFConnectionConnectableSide);
|
|
8517
|
+
} }] : [{
|
|
8518
|
+
transform: (x) => {
|
|
8519
|
+
return castToEnum(x, 'fInputSide', EFConnectionConnectableSide);
|
|
8520
|
+
},
|
|
8521
|
+
}]));
|
|
8522
|
+
fOutputSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fOutputSide", transform: (x) => {
|
|
8523
|
+
return castToEnum(x, 'fOutputSide', EFConnectionConnectableSide);
|
|
8524
|
+
} }] : [{
|
|
8525
|
+
transform: (x) => {
|
|
8526
|
+
return castToEnum(x, 'fOutputSide', EFConnectionConnectableSide);
|
|
8527
|
+
},
|
|
8528
|
+
}]));
|
|
8529
|
+
get boundingElement() {
|
|
8530
|
+
return this.fPath().hostElement;
|
|
8531
|
+
}
|
|
8532
|
+
_mediator = inject(FMediator);
|
|
8533
|
+
ngOnInit() {
|
|
8534
|
+
this._mediator.execute(new AddConnectionForCreateToStoreRequest(this));
|
|
8535
|
+
}
|
|
8536
|
+
ngAfterViewInit() {
|
|
8537
|
+
this.hide();
|
|
8538
|
+
}
|
|
8539
|
+
ngOnChanges() {
|
|
8540
|
+
this._mediator.execute(new EmitConnectionsChangesRequest());
|
|
8541
|
+
}
|
|
8542
|
+
ngOnDestroy() {
|
|
8543
|
+
this._mediator.execute(new RemoveConnectionForCreateFromStoreRequest());
|
|
8544
|
+
}
|
|
8545
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FConnectionForCreateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
8546
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: FConnectionForCreateComponent, isStandalone: false, selector: "f-connection-for-create", inputs: { fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fInputSide: { classPropertyName: "fInputSide", publicName: "fInputSide", isSignal: true, isRequired: false, transformFunction: null }, fOutputSide: { classPropertyName: "fOutputSide", publicName: "fOutputSide", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-hidden": "true" }, classAttribute: "f-component f-connection f-connection-for-create" }, providers: [
|
|
8547
|
+
{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FConnectionForCreateComponent },
|
|
8548
|
+
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-marker-circle, f-connection-marker-arrow\" />\n<ng-content select=\"f-connection-gradient\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionGradientRenderer, selector: "linearGradient[fConnectionGradientRenderer]", inputs: ["fConnectionGradientRendererFor"] }, { kind: "component", type: FConnectionDragHandleEnd, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionPath, selector: "path[f-connection-path]", inputs: ["useGradient"] }, { kind: "component", type: FConnectionSelection, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8549
|
+
}
|
|
8550
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FConnectionForCreateComponent, decorators: [{
|
|
8551
|
+
type: Component,
|
|
8552
|
+
args: [{ standalone: false, selector: 'f-connection-for-create', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
8553
|
+
class: 'f-component f-connection f-connection-for-create',
|
|
8554
|
+
'aria-hidden': 'true',
|
|
8555
|
+
}, providers: [
|
|
8556
|
+
{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FConnectionForCreateComponent },
|
|
8557
|
+
], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-marker-circle, f-connection-marker-arrow\" />\n<ng-content select=\"f-connection-gradient\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"] }]
|
|
8558
|
+
}], propDecorators: { fRadius: [{
|
|
8559
|
+
type: Input,
|
|
8560
|
+
args: [{ transform: numberAttribute }]
|
|
8561
|
+
}], fOffset: [{
|
|
8562
|
+
type: Input,
|
|
8563
|
+
args: [{ transform: numberAttribute }]
|
|
8564
|
+
}], fBehavior: [{
|
|
8565
|
+
type: Input,
|
|
8566
|
+
args: [{ transform: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }]
|
|
8567
|
+
}], fType: [{
|
|
8568
|
+
type: Input
|
|
8569
|
+
}], fInputSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fInputSide", required: false }] }], fOutputSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fOutputSide", required: false }] }] } });
|
|
8570
|
+
|
|
8571
|
+
let uniqueId$4 = 0;
|
|
8572
|
+
class FSnapConnectionComponent extends FConnectionBase {
|
|
8573
|
+
fId = signal(`f-snap-connection-${uniqueId$4++}`, ...(ngDevMode ? [{ debugName: "fId" }] : []));
|
|
8574
|
+
fSnapThreshold = 20;
|
|
8575
|
+
/**
|
|
8576
|
+
* Fires when the snapped target changes during a connection-creation gesture:
|
|
8577
|
+
* with the connector id while one is within `fSnapThreshold`, and with an
|
|
8578
|
+
* `undefined` target when the snap is released or the gesture ends.
|
|
8579
|
+
*/
|
|
8580
|
+
fSnapTargetChange = output();
|
|
8581
|
+
fOutputId = signal('', ...(ngDevMode ? [{ debugName: "fOutputId" }] : []));
|
|
8582
|
+
fInputId = signal('', ...(ngDevMode ? [{ debugName: "fInputId" }] : []));
|
|
8583
|
+
fRadius = 8;
|
|
8584
|
+
fOffset = 12;
|
|
8585
|
+
fBehavior = EFConnectionBehavior.FIXED;
|
|
8586
|
+
fType = EFConnectionType.STRAIGHT;
|
|
8587
|
+
fInputSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fInputSide", transform: (x) => {
|
|
8588
|
+
return castToEnum(x, 'fInputSide', EFConnectionConnectableSide);
|
|
8589
|
+
} }] : [{
|
|
8590
|
+
transform: (x) => {
|
|
8591
|
+
return castToEnum(x, 'fInputSide', EFConnectionConnectableSide);
|
|
8592
|
+
},
|
|
8593
|
+
}]));
|
|
8594
|
+
fOutputSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fOutputSide", transform: (x) => {
|
|
8595
|
+
return castToEnum(x, 'fOutputSide', EFConnectionConnectableSide);
|
|
8596
|
+
} }] : [{
|
|
8597
|
+
transform: (x) => {
|
|
8598
|
+
return castToEnum(x, 'fOutputSide', EFConnectionConnectableSide);
|
|
8599
|
+
},
|
|
8600
|
+
}]));
|
|
8601
|
+
get boundingElement() {
|
|
8602
|
+
return this.fPath().hostElement;
|
|
8603
|
+
}
|
|
8604
|
+
_mediator = inject(FMediator);
|
|
8605
|
+
ngOnInit() {
|
|
8606
|
+
this._mediator.execute(new AddSnapConnectionToStoreRequest(this));
|
|
8607
|
+
}
|
|
8608
|
+
ngAfterViewInit() {
|
|
8609
|
+
this.hide();
|
|
8610
|
+
}
|
|
8611
|
+
ngOnChanges() {
|
|
8612
|
+
this._mediator.execute(new EmitConnectionsChangesRequest());
|
|
8613
|
+
}
|
|
8614
|
+
ngOnDestroy() {
|
|
8615
|
+
this._mediator.execute(new RemoveSnapConnectionFromStoreRequest());
|
|
8616
|
+
}
|
|
8617
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FSnapConnectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
8618
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: FSnapConnectionComponent, isStandalone: false, selector: "f-snap-connection", inputs: { fSnapThreshold: { classPropertyName: "fSnapThreshold", publicName: "fSnapThreshold", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fInputSide: { classPropertyName: "fInputSide", publicName: "fInputSide", isSignal: true, isRequired: false, transformFunction: null }, fOutputSide: { classPropertyName: "fOutputSide", publicName: "fOutputSide", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fSnapTargetChange: "fSnapTargetChange" }, host: { attributes: { "aria-hidden": "true" }, classAttribute: "f-component f-connection f-snap-connection" }, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FSnapConnectionComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-marker-circle, f-connection-marker-arrow\" />\n<ng-content select=\"f-connection-gradient\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionGradientRenderer, selector: "linearGradient[fConnectionGradientRenderer]", inputs: ["fConnectionGradientRendererFor"] }, { kind: "component", type: FConnectionDragHandleEnd, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionPath, selector: "path[f-connection-path]", inputs: ["useGradient"] }, { kind: "component", type: FConnectionSelection, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8619
|
+
}
|
|
8620
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FSnapConnectionComponent, decorators: [{
|
|
8621
|
+
type: Component,
|
|
8622
|
+
args: [{ standalone: false, selector: 'f-snap-connection', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
8623
|
+
class: 'f-component f-connection f-snap-connection',
|
|
8624
|
+
'aria-hidden': 'true',
|
|
8625
|
+
}, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FSnapConnectionComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-marker-circle, f-connection-marker-arrow\" />\n<ng-content select=\"f-connection-gradient\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"] }]
|
|
8626
|
+
}], propDecorators: { fSnapThreshold: [{
|
|
8627
|
+
type: Input,
|
|
8628
|
+
args: [{ transform: numberAttribute }]
|
|
8629
|
+
}], fSnapTargetChange: [{ type: i0.Output, args: ["fSnapTargetChange"] }], fRadius: [{
|
|
8630
|
+
type: Input,
|
|
8631
|
+
args: [{ transform: numberAttribute }]
|
|
8632
|
+
}], fOffset: [{
|
|
8633
|
+
type: Input,
|
|
8634
|
+
args: [{ transform: numberAttribute }]
|
|
8635
|
+
}], fBehavior: [{
|
|
8636
|
+
type: Input,
|
|
8637
|
+
args: [{ transform: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }]
|
|
8638
|
+
}], fType: [{
|
|
8639
|
+
type: Input
|
|
8640
|
+
}], fInputSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fInputSide", required: false }] }], fOutputSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fOutputSide", required: false }] }] } });
|
|
8641
|
+
|
|
8642
|
+
/**
|
|
8643
|
+
* Emitted by `<f-snap-connection>` when the snapped target changes during a
|
|
8644
|
+
* connection-creation gesture. `targetId` is the connector currently within
|
|
8645
|
+
* `fSnapThreshold`, or `undefined` when the snap is released or the gesture
|
|
8646
|
+
* ends — so both endpoints can be styled while the snap preview is shown.
|
|
8647
|
+
*/
|
|
8648
|
+
class FSnapTargetChangeEvent {
|
|
8649
|
+
sourceId;
|
|
8650
|
+
targetId;
|
|
8651
|
+
constructor(sourceId, targetId) {
|
|
8652
|
+
this.sourceId = sourceId;
|
|
8653
|
+
this.targetId = targetId;
|
|
8654
|
+
}
|
|
8655
|
+
}
|
|
8656
|
+
|
|
8657
|
+
const F_CONNECTION_PROVIDERS = [
|
|
8658
|
+
FConnectionDragHandleStart,
|
|
8659
|
+
FConnectionDragHandleEnd,
|
|
8660
|
+
FConnectionPath,
|
|
8661
|
+
FConnectionSelection,
|
|
8662
|
+
FConnectionMarker,
|
|
8663
|
+
FConnectionComponent,
|
|
8664
|
+
FConnectionForCreateComponent,
|
|
8665
|
+
FSnapConnectionComponent,
|
|
8666
|
+
];
|
|
8667
|
+
const F_CONNECTION_IMPORTS_EXPORTS = [
|
|
8668
|
+
FConnectionContent,
|
|
8669
|
+
FConnectionMarkerCircle,
|
|
8670
|
+
FConnectionMarkerArrow,
|
|
8671
|
+
FConnectionGradient,
|
|
8672
|
+
FConnectionGradientRenderer,
|
|
8673
|
+
FConnectionWaypoints,
|
|
8674
|
+
];
|
|
8675
|
+
|
|
8676
|
+
class ResolveConnectableOutputForOutletRequest {
|
|
8677
|
+
outlet;
|
|
8678
|
+
static fToken = Symbol('ResolveConnectableOutputForOutletRequest');
|
|
8679
|
+
constructor(outlet) {
|
|
8680
|
+
this.outlet = outlet;
|
|
8681
|
+
}
|
|
8682
|
+
}
|
|
8683
|
+
|
|
8684
|
+
let ResolveConnectableOutputForOutlet = class ResolveConnectableOutputForOutlet {
|
|
8685
|
+
_store = inject(FComponentsStore);
|
|
8686
|
+
handle({ outlet }) {
|
|
8687
|
+
const node = this._findOwnerNode(outlet);
|
|
8688
|
+
if (!node) {
|
|
8689
|
+
throw new Error('The fOutlet must belong to an fNode');
|
|
8690
|
+
}
|
|
8691
|
+
const output = this._findFirstConnectableOutputInNode(node);
|
|
8692
|
+
if (!output) {
|
|
8693
|
+
throw new Error('Outlet requires at least one connectable output in the same node.');
|
|
8694
|
+
}
|
|
8695
|
+
return output;
|
|
8696
|
+
}
|
|
8697
|
+
_findOwnerNode(outlet) {
|
|
8698
|
+
const host = outlet.hostElement;
|
|
8699
|
+
return this._store.nodes.getAll().find((n) => n.isContains(host));
|
|
8700
|
+
}
|
|
8701
|
+
_findFirstConnectableOutputInNode(node) {
|
|
8702
|
+
return getAllSourceConnectors(this._store).find((x) => node.isContains(x.hostElement) && x.canBeConnected);
|
|
8703
|
+
}
|
|
8704
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ResolveConnectableOutputForOutlet, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
8705
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ResolveConnectableOutputForOutlet });
|
|
8706
|
+
};
|
|
8707
|
+
ResolveConnectableOutputForOutlet = __decorate([
|
|
8708
|
+
FExecutionRegister(ResolveConnectableOutputForOutletRequest)
|
|
8709
|
+
], ResolveConnectableOutputForOutlet);
|
|
8710
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: ResolveConnectableOutputForOutlet, decorators: [{
|
|
8711
|
+
type: Injectable
|
|
8712
|
+
}] });
|
|
8713
|
+
|
|
8714
|
+
class FCreateConnectionEvent {
|
|
8715
|
+
// -----------------------------
|
|
8716
|
+
// Preferred API
|
|
8717
|
+
// -----------------------------
|
|
8718
|
+
/** Source connector id */
|
|
8719
|
+
sourceId;
|
|
8720
|
+
/** Target connector id (can be undefined if dropped to nowhere) */
|
|
8721
|
+
targetId;
|
|
8722
|
+
/** Pointer position where the user dropped pointer. */
|
|
8723
|
+
dropPosition;
|
|
8724
|
+
// -----------------------------
|
|
8725
|
+
// Deprecated compatibility API (keep as FIELDS)
|
|
8726
|
+
// -----------------------------
|
|
8727
|
+
/** @deprecated Use `sourceId` */
|
|
8728
|
+
fOutputId;
|
|
8729
|
+
/** @deprecated Use `targetId` */
|
|
8730
|
+
fInputId;
|
|
8731
|
+
/** @deprecated Use `dropPosition` */
|
|
8732
|
+
fDropPosition;
|
|
8733
|
+
constructor(sourceId, targetId, dropPosition) {
|
|
8734
|
+
// preferred
|
|
8735
|
+
this.sourceId = sourceId;
|
|
8736
|
+
this.targetId = targetId;
|
|
8737
|
+
this.dropPosition = dropPosition;
|
|
8738
|
+
// legacy aliases
|
|
8739
|
+
this.fOutputId = sourceId;
|
|
8740
|
+
this.fInputId = targetId;
|
|
8741
|
+
this.fDropPosition = dropPosition;
|
|
8742
|
+
}
|
|
8743
|
+
}
|
|
8744
|
+
|
|
8745
|
+
/**
|
|
8746
|
+
* One in-progress connection creation, independent of the gesture that drives it.
|
|
8747
|
+
*
|
|
8748
|
+
* The drag-to-connect handler and the click-to-connect flow both delegate here, so the
|
|
8749
|
+
* preview line, snap highlighting, connectable marking, target resolution, and the
|
|
8750
|
+
* `fCreateConnection` emission behave identically in every mode. The session owns its
|
|
8751
|
+
* state (it survives the per-pointerdown drag-context reset), and `begin()` refuses to
|
|
8752
|
+
* start when no `<f-connection-for-create>` is present — the same opt-in gate the drag
|
|
8753
|
+
* path uses.
|
|
8754
|
+
*/
|
|
8755
|
+
class FCreateConnectionSession {
|
|
8756
|
+
_mediator = inject(FMediator);
|
|
8757
|
+
_connectionBehaviour = inject(ConnectionBehaviourBuilder);
|
|
8758
|
+
_store = inject(FComponentsStore);
|
|
8759
|
+
_targets = [];
|
|
8760
|
+
_sourceRef;
|
|
8761
|
+
_snapTargetId;
|
|
8762
|
+
get _connection() {
|
|
8763
|
+
return this._store.connections.getForCreate();
|
|
8764
|
+
}
|
|
8765
|
+
get _snapConnection() {
|
|
8766
|
+
return this._store.connections.getForSnap();
|
|
8200
8767
|
}
|
|
8201
8768
|
get isActive() {
|
|
8202
8769
|
return !!this._sourceRef;
|
|
@@ -8244,8 +8811,22 @@ class FCreateConnectionSession {
|
|
|
8244
8811
|
return;
|
|
8245
8812
|
}
|
|
8246
8813
|
const snapTarget = closest && closest.distance < snap.fSnapThreshold ? closest : undefined;
|
|
8814
|
+
this._emitSnapTargetChange(sourceRef, snapTarget?.connector);
|
|
8247
8815
|
this._drawSnapConnection(sourceRef, snapTarget);
|
|
8248
8816
|
}
|
|
8817
|
+
/** One event per acquired/switched/released snap target, not one per pointer move. */
|
|
8818
|
+
_emitSnapTargetChange(sourceRef, target) {
|
|
8819
|
+
const snap = this._snapConnection;
|
|
8820
|
+
if (!snap) {
|
|
8821
|
+
return;
|
|
8822
|
+
}
|
|
8823
|
+
const targetId = target?.fId();
|
|
8824
|
+
if (targetId === this._snapTargetId) {
|
|
8825
|
+
return;
|
|
8826
|
+
}
|
|
8827
|
+
this._snapTargetId = targetId;
|
|
8828
|
+
snap.fSnapTargetChange.emit(new FSnapTargetChangeEvent(this._resolveEventSource(sourceRef.connector).fId(), targetId));
|
|
8829
|
+
}
|
|
8249
8830
|
/**
|
|
8250
8831
|
* Resolves the connectable target at a client-space point using the same priority as
|
|
8251
8832
|
* the drag drop: rect hit, then snap-threshold closest, then `fConnectOnNode` node.
|
|
@@ -8326,6 +8907,11 @@ class FCreateConnectionSession {
|
|
|
8326
8907
|
snap.redraw();
|
|
8327
8908
|
}
|
|
8328
8909
|
_end() {
|
|
8910
|
+
const sourceRef = this._sourceRef;
|
|
8911
|
+
if (sourceRef && this._snapTargetId !== undefined) {
|
|
8912
|
+
this._emitSnapTargetChange(sourceRef, undefined);
|
|
8913
|
+
}
|
|
8914
|
+
this._snapTargetId = undefined;
|
|
8329
8915
|
const connection = this._connection;
|
|
8330
8916
|
if (connection) {
|
|
8331
8917
|
connection.redraw();
|
|
@@ -9151,8 +9737,14 @@ let ReassignConnectionPreparation = class ReassignConnectionPreparation {
|
|
|
9151
9737
|
this._startDrag(connection, pointerInFlow);
|
|
9152
9738
|
queueMicrotask(() => this._bringToFront(connection));
|
|
9153
9739
|
}
|
|
9740
|
+
/**
|
|
9741
|
+
* Connections attached to the same connector have coinciding drag handles, so
|
|
9742
|
+
* a selected connection wins over registration order — grabbing the handle of
|
|
9743
|
+
* the connection the user just selected is what they aimed at (discussion #328).
|
|
9744
|
+
*/
|
|
9154
9745
|
_findConnectionAt(pointerInFlow) {
|
|
9155
|
-
|
|
9746
|
+
const matches = this._connections.filter((c) => isPointerInsideStartOrEndDragHandles(c, pointerInFlow));
|
|
9747
|
+
return matches.find((c) => c.isSelected()) ?? matches[0];
|
|
9156
9748
|
}
|
|
9157
9749
|
_capturePointerDown(request) {
|
|
9158
9750
|
this._dragContext.onPointerDownScale = this._transform.scale;
|
|
@@ -12221,11 +12813,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
12221
12813
|
}]
|
|
12222
12814
|
}] });
|
|
12223
12815
|
|
|
12224
|
-
let uniqueId$
|
|
12816
|
+
let uniqueId$3 = 0;
|
|
12225
12817
|
class FExternalItem extends FExternalItemBase {
|
|
12226
12818
|
_apiService = inject(FExternalItemService);
|
|
12227
12819
|
/** Stable id for matching drag sessions, lookups, etc. */
|
|
12228
|
-
externalItemId = input(`f-external-item-${uniqueId$
|
|
12820
|
+
externalItemId = input(`f-external-item-${uniqueId$3++}`, ...(ngDevMode ? [{ debugName: "externalItemId", alias: 'fExternalItemId' }] : [{
|
|
12229
12821
|
alias: 'fExternalItemId',
|
|
12230
12822
|
}]));
|
|
12231
12823
|
/** Payload attached to external item. */
|
|
@@ -16749,7 +17341,7 @@ class FindConnectableConnectorUsingPriorityAndPositionRequest {
|
|
|
16749
17341
|
/**
|
|
16750
17342
|
* Execution that finds a connectable connector at a given position with priority.
|
|
16751
17343
|
* It checks for connectors at the position, the closest connector if snap connection is enabled,
|
|
16752
|
-
* and the
|
|
17344
|
+
* and the closest connectable connector of the node at that position.
|
|
16753
17345
|
*/
|
|
16754
17346
|
let FindConnectableConnectorUsingPriorityAndPosition = class FindConnectableConnectorUsingPriorityAndPosition {
|
|
16755
17347
|
_mediator = inject(FMediator);
|
|
@@ -16775,12 +17367,12 @@ let FindConnectableConnectorUsingPriorityAndPosition = class FindConnectableConn
|
|
|
16775
17367
|
const result = [];
|
|
16776
17368
|
result.push(...this._filterConnectorsThatLocatedAtPosition(request));
|
|
16777
17369
|
// Closest connector is only added if snap connection is enabled and there is a closest connector found
|
|
16778
|
-
// Closest connector has more priority than the
|
|
17370
|
+
// Closest connector has more priority than the node-level connector of the node at position
|
|
16779
17371
|
const closestConnector = this._isSnapConnectionEnabledAndHasClosestConnector(request);
|
|
16780
17372
|
if (closestConnector) {
|
|
16781
17373
|
result.unshift(closestConnector.connector);
|
|
16782
17374
|
}
|
|
16783
|
-
const fInput = this.
|
|
17375
|
+
const fInput = this._getClosestConnectableConnectorOfNodeAtPosition(request);
|
|
16784
17376
|
if (fInput) {
|
|
16785
17377
|
result.push(fInput);
|
|
16786
17378
|
}
|
|
@@ -16806,12 +17398,13 @@ let FindConnectableConnectorUsingPriorityAndPosition = class FindConnectableConn
|
|
|
16806
17398
|
_isValidClosestInput(closestConnector) {
|
|
16807
17399
|
return !!closestConnector && closestConnector.distance < this._snapConnection.fSnapThreshold;
|
|
16808
17400
|
}
|
|
16809
|
-
//if node placed in position and fConnectOnNode is true, return the
|
|
16810
|
-
|
|
17401
|
+
//if node placed in position and fConnectOnNode is true, return the closest connectable connector of the node
|
|
17402
|
+
_getClosestConnectableConnectorOfNodeAtPosition(request) {
|
|
17403
|
+
const pointerInFlow = this._calculatePointerInFlow(request.pointerPosition);
|
|
16811
17404
|
return this._getElementsFromPoint(request.pointerPosition)
|
|
16812
17405
|
.map((x) => this._findConnectableNode(x))
|
|
16813
17406
|
.filter((x) => !!x)
|
|
16814
|
-
.map((x) => this.
|
|
17407
|
+
.map((x) => this._findClosestConnectableConnectorOfNode(request.connectableConnectors, x, pointerInFlow))
|
|
16815
17408
|
.find((x) => !!x);
|
|
16816
17409
|
}
|
|
16817
17410
|
_getElementsFromPoint(position) {
|
|
@@ -16820,8 +17413,14 @@ let FindConnectableConnectorUsingPriorityAndPosition = class FindConnectableConn
|
|
|
16820
17413
|
_findConnectableNode(element) {
|
|
16821
17414
|
return this._fNodes.find((x) => x.isContains(element) && x.fConnectOnNode());
|
|
16822
17415
|
}
|
|
16823
|
-
|
|
16824
|
-
|
|
17416
|
+
/**
|
|
17417
|
+
* A node can expose several connectable connectors; picking the one nearest
|
|
17418
|
+
* to the drop point matches what the user aimed at, while registration order
|
|
17419
|
+
* would pick an arbitrary one (see issue #326).
|
|
17420
|
+
*/
|
|
17421
|
+
_findClosestConnectableConnectorOfNode(connectableConnectors, fNode, pointerInFlow) {
|
|
17422
|
+
const nodeConnectors = connectableConnectors.filter((x) => x.connector.fNodeId === fNode.fId());
|
|
17423
|
+
return this._mediator.execute(new CalculateClosestConnectorRequest(pointerInFlow, nodeConnectors))?.connector;
|
|
16825
17424
|
}
|
|
16826
17425
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FindConnectableConnectorUsingPriorityAndPosition, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
16827
17426
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FindConnectableConnectorUsingPriorityAndPosition });
|
|
@@ -19087,6 +19686,8 @@ class RunDevDiagnosticsRequest {
|
|
|
19087
19686
|
static fToken = Symbol('RunDevDiagnosticsRequest');
|
|
19088
19687
|
}
|
|
19089
19688
|
|
|
19689
|
+
const DEFAULT_MIN_CONNECTOR_SIZE = 1;
|
|
19690
|
+
const DEFAULT_MAX_NODE_POSITION_DRIFT = 2;
|
|
19090
19691
|
/**
|
|
19091
19692
|
* Dev-mode misconfiguration checks (`FFxxxx` codes), run after each settled nodes
|
|
19092
19693
|
* change. Every check targets a real-world silent failure mined from support issues;
|
|
@@ -19094,6 +19695,7 @@ class RunDevDiagnosticsRequest {
|
|
|
19094
19695
|
*/
|
|
19095
19696
|
let RunDevDiagnostics = class RunDevDiagnostics {
|
|
19096
19697
|
_store = inject(FComponentsStore);
|
|
19698
|
+
_config = inject(F_FLOW_CONFIG, { optional: true });
|
|
19097
19699
|
handle(_) {
|
|
19098
19700
|
if (!isFDevMode()) {
|
|
19099
19701
|
return;
|
|
@@ -19101,6 +19703,8 @@ let RunDevDiagnostics = class RunDevDiagnostics {
|
|
|
19101
19703
|
this._checkDetachedItems();
|
|
19102
19704
|
this._checkInteractionsWithoutDraggable();
|
|
19103
19705
|
this._checkHiddenConnectors();
|
|
19706
|
+
this._checkZeroSizeConnectors();
|
|
19707
|
+
this._checkNodePositionDrift();
|
|
19104
19708
|
this._checkNestedNodes();
|
|
19105
19709
|
this._checkDanglingParentIds();
|
|
19106
19710
|
}
|
|
@@ -19157,23 +19761,89 @@ let RunDevDiagnostics = class RunDevDiagnostics {
|
|
|
19157
19761
|
}
|
|
19158
19762
|
return features;
|
|
19159
19763
|
}
|
|
19160
|
-
/**
|
|
19161
|
-
* FF1006 — a connector hidden with CSS (`display: none`) still registers, but its
|
|
19162
|
-
* geometry is a 0×0 point: connections attach to the wrong place or nowhere.
|
|
19163
|
-
*/
|
|
19164
|
-
_checkHiddenConnectors() {
|
|
19165
|
-
const
|
|
19764
|
+
/**
|
|
19765
|
+
* FF1006 — a connector hidden with CSS (`display: none`) still registers, but its
|
|
19766
|
+
* geometry is a 0×0 point: connections attach to the wrong place or nowhere.
|
|
19767
|
+
*/
|
|
19768
|
+
_checkHiddenConnectors() {
|
|
19769
|
+
for (const connector of this._allConnectors()) {
|
|
19770
|
+
const host = connector.hostElement;
|
|
19771
|
+
if (host.isConnected && host.getClientRects().length === 0) {
|
|
19772
|
+
fWarnOnce('FF1006', connector.fId(), `Connector "${connector.fId()}" is hidden with CSS (display: none?), so its geometry is a 0×0 point and connections cannot attach to it correctly. Conditionally render it instead of hiding it.`);
|
|
19773
|
+
}
|
|
19774
|
+
}
|
|
19775
|
+
}
|
|
19776
|
+
/**
|
|
19777
|
+
* FF1010 — a rendered connector whose own box is zero/near-zero sized. The visual
|
|
19778
|
+
* dot is often drawn with `::before`/`::after`, but hit-testing and connection
|
|
19779
|
+
* geometry use the element's box, so drops land past the connector and fall back
|
|
19780
|
+
* to node-level connect (see issue #326). Threshold comes from
|
|
19781
|
+
* `provideFFlow({ diagnostics: { minConnectorSize } })`; `0` disables the check.
|
|
19782
|
+
*/
|
|
19783
|
+
_checkZeroSizeConnectors() {
|
|
19784
|
+
const threshold = this._config?.diagnostics?.minConnectorSize ?? DEFAULT_MIN_CONNECTOR_SIZE;
|
|
19785
|
+
if (threshold <= 0) {
|
|
19786
|
+
return;
|
|
19787
|
+
}
|
|
19788
|
+
for (const connector of this._allConnectors()) {
|
|
19789
|
+
const host = connector.hostElement;
|
|
19790
|
+
if (!host.isConnected || host.getClientRects().length === 0) {
|
|
19791
|
+
continue;
|
|
19792
|
+
}
|
|
19793
|
+
const { width, height } = host.getBoundingClientRect();
|
|
19794
|
+
if (width < threshold || height < threshold) {
|
|
19795
|
+
fWarnOnce('FF1010', connector.fId(), `Connector "${connector.fId()}" is ${Math.round(width)}×${Math.round(height)}px. Hit-testing and connection geometry use the element's own box, so a dot drawn with ::before/::after is not enough — give the connector element itself a size (width/height).`);
|
|
19796
|
+
}
|
|
19797
|
+
}
|
|
19798
|
+
}
|
|
19799
|
+
/**
|
|
19800
|
+
* FF1011 — a node whose rendered box diverges from its model position. The canvas
|
|
19801
|
+
* places the host at `fNodePosition`, so a drift means app CSS on the node host
|
|
19802
|
+
* (margin, left/top, an extra transform) or out-of-band positioning moved the
|
|
19803
|
+
* visuals; model-driven features (minimap, fitToScreen, auto-layout) keep using
|
|
19804
|
+
* the model position and disagree with what the user sees (see issue #331).
|
|
19805
|
+
* Threshold comes from `provideFFlow({ diagnostics: { maxNodePositionDrift } })`;
|
|
19806
|
+
* `0` disables the check.
|
|
19807
|
+
*/
|
|
19808
|
+
_checkNodePositionDrift() {
|
|
19809
|
+
const threshold = this._config?.diagnostics?.maxNodePositionDrift ?? DEFAULT_MAX_NODE_POSITION_DRIFT;
|
|
19810
|
+
if (threshold <= 0) {
|
|
19811
|
+
return;
|
|
19812
|
+
}
|
|
19813
|
+
const flowHost = this._store.flowHost;
|
|
19814
|
+
const transform = this._store.transform;
|
|
19815
|
+
if (!flowHost || !transform) {
|
|
19816
|
+
return;
|
|
19817
|
+
}
|
|
19818
|
+
const scale = transform.scale || 1;
|
|
19819
|
+
for (const node of this._store.nodes.getAll()) {
|
|
19820
|
+
const host = node.hostElement;
|
|
19821
|
+
if (!host.isConnected || host.getClientRects().length === 0) {
|
|
19822
|
+
continue;
|
|
19823
|
+
}
|
|
19824
|
+
const rect = host.getBoundingClientRect();
|
|
19825
|
+
const renderedCenter = calculatePointerInFlow({ x: rect.left + rect.width / 2, y: rect.top + rect.height / 2 }, flowHost, transform);
|
|
19826
|
+
// Centers survive rotation (the host spins around its own center), so compare
|
|
19827
|
+
// them instead of AABB origins; sizes come from unscaled layout geometry.
|
|
19828
|
+
const width = typeof host.offsetWidth === 'number' ? host.offsetWidth : rect.width / scale;
|
|
19829
|
+
const height = typeof host.offsetHeight === 'number' ? host.offsetHeight : rect.height / scale;
|
|
19830
|
+
const driftX = renderedCenter.x - (node._position.x + width / 2);
|
|
19831
|
+
const driftY = renderedCenter.y - (node._position.y + height / 2);
|
|
19832
|
+
// Compared in on-screen pixels: at deep zoom-out a sub-pixel gBCR reading
|
|
19833
|
+
// divided by the scale would otherwise cross the threshold on its own.
|
|
19834
|
+
const drift = Math.max(Math.abs(driftX), Math.abs(driftY)) * scale;
|
|
19835
|
+
if (drift > threshold) {
|
|
19836
|
+
fWarnOnce('FF1011', node.fId(), `${this._describe(node)} "${node.fId()}" is rendered ~${Math.round(drift)}px away from its fNodePosition (model x: ${Math.round(node._position.x)}, y: ${Math.round(node._position.y)}; rendered x: ${Math.round(renderedCenter.x - width / 2)}, y: ${Math.round(renderedCenter.y - height / 2)}). The minimap, fitToScreen and auto-layout read the model, so they place this node where fNodePosition says — not where CSS moved it. Fold the offset (margin/left/top/extra transform on the node host) into fNodePosition instead.`);
|
|
19837
|
+
}
|
|
19838
|
+
}
|
|
19839
|
+
}
|
|
19840
|
+
_allConnectors() {
|
|
19841
|
+
return [
|
|
19166
19842
|
...this._store.connectors.getAll(),
|
|
19167
19843
|
...this._store.outputs.getAll(),
|
|
19168
19844
|
...this._store.inputs.getAll(),
|
|
19169
19845
|
...this._store.outlets.getAll(),
|
|
19170
19846
|
];
|
|
19171
|
-
for (const connector of connectors) {
|
|
19172
|
-
const host = connector.hostElement;
|
|
19173
|
-
if (host.isConnected && host.getClientRects().length === 0) {
|
|
19174
|
-
fWarnOnce('FF1006', connector.fId(), `Connector "${connector.fId()}" is hidden with CSS (display: none?), so its geometry is a 0×0 point and connections cannot attach to it correctly. Conditionally render it instead of hiding it.`);
|
|
19175
|
-
}
|
|
19176
|
-
}
|
|
19177
19847
|
}
|
|
19178
19848
|
/**
|
|
19179
19849
|
* FF1007 — an `[fNode]`/`[fGroup]` element nested inside another node element: the
|
|
@@ -20502,7 +21172,7 @@ const COMMON_PROVIDERS = [
|
|
|
20502
21172
|
MoveFrontElementsBeforeTargetElement,
|
|
20503
21173
|
];
|
|
20504
21174
|
|
|
20505
|
-
let uniqueId$
|
|
21175
|
+
let uniqueId$2 = 0;
|
|
20506
21176
|
class FRectPatternComponent {
|
|
20507
21177
|
_destroyRef = inject(DestroyRef);
|
|
20508
21178
|
_elementReference = inject(ElementRef);
|
|
@@ -20511,7 +21181,7 @@ class FRectPatternComponent {
|
|
|
20511
21181
|
get hostElement() {
|
|
20512
21182
|
return this._elementReference.nativeElement;
|
|
20513
21183
|
}
|
|
20514
|
-
id = input(`f-pattern-${uniqueId$
|
|
21184
|
+
id = input(`f-pattern-${uniqueId$2++}`, ...(ngDevMode ? [{ debugName: "id" }] : []));
|
|
20515
21185
|
vColor = input('rgba(0,0,0,0.1)', ...(ngDevMode ? [{ debugName: "vColor" }] : []));
|
|
20516
21186
|
hColor = input('rgba(0,0,0,0.1)', ...(ngDevMode ? [{ debugName: "hColor" }] : []));
|
|
20517
21187
|
vSize = input(20, ...(ngDevMode ? [{ debugName: "vSize", transform: numberAttribute }] : [{ transform: numberAttribute }]));
|
|
@@ -20595,7 +21265,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
20595
21265
|
}]
|
|
20596
21266
|
}], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], vColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "vColor", required: false }] }], hColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "hColor", required: false }] }], vSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "vSize", required: false }] }], hSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "hSize", required: false }] }] } });
|
|
20597
21267
|
|
|
20598
|
-
let uniqueId$
|
|
21268
|
+
let uniqueId$1 = 0;
|
|
20599
21269
|
class FCirclePatternComponent {
|
|
20600
21270
|
_destroyRef = inject(DestroyRef);
|
|
20601
21271
|
_elementReference = inject(ElementRef);
|
|
@@ -20604,7 +21274,7 @@ class FCirclePatternComponent {
|
|
|
20604
21274
|
get hostElement() {
|
|
20605
21275
|
return this._elementReference.nativeElement;
|
|
20606
21276
|
}
|
|
20607
|
-
id = input(`f-pattern-${uniqueId$
|
|
21277
|
+
id = input(`f-pattern-${uniqueId$1++}`, ...(ngDevMode ? [{ debugName: "id" }] : []));
|
|
20608
21278
|
color = input('rgba(0,0,0,0.1)', ...(ngDevMode ? [{ debugName: "color" }] : []));
|
|
20609
21279
|
radius = input(20, ...(ngDevMode ? [{ debugName: "radius", transform: numberAttribute }] : [{ transform: numberAttribute }]));
|
|
20610
21280
|
_scaledRadius = 20;
|
|
@@ -21036,11 +21706,13 @@ class FCanvasComponent extends FCanvasBase {
|
|
|
21036
21706
|
* @param padding - paddings from the bounds of the canvas
|
|
21037
21707
|
* @param animated - If true, the fit will be animated; otherwise, it will be instantaneous.
|
|
21038
21708
|
* @param emitCanvasChange - If false, does not emit `fCanvasChange` for this programmatic move.
|
|
21709
|
+
* @param maxScale - Upper bound for the resulting scale, so a small graph is not
|
|
21710
|
+
* magnified to fill the viewport. Unlimited when omitted.
|
|
21039
21711
|
*/
|
|
21040
|
-
fitToScreen(padding = PointExtensions.initialize(), animated = true, emitCanvasChange = true) {
|
|
21712
|
+
fitToScreen(padding = PointExtensions.initialize(), animated = true, emitCanvasChange = true, maxScale) {
|
|
21041
21713
|
this._warnWhenCalledBeforeNodesRender('fitToScreen()');
|
|
21042
21714
|
this._afterRedraw(() => {
|
|
21043
|
-
this._mediator.execute(new FitToFlowRequest(padding, animated, emitCanvasChange));
|
|
21715
|
+
this._mediator.execute(new FitToFlowRequest(padding, animated, emitCanvasChange, maxScale));
|
|
21044
21716
|
});
|
|
21045
21717
|
}
|
|
21046
21718
|
/**
|
|
@@ -21105,251 +21777,6 @@ const F_CANVAS_PROVIDERS = [
|
|
|
21105
21777
|
FCanvasComponent,
|
|
21106
21778
|
];
|
|
21107
21779
|
|
|
21108
|
-
let uniqueId$3 = 0;
|
|
21109
|
-
class FConnectionComponent extends FConnectionBase {
|
|
21110
|
-
fId = input(`f-connection-${uniqueId$3++}`, ...(ngDevMode ? [{ debugName: "fId", alias: 'fConnectionId' }] : [{ alias: 'fConnectionId' }]));
|
|
21111
|
-
fSourceId = input('', ...(ngDevMode ? [{ debugName: "fSourceId", transform: (value) => stringAttribute(value) || '' }] : [{
|
|
21112
|
-
transform: (value) => stringAttribute(value) || '',
|
|
21113
|
-
}]));
|
|
21114
|
-
fTargetId = input('', ...(ngDevMode ? [{ debugName: "fTargetId", transform: (value) => stringAttribute(value) || '' }] : [{
|
|
21115
|
-
transform: (value) => stringAttribute(value) || '',
|
|
21116
|
-
}]));
|
|
21117
|
-
/** @deprecated Use `fSourceId`. */
|
|
21118
|
-
fOutputId = input('', ...(ngDevMode ? [{ debugName: "fOutputId", transform: (value) => stringAttribute(value) || '' }] : [{
|
|
21119
|
-
transform: (value) => stringAttribute(value) || '',
|
|
21120
|
-
}]));
|
|
21121
|
-
/** @deprecated Use `fTargetId`. */
|
|
21122
|
-
fInputId = input('', ...(ngDevMode ? [{ debugName: "fInputId", transform: (value) => stringAttribute(value) || '' }] : [{
|
|
21123
|
-
transform: (value) => stringAttribute(value) || '',
|
|
21124
|
-
}]));
|
|
21125
|
-
fRadius = 8;
|
|
21126
|
-
fOffset = 12;
|
|
21127
|
-
fBehavior = EFConnectionBehavior.FIXED;
|
|
21128
|
-
fType = EFConnectionType.STRAIGHT;
|
|
21129
|
-
fSelectionDisabled = input(false, ...(ngDevMode ? [{ debugName: "fSelectionDisabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
21130
|
-
fReassignableStart = input(false, ...(ngDevMode ? [{ debugName: "fReassignableStart", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
21131
|
-
fDraggingDisabled = input(false, ...(ngDevMode ? [{ debugName: "fDraggingDisabled", alias: 'fReassignDisabled',
|
|
21132
|
-
transform: booleanAttribute }] : [{
|
|
21133
|
-
alias: 'fReassignDisabled',
|
|
21134
|
-
transform: booleanAttribute,
|
|
21135
|
-
}]));
|
|
21136
|
-
fSourceSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fSourceSide", transform: (x) => {
|
|
21137
|
-
return castToEnum(x, 'fSourceSide', EFConnectionConnectableSide);
|
|
21138
|
-
} }] : [{
|
|
21139
|
-
transform: (x) => {
|
|
21140
|
-
return castToEnum(x, 'fSourceSide', EFConnectionConnectableSide);
|
|
21141
|
-
},
|
|
21142
|
-
}]));
|
|
21143
|
-
fTargetSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fTargetSide", transform: (x) => {
|
|
21144
|
-
return castToEnum(x, 'fTargetSide', EFConnectionConnectableSide);
|
|
21145
|
-
} }] : [{
|
|
21146
|
-
transform: (x) => {
|
|
21147
|
-
return castToEnum(x, 'fTargetSide', EFConnectionConnectableSide);
|
|
21148
|
-
},
|
|
21149
|
-
}]));
|
|
21150
|
-
/** @deprecated Use `fTargetSide`. */
|
|
21151
|
-
fInputSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fInputSide", transform: (x) => {
|
|
21152
|
-
return castToEnum(x, 'fInputSide', EFConnectionConnectableSide);
|
|
21153
|
-
} }] : [{
|
|
21154
|
-
transform: (x) => {
|
|
21155
|
-
return castToEnum(x, 'fInputSide', EFConnectionConnectableSide);
|
|
21156
|
-
},
|
|
21157
|
-
}]));
|
|
21158
|
-
/** @deprecated Use `fSourceSide`. */
|
|
21159
|
-
fOutputSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fOutputSide", transform: (x) => {
|
|
21160
|
-
return castToEnum(x, 'fOutputSide', EFConnectionConnectableSide);
|
|
21161
|
-
} }] : [{
|
|
21162
|
-
transform: (x) => {
|
|
21163
|
-
return castToEnum(x, 'fOutputSide', EFConnectionConnectableSide);
|
|
21164
|
-
},
|
|
21165
|
-
}]));
|
|
21166
|
-
get boundingElement() {
|
|
21167
|
-
return this.fPath().hostElement;
|
|
21168
|
-
}
|
|
21169
|
-
_mediator = inject(FMediator);
|
|
21170
|
-
ngOnInit() {
|
|
21171
|
-
this._mediator.execute(new AddConnectionToStoreRequest(this));
|
|
21172
|
-
}
|
|
21173
|
-
ngOnChanges() {
|
|
21174
|
-
this._mediator.execute(new EmitConnectionsChangesRequest());
|
|
21175
|
-
}
|
|
21176
|
-
ngOnDestroy() {
|
|
21177
|
-
this._mediator.execute(new RemoveConnectionFromStoreRequest(this));
|
|
21178
|
-
}
|
|
21179
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FConnectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
21180
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: FConnectionComponent, isStandalone: false, selector: "f-connection", inputs: { fId: { classPropertyName: "fId", publicName: "fConnectionId", isSignal: true, isRequired: false, transformFunction: null }, fSourceId: { classPropertyName: "fSourceId", publicName: "fSourceId", isSignal: true, isRequired: false, transformFunction: null }, fTargetId: { classPropertyName: "fTargetId", publicName: "fTargetId", isSignal: true, isRequired: false, transformFunction: null }, fOutputId: { classPropertyName: "fOutputId", publicName: "fOutputId", isSignal: true, isRequired: false, transformFunction: null }, fInputId: { classPropertyName: "fInputId", publicName: "fInputId", isSignal: true, isRequired: false, transformFunction: null }, fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fSelectionDisabled: { classPropertyName: "fSelectionDisabled", publicName: "fSelectionDisabled", isSignal: true, isRequired: false, transformFunction: null }, fReassignableStart: { classPropertyName: "fReassignableStart", publicName: "fReassignableStart", isSignal: true, isRequired: false, transformFunction: null }, fDraggingDisabled: { classPropertyName: "fDraggingDisabled", publicName: "fReassignDisabled", isSignal: true, isRequired: false, transformFunction: null }, fSourceSide: { classPropertyName: "fSourceSide", publicName: "fSourceSide", isSignal: true, isRequired: false, transformFunction: null }, fTargetSide: { classPropertyName: "fTargetSide", publicName: "fTargetSide", isSignal: true, isRequired: false, transformFunction: null }, fInputSide: { classPropertyName: "fInputSide", publicName: "fInputSide", isSignal: true, isRequired: false, transformFunction: null }, fOutputSide: { classPropertyName: "fOutputSide", publicName: "fOutputSide", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "fId()", "attr.data-f-connection-type": "fType", "class.f-connection-selection-disabled": "fSelectionDisabled()", "class.f-connection-reassign-disabled": "fDraggingDisabled()" }, classAttribute: "f-component f-connection" }, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FConnectionComponent }], exportAs: ["fComponent"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-marker-circle, f-connection-marker-arrow\" />\n<ng-content select=\"f-connection-gradient\" />\n<ng-content select=\"f-connection-waypoints\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none}:host svg{display:block;vertical-align:middle;overflow:visible!important;position:absolute}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionGradientRenderer, selector: "linearGradient[fConnectionGradientRenderer]", inputs: ["fConnectionGradientRendererFor"] }, { kind: "component", type: FConnectionDragHandleStart, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: FConnectionDragHandleEnd, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionPath, selector: "path[f-connection-path]", inputs: ["useGradient"] }, { kind: "component", type: FConnectionSelection, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
21181
|
-
}
|
|
21182
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FConnectionComponent, decorators: [{
|
|
21183
|
-
type: Component,
|
|
21184
|
-
args: [{ standalone: false, selector: 'f-connection', exportAs: 'fComponent', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
21185
|
-
'[attr.id]': 'fId()',
|
|
21186
|
-
'[attr.data-f-connection-type]': 'fType',
|
|
21187
|
-
class: 'f-component f-connection',
|
|
21188
|
-
'[class.f-connection-selection-disabled]': 'fSelectionDisabled()',
|
|
21189
|
-
'[class.f-connection-reassign-disabled]': 'fDraggingDisabled()',
|
|
21190
|
-
}, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FConnectionComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n @if (fReassignableStart()) {\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n }\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-marker-circle, f-connection-marker-arrow\" />\n<ng-content select=\"f-connection-gradient\" />\n<ng-content select=\"f-connection-waypoints\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none}:host svg{display:block;vertical-align:middle;overflow:visible!important;position:absolute}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"] }]
|
|
21191
|
-
}], propDecorators: { fId: [{ type: i0.Input, args: [{ isSignal: true, alias: "fConnectionId", required: false }] }], fSourceId: [{ type: i0.Input, args: [{ isSignal: true, alias: "fSourceId", required: false }] }], fTargetId: [{ type: i0.Input, args: [{ isSignal: true, alias: "fTargetId", required: false }] }], fOutputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "fOutputId", required: false }] }], fInputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "fInputId", required: false }] }], fRadius: [{
|
|
21192
|
-
type: Input,
|
|
21193
|
-
args: [{ transform: numberAttribute }]
|
|
21194
|
-
}], fOffset: [{
|
|
21195
|
-
type: Input,
|
|
21196
|
-
args: [{ transform: numberAttribute }]
|
|
21197
|
-
}], fBehavior: [{
|
|
21198
|
-
type: Input,
|
|
21199
|
-
args: [{ transform: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }]
|
|
21200
|
-
}], fType: [{
|
|
21201
|
-
type: Input
|
|
21202
|
-
}], fSelectionDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "fSelectionDisabled", required: false }] }], fReassignableStart: [{ type: i0.Input, args: [{ isSignal: true, alias: "fReassignableStart", required: false }] }], fDraggingDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "fReassignDisabled", required: false }] }], fSourceSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fSourceSide", required: false }] }], fTargetSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fTargetSide", required: false }] }], fInputSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fInputSide", required: false }] }], fOutputSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fOutputSide", required: false }] }] } });
|
|
21203
|
-
|
|
21204
|
-
let uniqueId$2 = 0;
|
|
21205
|
-
class FConnectionForCreateComponent extends FConnectionBase {
|
|
21206
|
-
fId = signal(`f-connection-for-create-${uniqueId$2++}`, ...(ngDevMode ? [{ debugName: "fId" }] : []));
|
|
21207
|
-
fOutputId = signal('', ...(ngDevMode ? [{ debugName: "fOutputId" }] : []));
|
|
21208
|
-
fInputId = signal('', ...(ngDevMode ? [{ debugName: "fInputId" }] : []));
|
|
21209
|
-
fRadius = 8;
|
|
21210
|
-
fOffset = 12;
|
|
21211
|
-
fBehavior = EFConnectionBehavior.FIXED;
|
|
21212
|
-
fType = EFConnectionType.STRAIGHT;
|
|
21213
|
-
fInputSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fInputSide", transform: (x) => {
|
|
21214
|
-
return castToEnum(x, 'fInputSide', EFConnectionConnectableSide);
|
|
21215
|
-
} }] : [{
|
|
21216
|
-
transform: (x) => {
|
|
21217
|
-
return castToEnum(x, 'fInputSide', EFConnectionConnectableSide);
|
|
21218
|
-
},
|
|
21219
|
-
}]));
|
|
21220
|
-
fOutputSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fOutputSide", transform: (x) => {
|
|
21221
|
-
return castToEnum(x, 'fOutputSide', EFConnectionConnectableSide);
|
|
21222
|
-
} }] : [{
|
|
21223
|
-
transform: (x) => {
|
|
21224
|
-
return castToEnum(x, 'fOutputSide', EFConnectionConnectableSide);
|
|
21225
|
-
},
|
|
21226
|
-
}]));
|
|
21227
|
-
get boundingElement() {
|
|
21228
|
-
return this.fPath().hostElement;
|
|
21229
|
-
}
|
|
21230
|
-
_mediator = inject(FMediator);
|
|
21231
|
-
ngOnInit() {
|
|
21232
|
-
this._mediator.execute(new AddConnectionForCreateToStoreRequest(this));
|
|
21233
|
-
}
|
|
21234
|
-
ngAfterViewInit() {
|
|
21235
|
-
this.hide();
|
|
21236
|
-
}
|
|
21237
|
-
ngOnChanges() {
|
|
21238
|
-
this._mediator.execute(new EmitConnectionsChangesRequest());
|
|
21239
|
-
}
|
|
21240
|
-
ngOnDestroy() {
|
|
21241
|
-
this._mediator.execute(new RemoveConnectionForCreateFromStoreRequest());
|
|
21242
|
-
}
|
|
21243
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FConnectionForCreateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
21244
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: FConnectionForCreateComponent, isStandalone: false, selector: "f-connection-for-create", inputs: { fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fInputSide: { classPropertyName: "fInputSide", publicName: "fInputSide", isSignal: true, isRequired: false, transformFunction: null }, fOutputSide: { classPropertyName: "fOutputSide", publicName: "fOutputSide", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-hidden": "true" }, classAttribute: "f-component f-connection f-connection-for-create" }, providers: [
|
|
21245
|
-
{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FConnectionForCreateComponent },
|
|
21246
|
-
], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-marker-circle, f-connection-marker-arrow\" />\n<ng-content select=\"f-connection-gradient\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionGradientRenderer, selector: "linearGradient[fConnectionGradientRenderer]", inputs: ["fConnectionGradientRendererFor"] }, { kind: "component", type: FConnectionDragHandleEnd, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionPath, selector: "path[f-connection-path]", inputs: ["useGradient"] }, { kind: "component", type: FConnectionSelection, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
21247
|
-
}
|
|
21248
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FConnectionForCreateComponent, decorators: [{
|
|
21249
|
-
type: Component,
|
|
21250
|
-
args: [{ standalone: false, selector: 'f-connection-for-create', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
21251
|
-
class: 'f-component f-connection f-connection-for-create',
|
|
21252
|
-
'aria-hidden': 'true',
|
|
21253
|
-
}, providers: [
|
|
21254
|
-
{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FConnectionForCreateComponent },
|
|
21255
|
-
], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-marker-circle, f-connection-marker-arrow\" />\n<ng-content select=\"f-connection-gradient\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"] }]
|
|
21256
|
-
}], propDecorators: { fRadius: [{
|
|
21257
|
-
type: Input,
|
|
21258
|
-
args: [{ transform: numberAttribute }]
|
|
21259
|
-
}], fOffset: [{
|
|
21260
|
-
type: Input,
|
|
21261
|
-
args: [{ transform: numberAttribute }]
|
|
21262
|
-
}], fBehavior: [{
|
|
21263
|
-
type: Input,
|
|
21264
|
-
args: [{ transform: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }]
|
|
21265
|
-
}], fType: [{
|
|
21266
|
-
type: Input
|
|
21267
|
-
}], fInputSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fInputSide", required: false }] }], fOutputSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fOutputSide", required: false }] }] } });
|
|
21268
|
-
|
|
21269
|
-
let uniqueId$1 = 0;
|
|
21270
|
-
class FSnapConnectionComponent extends FConnectionBase {
|
|
21271
|
-
fId = signal(`f-snap-connection-${uniqueId$1++}`, ...(ngDevMode ? [{ debugName: "fId" }] : []));
|
|
21272
|
-
fSnapThreshold = 20;
|
|
21273
|
-
fOutputId = signal('', ...(ngDevMode ? [{ debugName: "fOutputId" }] : []));
|
|
21274
|
-
fInputId = signal('', ...(ngDevMode ? [{ debugName: "fInputId" }] : []));
|
|
21275
|
-
fRadius = 8;
|
|
21276
|
-
fOffset = 12;
|
|
21277
|
-
fBehavior = EFConnectionBehavior.FIXED;
|
|
21278
|
-
fType = EFConnectionType.STRAIGHT;
|
|
21279
|
-
fInputSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fInputSide", transform: (x) => {
|
|
21280
|
-
return castToEnum(x, 'fInputSide', EFConnectionConnectableSide);
|
|
21281
|
-
} }] : [{
|
|
21282
|
-
transform: (x) => {
|
|
21283
|
-
return castToEnum(x, 'fInputSide', EFConnectionConnectableSide);
|
|
21284
|
-
},
|
|
21285
|
-
}]));
|
|
21286
|
-
fOutputSide = input(EFConnectionConnectableSide.DEFAULT, ...(ngDevMode ? [{ debugName: "fOutputSide", transform: (x) => {
|
|
21287
|
-
return castToEnum(x, 'fOutputSide', EFConnectionConnectableSide);
|
|
21288
|
-
} }] : [{
|
|
21289
|
-
transform: (x) => {
|
|
21290
|
-
return castToEnum(x, 'fOutputSide', EFConnectionConnectableSide);
|
|
21291
|
-
},
|
|
21292
|
-
}]));
|
|
21293
|
-
get boundingElement() {
|
|
21294
|
-
return this.fPath().hostElement;
|
|
21295
|
-
}
|
|
21296
|
-
_mediator = inject(FMediator);
|
|
21297
|
-
ngOnInit() {
|
|
21298
|
-
this._mediator.execute(new AddSnapConnectionToStoreRequest(this));
|
|
21299
|
-
}
|
|
21300
|
-
ngAfterViewInit() {
|
|
21301
|
-
this.hide();
|
|
21302
|
-
}
|
|
21303
|
-
ngOnChanges() {
|
|
21304
|
-
this._mediator.execute(new EmitConnectionsChangesRequest());
|
|
21305
|
-
}
|
|
21306
|
-
ngOnDestroy() {
|
|
21307
|
-
this._mediator.execute(new RemoveSnapConnectionFromStoreRequest());
|
|
21308
|
-
}
|
|
21309
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FSnapConnectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
21310
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: FSnapConnectionComponent, isStandalone: false, selector: "f-snap-connection", inputs: { fSnapThreshold: { classPropertyName: "fSnapThreshold", publicName: "fSnapThreshold", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fRadius: { classPropertyName: "fRadius", publicName: "fRadius", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fOffset: { classPropertyName: "fOffset", publicName: "fOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, fBehavior: { classPropertyName: "fBehavior", publicName: "fBehavior", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }, fType: { classPropertyName: "fType", publicName: "fType", isSignal: false, isRequired: false, transformFunction: null }, fInputSide: { classPropertyName: "fInputSide", publicName: "fInputSide", isSignal: true, isRequired: false, transformFunction: null }, fOutputSide: { classPropertyName: "fOutputSide", publicName: "fOutputSide", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-hidden": "true" }, classAttribute: "f-component f-connection f-snap-connection" }, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FSnapConnectionComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-marker-circle, f-connection-marker-arrow\" />\n<ng-content select=\"f-connection-gradient\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionGradientRenderer, selector: "linearGradient[fConnectionGradientRenderer]", inputs: ["fConnectionGradientRendererFor"] }, { kind: "component", type: FConnectionDragHandleEnd, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionPath, selector: "path[f-connection-path]", inputs: ["useGradient"] }, { kind: "component", type: FConnectionSelection, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
21311
|
-
}
|
|
21312
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FSnapConnectionComponent, decorators: [{
|
|
21313
|
-
type: Component,
|
|
21314
|
-
args: [{ standalone: false, selector: 'f-snap-connection', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
21315
|
-
class: 'f-component f-connection f-snap-connection',
|
|
21316
|
-
'aria-hidden': 'true',
|
|
21317
|
-
}, providers: [{ provide: F_CONNECTION_COMPONENTS_PARENT, useExisting: FSnapConnectionComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <ng-content select=\"svg[fMarker]\" />\n <g class=\"f-connection-group\">\n @if (fGradient(); as gradient) {\n <linearGradient\n fConnectionGradientRenderer\n [fConnectionGradientRendererFor]=\"gradient\"\n ></linearGradient>\n }\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [useGradient]=\"!!fGradient()\" [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n </g>\n</svg>\n<ng-content select=\"f-connection-marker-circle, f-connection-marker-arrow\" />\n<ng-content select=\"f-connection-gradient\" />\n\n@if (fContents().length) {\n <ng-content select=\"[fConnectionContent]\" />\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-content{pointer-events:all}\n"] }]
|
|
21318
|
-
}], propDecorators: { fSnapThreshold: [{
|
|
21319
|
-
type: Input,
|
|
21320
|
-
args: [{ transform: numberAttribute }]
|
|
21321
|
-
}], fRadius: [{
|
|
21322
|
-
type: Input,
|
|
21323
|
-
args: [{ transform: numberAttribute }]
|
|
21324
|
-
}], fOffset: [{
|
|
21325
|
-
type: Input,
|
|
21326
|
-
args: [{ transform: numberAttribute }]
|
|
21327
|
-
}], fBehavior: [{
|
|
21328
|
-
type: Input,
|
|
21329
|
-
args: [{ transform: (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior) }]
|
|
21330
|
-
}], fType: [{
|
|
21331
|
-
type: Input
|
|
21332
|
-
}], fInputSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fInputSide", required: false }] }], fOutputSide: [{ type: i0.Input, args: [{ isSignal: true, alias: "fOutputSide", required: false }] }] } });
|
|
21333
|
-
|
|
21334
|
-
const F_CONNECTION_PROVIDERS = [
|
|
21335
|
-
FConnectionDragHandleStart,
|
|
21336
|
-
FConnectionDragHandleEnd,
|
|
21337
|
-
FConnectionPath,
|
|
21338
|
-
FConnectionSelection,
|
|
21339
|
-
FConnectionMarker,
|
|
21340
|
-
FConnectionComponent,
|
|
21341
|
-
FConnectionForCreateComponent,
|
|
21342
|
-
FSnapConnectionComponent,
|
|
21343
|
-
];
|
|
21344
|
-
const F_CONNECTION_IMPORTS_EXPORTS = [
|
|
21345
|
-
FConnectionContent,
|
|
21346
|
-
FConnectionMarkerCircle,
|
|
21347
|
-
FConnectionMarkerArrow,
|
|
21348
|
-
FConnectionGradient,
|
|
21349
|
-
FConnectionGradientRenderer,
|
|
21350
|
-
FConnectionWaypoints,
|
|
21351
|
-
];
|
|
21352
|
-
|
|
21353
21780
|
const CLEAR_DELAY = 4000;
|
|
21354
21781
|
/**
|
|
21355
21782
|
* Speaks editor feedback to assistive technology through a live region (WCAG 4.1.3 —
|
|
@@ -24423,5 +24850,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImpor
|
|
|
24423
24850
|
* Generated bundle index. Do not edit.
|
|
24424
24851
|
*/
|
|
24425
24852
|
|
|
24426
|
-
export { AddCanvasToStore, AddCanvasToStoreRequest, AddConnectionForCreateToStore, AddConnectionForCreateToStoreRequest, AddConnectionMarkerToStore, AddConnectionMarkerToStoreRequest, AddConnectionToStore, AddConnectionToStoreRequest, AddConnectorToStore, AddConnectorToStoreRequest, AddDndToStore, AddDndToStoreRequest, AddFlowToStore, AddFlowToStoreRequest, AddNodeToStore, AddNodeToStoreRequest, AddPatternToBackground, AddPatternToBackgroundRequest, AddSnapConnectionToStore, AddSnapConnectionToStoreRequest, ApplyChildResizeConstraints, ApplyChildResizeConstraintsRequest, ApplyConnectionRender, ApplyConnectionRenderRequest, ApplyConnectionWorkerResult, ApplyConnectionWorkerResultRequest, ApplyParentResizeConstraints, ApplyParentResizeConstraintsRequest, AttachDragNodeHandlerFromSelection, AttachDragNodeHandlerFromSelectionRequest, AttachResizeConnectionDragHandlersToNode, AttachResizeConnectionDragHandlersToNodeRequest, AttachSoftParentConnectionDragHandlersToNode, AttachSoftParentConnectionDragHandlersToNodeRequest, AttachSourceConnectionDragHandlersToNode, AttachSourceConnectionDragHandlersToNodeRequest, AttachTargetConnectionDragHandlersToNode, AttachTargetConnectionDragHandlersToNodeRequest, BuildConnectionLine, BuildConnectionLineRequest, BuildConnectionWorkerBatch, BuildConnectionWorkerBatchRequest, BuildConnectionWorkerPayloadItem, BuildConnectionWorkerPayloadItemRequest, BuildDragNodeConstraints, BuildDragNodeConstraintsRequest, CALCULATABLE_SIDES, COMMON_PROVIDERS, CONNECTABLE_SIDE_EPSILON, CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS, CalculateAdaptiveCurveData, CalculateBezierCurveData, CalculateChangedRectFromDifference, CalculateChangedRectFromDifferenceRequest, CalculateClosestConnector, CalculateClosestConnectorRequest, CalculateConnectableSideByConnectedPositions, CalculateConnectableSideByConnectedPositionsRequest, CalculateConnectableSideByInternalPosition, CalculateConnectableSideByInternalPositionRequest, CalculateConnectionsState, CalculateConnectionsStateRequest, CalculateConnectorsConnectableSides, CalculateConnectorsConnectableSidesRequest, CalculateDirectChildrenUnionRect, CalculateDirectChildrenUnionRectRequest, CalculateFlowPointFromMinimapPoint, CalculateFlowPointFromMinimapPointRequest, CalculateFlowState, CalculateFlowStateRequest, CalculateInputConnections, CalculateInputConnectionsRequest, CalculateNodesBoundingBox, CalculateNodesBoundingBoxNormalizedPosition, CalculateNodesBoundingBoxNormalizedPositionRequest, CalculateNodesBoundingBoxRequest, CalculateNodesState, CalculateNodesStateRequest, CalculateOutputConnections, CalculateOutputConnectionsRequest, CalculateResizeLimits, CalculateResizeLimitsRequest, CalculateSegmentLineData, CalculateSelectableItems, CalculateSelectableItemsRequest, CalculateSourceConnectorsToConnect, CalculateSourceConnectorsToConnectRequest, CalculateStraightLineData, CalculateTargetConnectorsToConnect, CalculateTargetConnectorsToConnectRequest, CenterBasedDeltaCalculator, CenterGroupOrNode, CenterGroupOrNodeRequest, CenterOfMassSelectionStrategy, ChainPushCollisionResolver, ClearSelection, ClearSelectionRequest, CompleteConnectionRedraw, CompleteConnectionRedrawRequest, ConnectableSidesScheduler, ConnectedSubgraphScopeFilter, ConnectionBehaviourBuilder, ConnectionBehaviourBuilderRequest, ConnectionContentLayoutEngine, ConnectionLineBuilder, ConnectionLineBuilderRequest, ConnectionRedrawState, ConnectionWorkerState, CreateConnectionCreateDragHandler, CreateConnectionCreateDragHandlerRequest, CreateConnectionFinalize, CreateConnectionFinalizeRequest, CreateConnectionFromConnectorPreparation, CreateConnectionFromConnectorPreparationRequest, CreateConnectionFromOutletPreparation, CreateConnectionFromOutletPreparationRequest, CreateConnectionFromOutputPreparation, CreateConnectionFromOutputPreparationRequest, CreateConnectionHandler, CreateConnectionMarkers, CreateConnectionMarkersRequest, CreateConnectionPreparation, CreateConnectionPreparationRequest, CreateDragNodeHandler, CreateDragNodeHandlerRequest, CreateDragNodeHierarchy, CreateDragNodeHierarchyRequest, DRAG_AND_DROP_COMMON_PROVIDERS, DRAG_AUTO_PAN_PROVIDERS, DRAG_CANVAS_PROVIDERS, DRAG_CONNECTIONS_PROVIDERS, DRAG_DROP_TO_GROUP_PROVIDERS, DRAG_EXTERNAL_ITEM_HANDLER_KIND, DRAG_EXTERNAL_ITEM_HANDLER_TYPE, DRAG_EXTERNAL_ITEM_PROVIDERS, DRAG_MINIMAP_HANDLER_KIND, DRAG_MINIMAP_HANDLER_TYPE, DRAG_MINIMAP_PROVIDERS, DRAG_NODE_HANDLER_KIND, DRAG_NODE_HANDLER_TYPE, DRAG_SELECTION_AREA_PROVIDERS, DRAG_SELECT_BY_POINTER_PROVIDERS, DeltaClamp, Deprecated, DetectConnectionsUnderDragNode, DetectConnectionsUnderDragNodeRequest, DisableConnectionWorker, DisableConnectionWorkerRequest, DownstreamConnectionsSelectionStrategy, DragAndDropBase, DragCanvasFinalize, DragCanvasFinalizeRequest, DragCanvasHandler, DragCanvasPreparation, DragCanvasPreparationRequest, DragConnectionWaypointFinalize, DragConnectionWaypointFinalizeRequest, DragConnectionWaypointHandler, DragConnectionWaypointPreparation, DragConnectionWaypointPreparationRequest, DragExternalItemCreatePlaceholder, DragExternalItemCreatePlaceholderRequest, DragExternalItemCreatePreview, DragExternalItemCreatePreviewRequest, DragExternalItemFinalize, DragExternalItemFinalizeRequest, DragExternalItemHandler, DragExternalItemPreparation, DragExternalItemPreparationRequest, DragHandlerBase, DragHandlerInjector, DragMinimapFinalize, DragMinimapFinalizeRequest, DragMinimapHandler, DragMinimapPreparation, DragMinimapPreparationRequest, DragNodeConnectionBothSidesHandler, DragNodeConnectionHandlerBase, DragNodeConnectionSourceHandler, DragNodeConnectionTargetHandler, DragNodeDeltaConstraints, DragNodeFinalize, DragNodeFinalizeRequest, DragNodeHandler, DragNodeHierarchy, DragNodeItemHandler, DragNodePreparation, DragNodePreparationRequest, DropToGroupFinalize, DropToGroupFinalizeRequest, DropToGroupHandler, DropToGroupPreparation, DropToGroupPreparationRequest, ECanvasRedrawContext, EFCanvasLayer, EFConnectableSide, EFConnectionBehavior, EFConnectionConnectableSide, EFConnectionType, EFFlowFeatureKind, EFLayoutDirection, EFLayoutMode, EFMarkerType, EFReflowAxis, EFReflowCollision, EFReflowDeltaSource, EFReflowMode, EFReflowScope, EFResizeHandleType, EFZoomDirection, EMPTY_REFLOW_PLAN, EdgeBasedDeltaCalculator, EmitConnectionsChanges, EmitConnectionsChangesRequest, EmitEndDragSequenceEvent, EmitEndDragSequenceEventRequest, EmitSelectionChangeEvent, EmitSelectionChangeEventRequest, EmitStartDragSequenceEvent, EmitStartDragSequenceEventRequest, EnsureConnectionWorker, EnsureConnectionWorkerRequest, EventExtensions, ExternalRectConstraint, FA11yAnnouncer, FA11yController, FAutoPan, FAutoPanBase, FBackgroundBase, FBackgroundComponent, FCache, FCacheConnector, FCacheConnectorKeyFactory, FCacheNode, FCanvasBase, FCanvasChangeEvent, FCanvasComponent, FChannel, FChannelHub, FCirclePatternComponent, FClickConnectFlow, FComponentsStore, FConnectionBase, FConnectionComponent, FConnectionComponentsParent, FConnectionContent, FConnectionContentBase, FConnectionDragHandleBase, FConnectionDragHandleEnd, FConnectionDragHandleStart, FConnectionForCreateComponent, FConnectionGradient, FConnectionGradientBase, FConnectionGradientRenderer, FConnectionGradientRendererBase, FConnectionMarker, FConnectionMarkerArrow, FConnectionMarkerBase, FConnectionMarkerCircle, FConnectionMarkerRegistry, FConnectionPath, FConnectionPathBase, FConnectionRegistry, FConnectionSelection, FConnectionSelectionBase, FConnectionWaypoints, FConnectionWaypointsBase, FConnectionWaypointsChangedEvent, FConnectorBase, FConnectorDirective, FConnectorRegistry, FControlSchemeController, FCreateConnectionEvent, FCreateConnectionSession, FCreateNodeEvent, FDeleteSelectedEvent, FDragBlockerDirective, FDragExternalItemStartEventData, FDragHandleDirective, FDragHandlerResult, FDragNodeStartEventData, FDragStartedEvent, FDraggableBase, FDraggableDataContext, FDraggableDirective, FDropToGroupEvent, FExternalItem, FExternalItemBase, FExternalItemPlaceholder, FExternalItemPreview, FExternalItemService, FFlowBase, FFlowComponent, FFlowModule, FFlowState, FFlowStateController, FGroupDirective, FIdRegistryBase, FLayoutController, FLayoutEngine, FLineAlignmentComponent, FMagneticLines, FMagneticLinesBase, FMagneticRects, FMagneticRectsBase, FMinimapBase, FMinimapCanvasDirective, FMinimapComponent, FMinimapFlowDirective, FMinimapState, FMinimapViewDirective, FMoveNodesEvent, FNodeBase, FNodeConnectionsIntersectionEvent, FNodeDirective, FNodeInputBase, FNodeInputDirective, FNodeIntersectedWithConnections, FNodeOutletBase, FNodeOutletDirective, FNodeOutputBase, FNodeOutputDirective, FNodeRegistry, FReassignConnectionEvent, FRectPatternComponent, FReflowBaselineTracker, FReflowController, FReflowCycleGuard, FReflowIgnore, FReflowIgnoreRegistry, FReflowOrchestrator, FReflowPlanner, FResizeChannel, FResizeHandleDirective, FResizeNodeStartEventData, FRotateHandleDirective, FRotateNodeStartEventData, FSelectionArea, FSelectionAreaBase, FSelectionChangeEvent, FSingleRegistryBase, FSnapConnectionComponent, FSourceConnectorBase, FVirtualFor, FZoomBase, FZoomDirective, F_A11Y_CONFIG, F_AUTO_PAN_PROVIDERS, F_BACKGROUND, F_BACKGROUND_FEATURES, F_BACKGROUND_PATTERN, F_BACKGROUND_PROVIDERS, F_CACHE_FEATURES, F_CACHE_OPTIONS, F_CANVAS, F_CANVAS_CONFIG, F_CANVAS_FEATURES, F_CANVAS_PROVIDERS, F_CONNECTION_BUILDERS, F_CONNECTION_COMPONENTS_PARENT, F_CONNECTION_CONTENT, F_CONNECTION_DRAG_HANDLE_END, F_CONNECTION_DRAG_HANDLE_START, F_CONNECTION_FEATURES, F_CONNECTION_FLOW, F_CONNECTION_GRADIENT, F_CONNECTION_IMPORTS_EXPORTS, F_CONNECTION_MARKER, F_CONNECTION_PATH, F_CONNECTION_PROVIDERS, F_CONNECTION_SELECTION, F_CONNECTION_WAYPOINTS, F_CONNECTOR, F_CONNECTORS_FEATURES, F_CONNECTORS_PROVIDERS, F_CONTROL_SCHEME_CONFIG, F_CSS_CLASS, F_DEFAULT_A11Y_CONFIG, F_DEFAULT_A11Y_KEYS, F_DEFAULT_A11Y_MESSAGES, F_DEFAULT_CONTROL_SCHEME, F_DEFAULT_LAYER_ORDER, F_DRAGGABLE_FEATURES, F_DRAGGABLE_PROVIDERS, F_DRAG_SELECT_CONTROL_SCHEME, F_EXTERNAL_ITEM, F_EXTERNAL_ITEM_PROVIDERS, F_FLOW, F_FLOW_CONFIG, F_FLOW_FEATURES, F_FLOW_PROVIDERS, F_FLOW_STATE_CONFIG, F_LAYOUT, F_LAYOUT_OPTIONS, F_LINE_ALIGNMENT_PROVIDERS, F_MAGNETIC_LINES, F_MAGNETIC_LINES_PROVIDERS, F_MAGNETIC_RECTS, F_MAGNETIC_RECTS_PROVIDERS, F_MINIMAP_BASE, F_MINIMAP_FEATURES, F_MINIMAP_PROVIDERS, F_NODE, F_NODE_FEATURES, F_NODE_INPUT, F_NODE_OUTLET, F_NODE_OUTPUT, F_NODE_PROVIDERS, F_REFLOW_CONFIG, F_REFLOW_PROVIDERS, F_SCROLL_PAN_CONTROL_SCHEME, F_SELECTED_CLASS, F_SELECTION_AREA_PROVIDERS, F_SELECTION_FEATURES, F_STORAGE_PROVIDERS, F_VIRTUAL_FOR_PROVIDERS, F_ZOOM, F_ZOOM_FEATURES, F_ZOOM_PROVIDERS, FindConnectableConnectorUsingPriorityAndPosition, FindConnectableConnectorUsingPriorityAndPositionRequest, FitToChildNodesAndGroups, FitToChildNodesAndGroupsRequest, FitToFlow, FitToFlowRequest, GET_FLOW_STATE_PROVIDERS, GetCachedFCacheRect, GetCachedFCacheRectRequest, GetChildNodeIds, GetChildNodeIdsRequest, GetConnectorRectReference, GetConnectorRectReferenceRequest, GetCurrentSelection, GetCurrentSelectionRequest, GetDeepChildrenNodesAndGroups, GetDeepChildrenNodesAndGroupsRequest, GetFlow, GetFlowRequest, GetNodePadding, GetNodePaddingRequest, GetNormalizedConnectorRect, GetNormalizedConnectorRectRequest, GetNormalizedElementRect, GetNormalizedElementRectRequest, GetNormalizedParentNodeRect, GetNormalizedParentNodeRectRequest, GetNormalizedPoint, GetNormalizedPointRequest, GetParentNodes, GetParentNodesRequest, GlobalScopeFilter, GridSnapper, GroupScopeFilter, HandleConnectionWorkerMessage, HandleConnectionWorkerMessageRequest, IMouseEvent, INSTANCES, IPointerEvent, IPointerUpEvent, ITouchDownEvent, ITouchMoveEvent, InitializeDragSequence, InitializeDragSequenceRequest, InputCanvasPosition, InputCanvasPositionRequest, InputCanvasScale, InputCanvasScaleRequest, InvalidateFCacheNode, InvalidateFCacheNodeRequest, IsArrayHasParentNode, IsArrayHasParentNodeRequest, IsConnectionRedrawCurrent, IsConnectionRedrawCurrentRequest, IsConnectionWorkerEnabled, IsConnectionWorkerEnabledRequest, IsDragStarted, IsDragStartedRequest, ListenConnectionsChanges, ListenConnectionsChangesRequest, ListenNodesChanges, ListenNodesChangesRequest, ListenTransformChanges, ListenTransformChangesRequest, LogExecutionTime, MOUSE_EVENT_IGNORE_TIME, MagneticLineElement, MagneticLineRenderer, MagneticLinesHandler, MagneticLinesPreparation, MagneticLinesPreparationRequest, MagneticRectElement, MagneticRectsHandler, MagneticRectsPreparation, MagneticRectsPreparationRequest, MagneticRectsRenderer, MarkConnectableConnectors, MarkConnectableConnectorsRequest, MarkConnectionConnectorsAsConnected, MarkConnectionConnectorsAsConnectedRequest, MinimapCalculateViewRect, MinimapCalculateViewRectRequest, MinimapCalculateViewport, MinimapCalculateViewportRequest, MinimapDrawNodes, MinimapDrawNodesRequest, MinimapNodeRects, MoveFrontElementsBeforeTargetElement, MoveFrontElementsBeforeTargetElementRequest, NODE_PROVIDERS, NODE_RESIZE_PROVIDERS, NODE_ROTATE_PROVIDERS, NotifyFullRendered, NotifyFullRenderedRequest, NotifyNodesRendered, NotifyNodesRenderedRequest, NotifyTransformChanged, NotifyTransformChangedRequest, OnPointerMove, OnPointerMoveRequest, PINCH_TO_ZOOM_PROVIDERS, PinchToZoomFinalize, PinchToZoomFinalizeRequest, PinchToZoomHandler, PinchToZoomPreparation, PinchToZoomPreparationRequest, Polyline, PolylineContentAlign, PolylineContentPlace, PolylineSampler, PrepareDragSequence, PrepareDragSequenceRequest, PreventDefaultIsExternalItem, PreventDefaultIsExternalItemRequest, QueueConnectionRedraw, QueueConnectionRedrawRequest, QueueConnectionRedrawState, RESIZE_DIRECTIONS, RESIZE_NODE_HANDLER_KIND, RESIZE_NODE_HANDLER_TYPE, ROTATE_NODE_HANDLER_KIND, ROTATE_NODE_HANDLER_TYPE, ReadNodeBoundsWithPaddings, ReadNodeBoundsWithPaddingsRequest, ReadNodeBoundsWithPaddingsResponse, ReassignConnectionFinalize, ReassignConnectionFinalizeRequest, ReassignConnectionHandler, ReassignConnectionPreparation, ReassignConnectionPreparationRequest, ReassignConnectionSourceHandler, ReassignConnectionTargetHandler, RedrawCanvasWithAnimation, RedrawCanvasWithAnimationRequest, RedrawConnections, RedrawConnectionsRequest, RegisterFCacheConnector, RegisterFCacheConnectorRequest, RegisterFCacheNode, RegisterFCacheNodeRequest, RegisterPluginInstance, RegisterPluginInstanceRequest, RemoveCanvasFromStore, RemoveCanvasFromStoreRequest, RemoveConnectionForCreateFromStore, RemoveConnectionForCreateFromStoreRequest, RemoveConnectionFromStore, RemoveConnectionFromStoreRequest, RemoveConnectionMarkerFromStore, RemoveConnectionMarkerFromStoreRequest, RemoveConnectionWaypoint, RemoveConnectionWaypointRequest, RemoveConnectorFromStore, RemoveConnectorFromStoreRequest, RemoveDndFromStore, RemoveDndFromStoreRequest, RemoveFlowFromStore, RemoveFlowFromStoreRequest, RemoveNodeFromStore, RemoveNodeFromStoreRequest, RemovePluginInstance, RemovePluginInstanceRequest, RemoveSnapConnectionFromStore, RemoveSnapConnectionFromStoreRequest, RenderConnection, RenderConnectionFromGeometry, RenderConnectionFromGeometryRequest, RenderConnectionRequest, RenderConnectionWithLine, RenderConnectionWithLineRequest, RenderLifecycleState, ResetConnectionWorkerRuntime, ResetConnectionWorkerRuntimeRequest, ResetRenderLifecycle, ResetRenderLifecycleRequest, ResetScale, ResetScaleAndCenter, ResetScaleAndCenterRequest, ResetScaleRequest, ResetZoom, ResetZoomRequest, ResizeNodeConnectionBothSidesHandler, ResizeNodeConnectionHandlerBase, ResizeNodeConnectionSourceHandler, ResizeNodeConnectionTargetHandler, ResizeNodeFinalize, ResizeNodeFinalizeRequest, ResizeNodeHandler, ResizeNodePreparation, ResizeNodePreparationRequest, ResolveConnectableOutputForOutlet, ResolveConnectableOutputForOutletRequest, ResolveConnectionEndpointRect, ResolveConnectionEndpointRectRequest, ResolveConnectionEndpointRotationContext, ResolveConnectionEndpointRotationContextRequest, ResolveConnectionEndpoints, ResolveConnectionEndpointsRequest, ResolveConnectionGeometry, ResolveConnectionGeometryRequest, RotateNodeFinalize, RotateNodeFinalizeRequest, RotateNodeHandler, RotateNodePreparation, RotateNodePreparationRequest, RunAutoPanFrame, RunAutoPanFrameRequest, RunConnectionRedrawSlice, RunConnectionRedrawSliceRequest, RunConnectionWorker, RunConnectionWorkerBatch, RunConnectionWorkerBatchRequest, RunConnectionWorkerRequest, RunDevDiagnostics, RunDevDiagnosticsRequest, ScheduleAutoPanFrame, ScheduleAutoPanFrameRequest, ScrollCanvas, ScrollCanvasRequest, Select, SelectAll, SelectAllRequest, SelectAndUpdateNodeLayer, SelectAndUpdateNodeLayerRequest, SelectByPointer, SelectByPointerRequest, SelectRequest, SelectionAreaFinalize, SelectionAreaFinalizeRequest, SelectionAreaHandler, SelectionAreaPreparation, SelectionAreaPreparationRequest, SetBackgroundTransform, SetBackgroundTransformRequest, SetFCacheConnectorRect, SetFCacheConnectorRectRequest, SetFCacheNodeRect, SetFCacheNodeRectRequest, SetZoom, SetZoomRequest, ShouldUseConnectionWorker, ShouldUseConnectionWorkerRequest, SortDropCandidatesByLayer, SortDropCandidatesByLayerRequest, SortItemLayers, SortItemLayersRequest, SortItemsByParent, SortItemsByParentRequest, SortNodeLayers, SortNodeLayersRequest, StartConnectionRedraw, StartConnectionRedrawRequest, StartConnectionWorkerRedraw, StartConnectionWorkerRedrawRequest, StopAutoPan, StopAutoPanRequest, StopCollisionResolver, UnmarkConnectableConnectors, UnmarkConnectableConnectorsRequest, UnregisterFCacheConnector, UnregisterFCacheConnectorRequest, UnregisterFCacheNode, UnregisterFCacheNodeRequest, UpdateFCacheRectByElement, UpdateFCacheRectByElementRequest, UpdateItemAndChildrenLayers, UpdateItemAndChildrenLayersRequest, UpdateNodeWhenStateOrSizeChanged, UpdateNodeWhenStateOrSizeChangedRequest, UpdateScale, UpdateScaleRequest, WaitForConnectionsRendered, WaitForConnectionsRenderedRequest, XRangeSelectionStrategy, afterNextPaint, buildConnectionAnchors, buildCornerMidPointsAndApplyOffsets, calculateAutoPanAxisDelta, calculateAutoPanDelta, calculateCenterBetweenPoints, calculateCurveCandidates, calculateDifferenceAfterRotation, calculateMagneticGuides, calculateMagneticRects, calculatePointerInFlow, calculatePolylineCandidates, calculatePositionAfterRotation, castToConnectorType, coerceMarkerType, computeEdgeDeltas, createConnectionDomIdentifier, createConnectionSelectionDomIdentifier, createConnectionWorkerUrl, createGradientDomIdentifier, createGradientDomUrl, createMultiCubicPath, createSVGElement, createSegmentLinePath, cubicBezierAtT, debounceAnimationFrame, debounceMicrotask, debounceTime, defaultEventTrigger, determineSide, expandRectByOverflow, fDiagnosticMessage, fInstanceKey, fProvideCache, fSuppressDevWarnings, fWarnOnce, filterConnectableTargets, findExistingWaypoint, findNodeOrGroupContaining, findSourceConnector, findSpatialNeighbor, findTargetConnector, findWaypointCandidate, fixedCenterBehavior, fixedOutboundBehavior, floatingBehavior, getAllSourceConnectors, getAllTargetConnectors, getExternalItemHost, infinityMinMax, injectFlowState, isCalculateMode, isConnectionWorkerRuntimeSupported, isConnector, isDragBlocker, isDragExternalItemHandler, isDragHandleEnd, isDragHandleStart, isDragMinimapHandler, isDragNodeHandler, isExternalItem, isFDevMode, isMobile, isNode, isNodeOutlet, isNodeOutput, isOnFlowBackground, isOutletConnector, isPointerInsidePoint, isPointerInsideStartOrEndDragHandles, isResizeNodeHandler, isRotateHandle, isRotateNodeHandler, isSourceConnector, isTargetConnector, isValidEventTrigger, mergeA11yConfig, mergeControlSchemeConfig, mergeFCanvasConfig, mergeFlowStateConfig, mergeLayoutNodes, mergePointChains, mergeReflowConfig, middleButtonEventTrigger, mixinChangeSelection, mixinChangeVisibility, normalizeFlowLayoutData, normalizePolyline, notifyOnStart, pickWaypoint, primaryButtonEventTrigger, provideFFlow, provideFLayout, rebaseAutoPanPointerDownPosition, rectFromPoint, requireSourceConnector, requireTargetConnector, resolveAutoPanMode, resolveConnectionWorkerRuntime, resolveLayerOrder, revokeConnectionWorkerUrl, sampleCubicBezierUniform, sampleMultiCubicUniform, stringAttribute, takeOne, transitionEnd, withA11y, withConnectionFlow, withControlScheme, withFCanvas, withFlowState, withReflowOnResize, withinSnapThreshold };
|
|
24853
|
+
export { AddCanvasToStore, AddCanvasToStoreRequest, AddConnectionForCreateToStore, AddConnectionForCreateToStoreRequest, AddConnectionMarkerToStore, AddConnectionMarkerToStoreRequest, AddConnectionToStore, AddConnectionToStoreRequest, AddConnectorToStore, AddConnectorToStoreRequest, AddDndToStore, AddDndToStoreRequest, AddFlowToStore, AddFlowToStoreRequest, AddNodeToStore, AddNodeToStoreRequest, AddPatternToBackground, AddPatternToBackgroundRequest, AddSnapConnectionToStore, AddSnapConnectionToStoreRequest, ApplyChildResizeConstraints, ApplyChildResizeConstraintsRequest, ApplyConnectionRender, ApplyConnectionRenderRequest, ApplyConnectionWorkerResult, ApplyConnectionWorkerResultRequest, ApplyParentResizeConstraints, ApplyParentResizeConstraintsRequest, AttachDragNodeHandlerFromSelection, AttachDragNodeHandlerFromSelectionRequest, AttachResizeConnectionDragHandlersToNode, AttachResizeConnectionDragHandlersToNodeRequest, AttachSoftParentConnectionDragHandlersToNode, AttachSoftParentConnectionDragHandlersToNodeRequest, AttachSourceConnectionDragHandlersToNode, AttachSourceConnectionDragHandlersToNodeRequest, AttachTargetConnectionDragHandlersToNode, AttachTargetConnectionDragHandlersToNodeRequest, BuildConnectionLine, BuildConnectionLineRequest, BuildConnectionWorkerBatch, BuildConnectionWorkerBatchRequest, BuildConnectionWorkerPayloadItem, BuildConnectionWorkerPayloadItemRequest, BuildDragNodeConstraints, BuildDragNodeConstraintsRequest, CALCULATABLE_SIDES, COMMON_PROVIDERS, CONNECTABLE_SIDE_EPSILON, CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS, CalculateAdaptiveCurveData, CalculateBezierCurveData, CalculateChangedRectFromDifference, CalculateChangedRectFromDifferenceRequest, CalculateClosestConnector, CalculateClosestConnectorRequest, CalculateConnectableSideByConnectedPositions, CalculateConnectableSideByConnectedPositionsRequest, CalculateConnectableSideByInternalPosition, CalculateConnectableSideByInternalPositionRequest, CalculateConnectionsState, CalculateConnectionsStateRequest, CalculateConnectorsConnectableSides, CalculateConnectorsConnectableSidesRequest, CalculateDirectChildrenUnionRect, CalculateDirectChildrenUnionRectRequest, CalculateFlowPointFromMinimapPoint, CalculateFlowPointFromMinimapPointRequest, CalculateFlowState, CalculateFlowStateRequest, CalculateInputConnections, CalculateInputConnectionsRequest, CalculateNodesBoundingBox, CalculateNodesBoundingBoxNormalizedPosition, CalculateNodesBoundingBoxNormalizedPositionRequest, CalculateNodesBoundingBoxRequest, CalculateNodesState, CalculateNodesStateRequest, CalculateOutputConnections, CalculateOutputConnectionsRequest, CalculateResizeLimits, CalculateResizeLimitsRequest, CalculateSegmentLineData, CalculateSelectableItems, CalculateSelectableItemsRequest, CalculateSourceConnectorsToConnect, CalculateSourceConnectorsToConnectRequest, CalculateStraightLineData, CalculateTargetConnectorsToConnect, CalculateTargetConnectorsToConnectRequest, CenterBasedDeltaCalculator, CenterGroupOrNode, CenterGroupOrNodeRequest, CenterOfMassSelectionStrategy, ChainPushCollisionResolver, ClearSelection, ClearSelectionRequest, CompleteConnectionRedraw, CompleteConnectionRedrawRequest, ConnectableSidesScheduler, ConnectedSubgraphScopeFilter, ConnectionBehaviourBuilder, ConnectionBehaviourBuilderRequest, ConnectionContentLayoutEngine, ConnectionLineBuilder, ConnectionLineBuilderRequest, ConnectionRedrawState, ConnectionWorkerState, CreateConnectionCreateDragHandler, CreateConnectionCreateDragHandlerRequest, CreateConnectionFinalize, CreateConnectionFinalizeRequest, CreateConnectionFromConnectorPreparation, CreateConnectionFromConnectorPreparationRequest, CreateConnectionFromOutletPreparation, CreateConnectionFromOutletPreparationRequest, CreateConnectionFromOutputPreparation, CreateConnectionFromOutputPreparationRequest, CreateConnectionHandler, CreateConnectionMarkers, CreateConnectionMarkersRequest, CreateConnectionPreparation, CreateConnectionPreparationRequest, CreateDragNodeHandler, CreateDragNodeHandlerRequest, CreateDragNodeHierarchy, CreateDragNodeHierarchyRequest, DRAG_AND_DROP_COMMON_PROVIDERS, DRAG_AUTO_PAN_PROVIDERS, DRAG_CANVAS_PROVIDERS, DRAG_CONNECTIONS_PROVIDERS, DRAG_DROP_TO_GROUP_PROVIDERS, DRAG_EXTERNAL_ITEM_HANDLER_KIND, DRAG_EXTERNAL_ITEM_HANDLER_TYPE, DRAG_EXTERNAL_ITEM_PROVIDERS, DRAG_MINIMAP_HANDLER_KIND, DRAG_MINIMAP_HANDLER_TYPE, DRAG_MINIMAP_PROVIDERS, DRAG_NODE_HANDLER_KIND, DRAG_NODE_HANDLER_TYPE, DRAG_SELECTION_AREA_PROVIDERS, DRAG_SELECT_BY_POINTER_PROVIDERS, DeltaClamp, Deprecated, DetectConnectionsUnderDragNode, DetectConnectionsUnderDragNodeRequest, DisableConnectionWorker, DisableConnectionWorkerRequest, DownstreamConnectionsSelectionStrategy, DragAndDropBase, DragCanvasFinalize, DragCanvasFinalizeRequest, DragCanvasHandler, DragCanvasPreparation, DragCanvasPreparationRequest, DragConnectionWaypointFinalize, DragConnectionWaypointFinalizeRequest, DragConnectionWaypointHandler, DragConnectionWaypointPreparation, DragConnectionWaypointPreparationRequest, DragExternalItemCreatePlaceholder, DragExternalItemCreatePlaceholderRequest, DragExternalItemCreatePreview, DragExternalItemCreatePreviewRequest, DragExternalItemFinalize, DragExternalItemFinalizeRequest, DragExternalItemHandler, DragExternalItemPreparation, DragExternalItemPreparationRequest, DragHandlerBase, DragHandlerInjector, DragMinimapFinalize, DragMinimapFinalizeRequest, DragMinimapHandler, DragMinimapPreparation, DragMinimapPreparationRequest, DragNodeConnectionBothSidesHandler, DragNodeConnectionHandlerBase, DragNodeConnectionSourceHandler, DragNodeConnectionTargetHandler, DragNodeDeltaConstraints, DragNodeFinalize, DragNodeFinalizeRequest, DragNodeHandler, DragNodeHierarchy, DragNodeItemHandler, DragNodePreparation, DragNodePreparationRequest, DropToGroupFinalize, DropToGroupFinalizeRequest, DropToGroupHandler, DropToGroupPreparation, DropToGroupPreparationRequest, ECanvasRedrawContext, EFCanvasLayer, EFConnectableSide, EFConnectionBehavior, EFConnectionConnectableSide, EFConnectionType, EFFlowFeatureKind, EFLayoutDirection, EFLayoutMode, EFMarkerType, EFReflowAxis, EFReflowCollision, EFReflowDeltaSource, EFReflowMode, EFReflowScope, EFResizeHandleType, EFZoomDirection, EMPTY_REFLOW_PLAN, EdgeBasedDeltaCalculator, EmitConnectionsChanges, EmitConnectionsChangesRequest, EmitEndDragSequenceEvent, EmitEndDragSequenceEventRequest, EmitSelectionChangeEvent, EmitSelectionChangeEventRequest, EmitStartDragSequenceEvent, EmitStartDragSequenceEventRequest, EnsureConnectionWorker, EnsureConnectionWorkerRequest, EventExtensions, ExternalRectConstraint, FA11yAnnouncer, FA11yController, FAutoPan, FAutoPanBase, FBackgroundBase, FBackgroundComponent, FCache, FCacheConnector, FCacheConnectorKeyFactory, FCacheNode, FCanvasBase, FCanvasChangeEvent, FCanvasComponent, FChannel, FChannelHub, FCirclePatternComponent, FClickConnectFlow, FComponentsStore, FConnectionBase, FConnectionComponent, FConnectionComponentsParent, FConnectionContent, FConnectionContentBase, FConnectionDragHandleBase, FConnectionDragHandleEnd, FConnectionDragHandleStart, FConnectionForCreateComponent, FConnectionGradient, FConnectionGradientBase, FConnectionGradientRenderer, FConnectionGradientRendererBase, FConnectionMarker, FConnectionMarkerArrow, FConnectionMarkerBase, FConnectionMarkerCircle, FConnectionMarkerRegistry, FConnectionPath, FConnectionPathBase, FConnectionRegistry, FConnectionSelection, FConnectionSelectionBase, FConnectionWaypoints, FConnectionWaypointsBase, FConnectionWaypointsChangedEvent, FConnectorBase, FConnectorDirective, FConnectorRegistry, FControlSchemeController, FCreateConnectionEvent, FCreateConnectionSession, FCreateNodeEvent, FDeleteSelectedEvent, FDragBlockerDirective, FDragExternalItemStartEventData, FDragHandleDirective, FDragHandlerResult, FDragNodeStartEventData, FDragStartedEvent, FDraggableBase, FDraggableDataContext, FDraggableDirective, FDropToGroupEvent, FExternalItem, FExternalItemBase, FExternalItemPlaceholder, FExternalItemPreview, FExternalItemService, FFlowBase, FFlowComponent, FFlowModule, FFlowState, FFlowStateController, FGroupDirective, FIdRegistryBase, FLayoutController, FLayoutEngine, FLineAlignmentComponent, FMagneticLines, FMagneticLinesBase, FMagneticRects, FMagneticRectsBase, FMinimapBase, FMinimapCanvasDirective, FMinimapComponent, FMinimapFlowDirective, FMinimapState, FMinimapViewDirective, FMoveNodesEvent, FNodeBase, FNodeConnectionsIntersectionEvent, FNodeDirective, FNodeInputBase, FNodeInputDirective, FNodeIntersectedWithConnections, FNodeOutletBase, FNodeOutletDirective, FNodeOutputBase, FNodeOutputDirective, FNodeRegistry, FReassignConnectionEvent, FRectPatternComponent, FReflowBaselineTracker, FReflowController, FReflowCycleGuard, FReflowIgnore, FReflowIgnoreRegistry, FReflowOrchestrator, FReflowPlanner, FResizeChannel, FResizeHandleDirective, FResizeNodeStartEventData, FRotateHandleDirective, FRotateNodeStartEventData, FSelectionArea, FSelectionAreaBase, FSelectionChangeEvent, FSingleRegistryBase, FSnapConnectionComponent, FSnapTargetChangeEvent, FSourceConnectorBase, FVirtualFor, FZoomBase, FZoomDirective, F_A11Y_CONFIG, F_AUTO_PAN_PROVIDERS, F_BACKGROUND, F_BACKGROUND_FEATURES, F_BACKGROUND_PATTERN, F_BACKGROUND_PROVIDERS, F_CACHE_FEATURES, F_CACHE_OPTIONS, F_CANVAS, F_CANVAS_CONFIG, F_CANVAS_FEATURES, F_CANVAS_PROVIDERS, F_CONNECTION_BUILDERS, F_CONNECTION_COMPONENTS_PARENT, F_CONNECTION_CONTENT, F_CONNECTION_DRAG_HANDLE_END, F_CONNECTION_DRAG_HANDLE_START, F_CONNECTION_FEATURES, F_CONNECTION_FLOW, F_CONNECTION_GRADIENT, F_CONNECTION_IMPORTS_EXPORTS, F_CONNECTION_MARKER, F_CONNECTION_PATH, F_CONNECTION_PROVIDERS, F_CONNECTION_SELECTION, F_CONNECTION_WAYPOINTS, F_CONNECTOR, F_CONNECTORS_FEATURES, F_CONNECTORS_PROVIDERS, F_CONTROL_SCHEME_CONFIG, F_CSS_CLASS, F_DEFAULT_A11Y_CONFIG, F_DEFAULT_A11Y_KEYS, F_DEFAULT_A11Y_MESSAGES, F_DEFAULT_CONTROL_SCHEME, F_DEFAULT_LAYER_ORDER, F_DRAGGABLE_FEATURES, F_DRAGGABLE_PROVIDERS, F_DRAG_SELECT_CONTROL_SCHEME, F_EXTERNAL_ITEM, F_EXTERNAL_ITEM_PROVIDERS, F_FLOW, F_FLOW_CONFIG, F_FLOW_FEATURES, F_FLOW_PROVIDERS, F_FLOW_STATE_CONFIG, F_LAYOUT, F_LAYOUT_OPTIONS, F_LINE_ALIGNMENT_PROVIDERS, F_MAGNETIC_LINES, F_MAGNETIC_LINES_PROVIDERS, F_MAGNETIC_RECTS, F_MAGNETIC_RECTS_PROVIDERS, F_MINIMAP_BASE, F_MINIMAP_FEATURES, F_MINIMAP_PROVIDERS, F_NODE, F_NODE_FEATURES, F_NODE_INPUT, F_NODE_OUTLET, F_NODE_OUTPUT, F_NODE_PROVIDERS, F_REFLOW_CONFIG, F_REFLOW_PROVIDERS, F_SCROLL_PAN_CONTROL_SCHEME, F_SELECTED_CLASS, F_SELECTION_AREA_PROVIDERS, F_SELECTION_FEATURES, F_STORAGE_PROVIDERS, F_VIRTUAL_FOR_PROVIDERS, F_ZOOM, F_ZOOM_FEATURES, F_ZOOM_PROVIDERS, FindConnectableConnectorUsingPriorityAndPosition, FindConnectableConnectorUsingPriorityAndPositionRequest, FitToChildNodesAndGroups, FitToChildNodesAndGroupsRequest, FitToFlow, FitToFlowRequest, GET_FLOW_STATE_PROVIDERS, GetCachedFCacheRect, GetCachedFCacheRectRequest, GetChildNodeIds, GetChildNodeIdsRequest, GetConnectorRectReference, GetConnectorRectReferenceRequest, GetCurrentSelection, GetCurrentSelectionRequest, GetDeepChildrenNodesAndGroups, GetDeepChildrenNodesAndGroupsRequest, GetFlow, GetFlowRequest, GetNodePadding, GetNodePaddingRequest, GetNormalizedConnectorRect, GetNormalizedConnectorRectRequest, GetNormalizedElementRect, GetNormalizedElementRectRequest, GetNormalizedParentNodeRect, GetNormalizedParentNodeRectRequest, GetNormalizedPoint, GetNormalizedPointRequest, GetParentNodes, GetParentNodesRequest, GlobalScopeFilter, GridSnapper, GroupScopeFilter, HandleConnectionWorkerMessage, HandleConnectionWorkerMessageRequest, IMouseEvent, INSTANCES, IPointerEvent, IPointerUpEvent, ITouchDownEvent, ITouchMoveEvent, InitializeDragSequence, InitializeDragSequenceRequest, InputCanvasPosition, InputCanvasPositionRequest, InputCanvasScale, InputCanvasScaleRequest, InvalidateFCacheNode, InvalidateFCacheNodeRequest, IsArrayHasParentNode, IsArrayHasParentNodeRequest, IsConnectionRedrawCurrent, IsConnectionRedrawCurrentRequest, IsConnectionWorkerEnabled, IsConnectionWorkerEnabledRequest, IsDragStarted, IsDragStartedRequest, ListenConnectionsChanges, ListenConnectionsChangesRequest, ListenNodesChanges, ListenNodesChangesRequest, ListenTransformChanges, ListenTransformChangesRequest, LogExecutionTime, MOUSE_EVENT_IGNORE_TIME, MagneticLineElement, MagneticLineRenderer, MagneticLinesHandler, MagneticLinesPreparation, MagneticLinesPreparationRequest, MagneticRectElement, MagneticRectsHandler, MagneticRectsPreparation, MagneticRectsPreparationRequest, MagneticRectsRenderer, MarkConnectableConnectors, MarkConnectableConnectorsRequest, MarkConnectionConnectorsAsConnected, MarkConnectionConnectorsAsConnectedRequest, MinimapCalculateViewRect, MinimapCalculateViewRectRequest, MinimapCalculateViewport, MinimapCalculateViewportRequest, MinimapDrawNodes, MinimapDrawNodesRequest, MinimapNodeRects, MoveFrontElementsBeforeTargetElement, MoveFrontElementsBeforeTargetElementRequest, NODE_PROVIDERS, NODE_RESIZE_PROVIDERS, NODE_ROTATE_PROVIDERS, NotifyFullRendered, NotifyFullRenderedRequest, NotifyNodesRendered, NotifyNodesRenderedRequest, NotifyTransformChanged, NotifyTransformChangedRequest, OnPointerMove, OnPointerMoveRequest, PINCH_TO_ZOOM_PROVIDERS, PinchToZoomFinalize, PinchToZoomFinalizeRequest, PinchToZoomHandler, PinchToZoomPreparation, PinchToZoomPreparationRequest, Polyline, PolylineContentAlign, PolylineContentPlace, PolylineSampler, PrepareDragSequence, PrepareDragSequenceRequest, PreventDefaultIsExternalItem, PreventDefaultIsExternalItemRequest, QueueConnectionRedraw, QueueConnectionRedrawRequest, QueueConnectionRedrawState, RESIZE_DIRECTIONS, RESIZE_NODE_HANDLER_KIND, RESIZE_NODE_HANDLER_TYPE, ROTATE_NODE_HANDLER_KIND, ROTATE_NODE_HANDLER_TYPE, ReadNodeBoundsWithPaddings, ReadNodeBoundsWithPaddingsRequest, ReadNodeBoundsWithPaddingsResponse, ReassignConnectionFinalize, ReassignConnectionFinalizeRequest, ReassignConnectionHandler, ReassignConnectionPreparation, ReassignConnectionPreparationRequest, ReassignConnectionSourceHandler, ReassignConnectionTargetHandler, RedrawCanvasWithAnimation, RedrawCanvasWithAnimationRequest, RedrawConnections, RedrawConnectionsRequest, RegisterFCacheConnector, RegisterFCacheConnectorRequest, RegisterFCacheNode, RegisterFCacheNodeRequest, RegisterPluginInstance, RegisterPluginInstanceRequest, RemoveCanvasFromStore, RemoveCanvasFromStoreRequest, RemoveConnectionForCreateFromStore, RemoveConnectionForCreateFromStoreRequest, RemoveConnectionFromStore, RemoveConnectionFromStoreRequest, RemoveConnectionMarkerFromStore, RemoveConnectionMarkerFromStoreRequest, RemoveConnectionWaypoint, RemoveConnectionWaypointRequest, RemoveConnectorFromStore, RemoveConnectorFromStoreRequest, RemoveDndFromStore, RemoveDndFromStoreRequest, RemoveFlowFromStore, RemoveFlowFromStoreRequest, RemoveNodeFromStore, RemoveNodeFromStoreRequest, RemovePluginInstance, RemovePluginInstanceRequest, RemoveSnapConnectionFromStore, RemoveSnapConnectionFromStoreRequest, RenderConnection, RenderConnectionFromGeometry, RenderConnectionFromGeometryRequest, RenderConnectionRequest, RenderConnectionWithLine, RenderConnectionWithLineRequest, RenderLifecycleState, ResetConnectionWorkerRuntime, ResetConnectionWorkerRuntimeRequest, ResetRenderLifecycle, ResetRenderLifecycleRequest, ResetScale, ResetScaleAndCenter, ResetScaleAndCenterRequest, ResetScaleRequest, ResetZoom, ResetZoomRequest, ResizeNodeConnectionBothSidesHandler, ResizeNodeConnectionHandlerBase, ResizeNodeConnectionSourceHandler, ResizeNodeConnectionTargetHandler, ResizeNodeFinalize, ResizeNodeFinalizeRequest, ResizeNodeHandler, ResizeNodePreparation, ResizeNodePreparationRequest, ResolveConnectableOutputForOutlet, ResolveConnectableOutputForOutletRequest, ResolveConnectionEndpointRect, ResolveConnectionEndpointRectRequest, ResolveConnectionEndpointRotationContext, ResolveConnectionEndpointRotationContextRequest, ResolveConnectionEndpoints, ResolveConnectionEndpointsRequest, ResolveConnectionGeometry, ResolveConnectionGeometryRequest, RotateNodeFinalize, RotateNodeFinalizeRequest, RotateNodeHandler, RotateNodePreparation, RotateNodePreparationRequest, RunAutoPanFrame, RunAutoPanFrameRequest, RunConnectionRedrawSlice, RunConnectionRedrawSliceRequest, RunConnectionWorker, RunConnectionWorkerBatch, RunConnectionWorkerBatchRequest, RunConnectionWorkerRequest, RunDevDiagnostics, RunDevDiagnosticsRequest, ScheduleAutoPanFrame, ScheduleAutoPanFrameRequest, ScrollCanvas, ScrollCanvasRequest, Select, SelectAll, SelectAllRequest, SelectAndUpdateNodeLayer, SelectAndUpdateNodeLayerRequest, SelectByPointer, SelectByPointerRequest, SelectRequest, SelectionAreaFinalize, SelectionAreaFinalizeRequest, SelectionAreaHandler, SelectionAreaPreparation, SelectionAreaPreparationRequest, SetBackgroundTransform, SetBackgroundTransformRequest, SetFCacheConnectorRect, SetFCacheConnectorRectRequest, SetFCacheNodeRect, SetFCacheNodeRectRequest, SetZoom, SetZoomRequest, ShouldUseConnectionWorker, ShouldUseConnectionWorkerRequest, SortDropCandidatesByLayer, SortDropCandidatesByLayerRequest, SortItemLayers, SortItemLayersRequest, SortItemsByParent, SortItemsByParentRequest, SortNodeLayers, SortNodeLayersRequest, StartConnectionRedraw, StartConnectionRedrawRequest, StartConnectionWorkerRedraw, StartConnectionWorkerRedrawRequest, StopAutoPan, StopAutoPanRequest, StopCollisionResolver, UnmarkConnectableConnectors, UnmarkConnectableConnectorsRequest, UnregisterFCacheConnector, UnregisterFCacheConnectorRequest, UnregisterFCacheNode, UnregisterFCacheNodeRequest, UpdateFCacheRectByElement, UpdateFCacheRectByElementRequest, UpdateItemAndChildrenLayers, UpdateItemAndChildrenLayersRequest, UpdateNodeWhenStateOrSizeChanged, UpdateNodeWhenStateOrSizeChangedRequest, UpdateScale, UpdateScaleRequest, WaitForConnectionsRendered, WaitForConnectionsRenderedRequest, XRangeSelectionStrategy, afterNextPaint, buildConnectionAnchors, buildCornerMidPointsAndApplyOffsets, calculateAutoPanAxisDelta, calculateAutoPanDelta, calculateCenterBetweenPoints, calculateCornerApex, calculateCurveCandidates, calculateDifferenceAfterRotation, calculateMagneticGuides, calculateMagneticRects, calculatePointerInFlow, calculatePolylineCandidates, calculatePositionAfterRotation, calculateSmoothControlPoint, castToConnectorType, coerceMarkerType, computeEdgeDeltas, createConnectionDomIdentifier, createConnectionSelectionDomIdentifier, createConnectionWorkerUrl, createGradientDomIdentifier, createGradientDomUrl, createMultiCubicPath, createSVGElement, createSegmentLinePath, cubicBezierAtT, debounceAnimationFrame, debounceMicrotask, debounceTime, defaultEventTrigger, determineSide, expandRectByOverflow, fDiagnosticMessage, fInstanceKey, fProvideCache, fSuppressDevWarnings, fWarnOnce, filterConnectableTargets, findExistingWaypoint, findNodeOrGroupContaining, findSourceConnector, findSpatialNeighbor, findTargetConnector, findWaypointCandidate, fixedCenterBehavior, fixedOutboundBehavior, floatingBehavior, getAllSourceConnectors, getAllTargetConnectors, getExternalItemHost, infinityMinMax, injectFlowState, isCalculateMode, isConnectionWorkerRuntimeSupported, isConnector, isDragBlocker, isDragExternalItemHandler, isDragHandleEnd, isDragHandleStart, isDragMinimapHandler, isDragNodeHandler, isExternalItem, isFDevMode, isMobile, isNode, isNodeOutlet, isNodeOutput, isOnFlowBackground, isOutletConnector, isPointerInsidePoint, isPointerInsideStartOrEndDragHandles, isResizeNodeHandler, isRotateHandle, isRotateNodeHandler, isSourceConnector, isTargetConnector, isValidEventTrigger, mergeA11yConfig, mergeControlSchemeConfig, mergeFCanvasConfig, mergeFlowStateConfig, mergeLayoutNodes, mergePointChains, mergeReflowConfig, middleButtonEventTrigger, mixinChangeSelection, mixinChangeVisibility, normalizeFlowLayoutData, normalizePolyline, notifyOnStart, pickWaypoint, primaryButtonEventTrigger, provideFFlow, provideFLayout, rebaseAutoPanPointerDownPosition, rectFromPoint, requireSourceConnector, requireTargetConnector, resolveAutoPanMode, resolveConnectionWorkerRuntime, resolveLayerOrder, revokeConnectionWorkerUrl, sampleCubicBezierUniform, sampleMultiCubicUniform, stringAttribute, takeOne, transitionEnd, withA11y, withConnectionFlow, withControlScheme, withFCanvas, withFlowState, withReflowOnResize, withinSnapThreshold };
|
|
24427
24854
|
//# sourceMappingURL=foblex-flow.mjs.map
|