@foblex/flow 17.8.0 → 17.8.2
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/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior-request.d.ts +12 -0
- package/domain/f-connection/calculate-connection-line-by-behavior/{calculate-connection-line-by-behavior.execution.d.ts → calculate-connection-line-by-behavior.d.ts} +4 -4
- package/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.d.ts +2 -2
- package/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.d.ts +2 -2
- package/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.d.ts +2 -2
- package/domain/f-connection/calculate-connection-line-by-behavior/index.d.ts +2 -2
- package/domain/f-connection/providers.d.ts +2 -2
- package/domain/f-connection/redraw-connections/redraw-connections.execution.d.ts +2 -2
- package/domain/f-connectors/add-input-to-store/add-input-to-store-request.d.ts +2 -2
- package/domain/f-connectors/add-input-to-store/add-input-to-store.d.ts +12 -0
- package/domain/f-connectors/add-input-to-store/index.d.ts +1 -1
- package/domain/f-connectors/add-outlet-to-store/add-outlet-to-store-request.d.ts +2 -2
- package/domain/f-connectors/add-outlet-to-store/{add-outlet-to-store.execution.d.ts → add-outlet-to-store.d.ts} +5 -5
- package/domain/f-connectors/add-outlet-to-store/index.d.ts +1 -1
- package/domain/f-connectors/add-output-to-store/add-output-to-store-request.d.ts +2 -2
- package/domain/f-connectors/add-output-to-store/{add-output-to-store.execution.d.ts → add-output-to-store.d.ts} +5 -5
- package/domain/f-connectors/add-output-to-store/index.d.ts +1 -1
- package/domain/f-connectors/{find-closest-connector/find-closest-connector.request.d.ts → calculate-closest-connector/calculate-closest-connector-request.d.ts} +3 -3
- package/domain/f-connectors/calculate-closest-connector/calculate-closest-connector.d.ts +16 -0
- package/domain/f-connectors/calculate-closest-connector/index.d.ts +2 -0
- package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.execution.d.ts +3 -3
- package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.d.ts +2 -2
- package/domain/f-connectors/get-all-can-be-connected-source-connectors-and-rects/get-all-can-be-connected-source-connectors-and-rects.execution.d.ts +2 -2
- package/domain/f-connectors/get-all-can-be-connected-source-connectors-and-rects/get-all-can-be-connected-source-connectors-and-rects.request.d.ts +2 -2
- package/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.d.ts +2 -2
- package/domain/f-connectors/get-connector-and-rect/{get-connector-and-rect.execution.d.ts → get-connector-and-rect.d.ts} +4 -4
- package/domain/f-connectors/get-connector-and-rect/index.d.ts +1 -1
- package/domain/f-connectors/index.d.ts +1 -1
- package/domain/f-connectors/mark-connectable-connectors/index.d.ts +2 -2
- package/domain/f-connectors/mark-connectable-connectors/{mark-connectable-connectors.request.d.ts → mark-connectable-connectors-request.d.ts} +2 -2
- package/domain/f-connectors/mark-connectable-connectors/{mark-connectable-connectors.execution.d.ts → mark-connectable-connectors.d.ts} +5 -5
- package/domain/f-connectors/providers.d.ts +11 -11
- package/domain/f-connectors/remove-input-from-store/index.d.ts +1 -1
- package/domain/f-connectors/remove-input-from-store/remove-input-from-store-request.d.ts +2 -2
- package/domain/f-connectors/remove-input-from-store/{remove-input-from-store.execution.d.ts → remove-input-from-store.d.ts} +4 -4
- package/domain/f-connectors/unmark-connectable-connectors/index.d.ts +2 -2
- package/domain/f-connectors/unmark-connectable-connectors/{unmark-connectable-connectors.request.d.ts → unmark-connectable-connectors-request.d.ts} +2 -2
- package/domain/f-connectors/unmark-connectable-connectors/{unmark-connectable-connectors.execution.d.ts → unmark-connectable-connectors.d.ts} +5 -5
- package/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.d.ts +1 -1
- package/domain/providers.d.ts +1 -1
- package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior-request.mjs +16 -0
- package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.mjs +32 -0
- package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.mjs +4 -4
- package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.mjs +8 -4
- package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.mjs +10 -10
- package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/index.mjs +3 -3
- package/esm2022/domain/f-connection/providers.mjs +3 -3
- package/esm2022/domain/f-connection/redraw-connections/redraw-connections-request.mjs +1 -1
- package/esm2022/domain/f-connection/redraw-connections/redraw-connections.execution.mjs +9 -9
- package/esm2022/domain/f-connectors/add-input-to-store/add-input-to-store-request.mjs +4 -4
- package/esm2022/domain/f-connectors/add-input-to-store/add-input-to-store.mjs +25 -0
- package/esm2022/domain/f-connectors/add-input-to-store/index.mjs +2 -2
- package/esm2022/domain/f-connectors/add-outlet-to-store/add-outlet-to-store-request.mjs +4 -4
- package/esm2022/domain/f-connectors/add-outlet-to-store/add-outlet-to-store.mjs +25 -0
- package/esm2022/domain/f-connectors/add-outlet-to-store/index.mjs +2 -2
- package/esm2022/domain/f-connectors/add-output-to-store/add-output-to-store-request.mjs +4 -4
- package/esm2022/domain/f-connectors/add-output-to-store/add-output-to-store.mjs +25 -0
- package/esm2022/domain/f-connectors/add-output-to-store/index.mjs +2 -2
- package/esm2022/domain/f-connectors/calculate-closest-connector/calculate-closest-connector-request.mjs +10 -0
- package/esm2022/domain/f-connectors/calculate-closest-connector/calculate-closest-connector.mjs +49 -0
- package/esm2022/domain/f-connectors/calculate-closest-connector/index.mjs +3 -0
- package/esm2022/domain/f-connectors/find-connectable-connector-using-priority-and-position/find-connectable-connector-using-priority-and-position.execution.mjs +9 -6
- package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.execution.mjs +14 -14
- package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.mjs +4 -4
- package/esm2022/domain/f-connectors/get-all-can-be-connected-source-connectors-and-rects/get-all-can-be-connected-source-connectors-and-rects.execution.mjs +9 -9
- package/esm2022/domain/f-connectors/get-all-can-be-connected-source-connectors-and-rects/get-all-can-be-connected-source-connectors-and-rects.request.mjs +4 -4
- package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.mjs +4 -4
- package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.mjs +31 -0
- package/esm2022/domain/f-connectors/get-connector-and-rect/index.mjs +2 -2
- package/esm2022/domain/f-connectors/index.mjs +2 -2
- package/esm2022/domain/f-connectors/mark-connectable-connectors/index.mjs +3 -3
- package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors-request.mjs +8 -0
- package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors.mjs +30 -0
- package/esm2022/domain/f-connectors/providers.mjs +20 -20
- package/esm2022/domain/f-connectors/remove-input-from-store/index.mjs +2 -2
- package/esm2022/domain/f-connectors/remove-input-from-store/remove-input-from-store-request.mjs +4 -4
- package/esm2022/domain/f-connectors/remove-input-from-store/remove-input-from-store.mjs +25 -0
- package/esm2022/domain/f-connectors/unmark-connectable-connectors/index.mjs +3 -3
- package/esm2022/domain/f-connectors/unmark-connectable-connectors/{unmark-connectable-connectors.request.mjs → unmark-connectable-connectors-request.mjs} +4 -4
- package/esm2022/domain/f-connectors/unmark-connectable-connectors/unmark-connectable-connectors.mjs +30 -0
- package/esm2022/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.mjs +4 -4
- package/esm2022/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.mjs +12 -6
- package/esm2022/domain/f-node/calculate-input-connections/calculate-input-connections.mjs +3 -6
- package/esm2022/domain/f-node/calculate-output-connections/calculate-output-connections.mjs +3 -6
- package/esm2022/f-connection/common/domain/f-bezier.path-builder.mjs +26 -10
- package/esm2022/f-connection/common/domain/f-segment.path-builder.mjs +41 -23
- package/esm2022/f-connection/common/domain/f-straight.path-builder.mjs +9 -3
- package/esm2022/f-connection/common/f-connection-base.mjs +34 -25
- package/esm2022/f-connection/common/f-connection-text/f-connection-text-path.directive.mjs +17 -27
- package/esm2022/f-connection/common/f-connection-text/f-connection-text.component.mjs +20 -33
- package/esm2022/f-connection/common/f-gradient/f-connection-gradient.component.mjs +17 -27
- package/esm2022/f-connection/common/f-path/f-connection-path.component.mjs +16 -26
- package/esm2022/f-connection/common/f-selection/f-connection-selection.component.mjs +10 -20
- package/esm2022/f-connection/common/i-has-connection-from-to.mjs +1 -1
- package/esm2022/f-connection/f-connection/f-connection.component.mjs +24 -25
- package/esm2022/f-connection/f-connection-builder/i-f-connection-builder-response.mjs +1 -1
- package/esm2022/f-connection/f-connection-center/f-connection-center.directive.mjs +21 -4
- package/esm2022/f-connection/f-connection-content/f-connection-content.mjs +96 -0
- package/esm2022/f-connection/f-connection-content/index.mjs +3 -0
- package/esm2022/f-connection/f-connection-content/polyline-content-engine/i-polyline-content.mjs +2 -0
- package/esm2022/f-connection/f-connection-content/polyline-content-engine/index.mjs +6 -0
- package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-content-align.mjs +6 -0
- package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-content-layout-engine.mjs +29 -0
- package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-content-place.mjs +65 -0
- package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-sampler-result.mjs +2 -0
- package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-tangent.mjs +2 -0
- package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/index.mjs +5 -0
- package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline-sampler.mjs +143 -0
- package/esm2022/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline.mjs +68 -0
- package/esm2022/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +17 -21
- package/esm2022/f-connection/f-marker/f-marker-base.mjs +2 -8
- package/esm2022/f-connection/f-marker/f-marker.directive.mjs +13 -22
- package/esm2022/f-connection/f-snap-connection/f-snap-connection.component.mjs +17 -21
- package/esm2022/f-connection/index.mjs +2 -1
- package/esm2022/f-connectors/f-connector-base.mjs +1 -1
- package/esm2022/f-connectors/f-node-input/f-node-input-base.mjs +2 -2
- package/esm2022/f-connectors/f-node-input/f-node-input.directive.mjs +34 -32
- package/esm2022/f-connectors/f-node-outlet/f-node-outlet-base.mjs +6 -6
- package/esm2022/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +23 -26
- package/esm2022/f-connectors/f-node-output/f-node-output-base.mjs +4 -4
- package/esm2022/f-connectors/f-node-output/f-node-output.directive.mjs +30 -32
- package/esm2022/f-connectors/f-source-connector-base.mjs +11 -0
- package/esm2022/f-connectors/index.mjs +2 -1
- package/esm2022/f-draggable/domain/f-drag-started-event.mjs +4 -2
- package/esm2022/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.mjs +7 -7
- package/esm2022/f-draggable/f-canvas/move-finalize/f-canvas-move-finalize.execution.mjs +2 -2
- package/esm2022/f-draggable/f-connection/f-create-connection/create-finalize/f-create-connection-finalize.execution.mjs +20 -18
- package/esm2022/f-draggable/f-connection/f-create-connection/f-create-connection.drag-handler.mjs +38 -36
- package/esm2022/f-draggable/f-connection/f-reassign-connection/f-reassign-connection.drag-handler.mjs +21 -19
- package/esm2022/f-draggable/f-connection/f-reassign-connection/f-reassign-source.drag-handler.mjs +6 -6
- package/esm2022/f-draggable/f-connection/f-reassign-connection/f-reassign-target.drag-handler.mjs +5 -5
- package/esm2022/f-draggable/f-connection/f-reassign-connection/reassign-finalize/f-reassign-connection-finalize.execution.mjs +5 -5
- package/esm2022/f-draggable/f-drag-handler/i-f-drag-handler.mjs +1 -1
- package/esm2022/f-draggable/f-draggable-base.mjs +2 -2
- package/esm2022/f-draggable/f-draggable.directive.mjs +10 -20
- package/esm2022/f-draggable/f-node-move/connection-drag-handlers/base-connection.drag-handler.mjs +3 -3
- package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/create-drag-model-from-selection.mjs +9 -12
- package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/create-input-connection-handler-and-set-to-node-handler/create-input-connection-handler-and-set-to-node-handler.mjs +5 -5
- package/esm2022/f-draggable/f-node-move/create-drag-model-from-selection/create-output-connection-handler-and-set-to-node-handler/create-output-connection-handler-and-set-to-node-handler.mjs +5 -5
- package/esm2022/f-draggable/f-node-rotate/rotate-preparation/f-node-rotate-preparation.execution.mjs +28 -16
- package/esm2022/f-node/f-node.directive.mjs +6 -2
- package/esm2022/mixins/change-selection/change-selection.mjs +5 -6
- package/esm2022/mixins/change-visibility/change-visibility.mjs +4 -3
- package/esm2022/mixins/constructor.mjs +1 -1
- package/esm2022/utils/index.mjs +2 -1
- package/esm2022/utils/string-attribute.mjs +4 -0
- package/f-connection/common/domain/f-bezier.path-builder.d.ts +2 -2
- package/f-connection/common/domain/f-segment.path-builder.d.ts +7 -7
- package/f-connection/common/f-connection-base.d.ts +13 -11
- package/f-connection/common/f-connection-text/f-connection-text-path.directive.d.ts +6 -11
- package/f-connection/common/f-connection-text/f-connection-text.component.d.ts +6 -12
- package/f-connection/common/f-gradient/f-connection-gradient.component.d.ts +5 -10
- package/f-connection/common/f-path/f-connection-path.component.d.ts +2 -7
- package/f-connection/common/f-selection/f-connection-selection.component.d.ts +2 -6
- package/f-connection/common/i-has-connection-from-to.d.ts +3 -3
- package/f-connection/f-connection/f-connection.component.d.ts +6 -6
- package/f-connection/f-connection-builder/i-f-connection-builder-response.d.ts +1 -0
- package/f-connection/f-connection-center/f-connection-center.directive.d.ts +6 -1
- package/f-connection/f-connection-content/f-connection-content.d.ts +69 -0
- package/f-connection/f-connection-content/index.d.ts +2 -0
- package/f-connection/f-connection-content/polyline-content-engine/i-polyline-content.d.ts +9 -0
- package/f-connection/f-connection-content/polyline-content-engine/index.d.ts +5 -0
- package/f-connection/f-connection-content/polyline-content-engine/polyline-content-align.d.ts +4 -0
- package/f-connection/f-connection-content/polyline-content-engine/polyline-content-layout-engine.d.ts +21 -0
- package/f-connection/f-connection-content/polyline-content-engine/polyline-content-place.d.ts +18 -0
- package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-sampler-result.d.ts +11 -0
- package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/i-tangent.d.ts +4 -0
- package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/index.d.ts +4 -0
- package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline-sampler.d.ts +60 -0
- package/f-connection/f-connection-content/polyline-content-engine/polyline-sampler/polyline.d.ts +29 -0
- package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +4 -6
- package/f-connection/f-marker/f-marker-base.d.ts +0 -3
- package/f-connection/f-marker/f-marker.directive.d.ts +4 -6
- package/f-connection/f-snap-connection/f-snap-connection.component.d.ts +4 -6
- package/f-connection/index.d.ts +1 -0
- package/f-connection/providers.d.ts +2 -2
- package/f-connectors/f-connector-base.d.ts +3 -2
- package/f-connectors/f-node-input/f-node-input-base.d.ts +3 -2
- package/f-connectors/f-node-input/f-node-input.directive.d.ts +8 -9
- package/f-connectors/f-node-outlet/f-node-outlet-base.d.ts +3 -3
- package/f-connectors/f-node-outlet/f-node-outlet.directive.d.ts +6 -8
- package/f-connectors/f-node-output/f-node-output-base.d.ts +4 -5
- package/f-connectors/f-node-output/f-node-output.directive.d.ts +7 -9
- package/f-connectors/f-source-connector-base.d.ts +7 -0
- package/f-connectors/index.d.ts +1 -0
- package/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.d.ts +1 -1
- package/f-draggable/f-canvas/move-finalize/f-canvas-move-finalize.execution.d.ts +2 -2
- package/f-draggable/f-connection/f-create-connection/create-finalize/f-create-connection-finalize.execution.d.ts +9 -9
- package/f-draggable/f-connection/f-create-connection/f-create-connection.drag-handler.d.ts +5 -5
- package/f-draggable/f-connection/f-reassign-connection/f-reassign-connection.drag-handler.d.ts +4 -4
- package/f-draggable/f-connection/f-reassign-connection/f-reassign-source.drag-handler.d.ts +5 -5
- package/f-draggable/f-connection/f-reassign-connection/f-reassign-target.drag-handler.d.ts +5 -5
- package/f-draggable/f-draggable-base.d.ts +1 -1
- package/f-draggable/f-draggable.directive.d.ts +5 -6
- package/f-draggable/f-node-rotate/rotate-preparation/f-node-rotate-preparation.execution.d.ts +1 -1
- package/f-node/f-node.directive.d.ts +1 -1
- package/fesm2022/foblex-flow.mjs +1083 -669
- package/fesm2022/foblex-flow.mjs.map +1 -1
- package/package.json +1 -1
- package/utils/index.d.ts +1 -0
- package/utils/string-attribute.d.ts +1 -0
- package/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.d.ts +0 -12
- package/domain/f-connectors/add-input-to-store/add-input-to-store.execution.d.ts +0 -12
- package/domain/f-connectors/find-closest-connector/find-closest-connector.execution.d.ts +0 -16
- package/domain/f-connectors/find-closest-connector/index.d.ts +0 -2
- package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.execution.mjs +0 -32
- package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.mjs +0 -16
- package/esm2022/domain/f-connectors/add-input-to-store/add-input-to-store.execution.mjs +0 -25
- package/esm2022/domain/f-connectors/add-outlet-to-store/add-outlet-to-store.execution.mjs +0 -25
- package/esm2022/domain/f-connectors/add-output-to-store/add-output-to-store.execution.mjs +0 -25
- package/esm2022/domain/f-connectors/find-closest-connector/find-closest-connector.execution.mjs +0 -47
- package/esm2022/domain/f-connectors/find-closest-connector/find-closest-connector.request.mjs +0 -10
- package/esm2022/domain/f-connectors/find-closest-connector/index.mjs +0 -3
- package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.execution.mjs +0 -31
- package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors.execution.mjs +0 -30
- package/esm2022/domain/f-connectors/mark-connectable-connectors/mark-connectable-connectors.request.mjs +0 -8
- package/esm2022/domain/f-connectors/remove-input-from-store/remove-input-from-store.execution.mjs +0 -25
- package/esm2022/domain/f-connectors/unmark-connectable-connectors/unmark-connectable-connectors.execution.mjs +0 -30
package/fesm2022/foblex-flow.mjs
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, Injectable, Directive, input, computed, signal, Injector, Renderer2, effect, untracked, DestroyRef, model, output, booleanAttribute, ElementRef, Input,
|
|
2
|
+
import { InjectionToken, inject, Injectable, Directive, input, computed, signal, Injector, Renderer2, effect, untracked, DestroyRef, model, output, booleanAttribute, ElementRef, Input, viewChild, Component, ChangeDetectionStrategy, Optional, Inject, isDevMode, contentChildren, numberAttribute, ViewContainerRef, TemplateRef, EventEmitter, NgZone, Output, ContentChildren, contentChild, NgModule } from '@angular/core';
|
|
3
3
|
import { RectExtensions, RoundedRect, TransformModelExtensions, PointExtensions, Point, LineExtensions, GetIntersections, SizeExtensions, findClosestAlignment, setRectToElement, adjustRectToMinSize, setRectToViewBox } from '@foblex/2d';
|
|
4
4
|
import { __decorate } from 'tslib';
|
|
5
5
|
import { FExecutionRegister, FMediator } from '@foblex/mediator';
|
|
6
|
-
import * as i1 from '@foblex/platform';
|
|
7
6
|
import { BrowserService, PlatformService, EOperationSystem } from '@foblex/platform';
|
|
8
7
|
import { normalizeDomElementId, castToEnum, isClosestElementHasClass, flatMap, getOrCreateRootNodeForViewRef, deepCloneNode, disableDragInteractions, extendStyles, getDataAttrValueFromClosestElementWithClass } from '@foblex/utils';
|
|
9
8
|
import { CommonModule } from '@angular/common';
|
|
@@ -1013,18 +1012,18 @@ function createSVGElement$1(tag, fBrowser) {
|
|
|
1013
1012
|
}
|
|
1014
1013
|
|
|
1015
1014
|
class CalculateConnectionLineByBehaviorRequest {
|
|
1016
|
-
|
|
1017
|
-
|
|
1015
|
+
sourceRect;
|
|
1016
|
+
targetRect;
|
|
1018
1017
|
behavior;
|
|
1019
|
-
|
|
1020
|
-
|
|
1018
|
+
sourceConnectableSide;
|
|
1019
|
+
targetConnectableSide;
|
|
1021
1020
|
static fToken = Symbol('CalculateConnectionLineByBehaviorRequest');
|
|
1022
|
-
constructor(
|
|
1023
|
-
this.
|
|
1024
|
-
this.
|
|
1021
|
+
constructor(sourceRect, targetRect, behavior, sourceConnectableSide, targetConnectableSide) {
|
|
1022
|
+
this.sourceRect = sourceRect;
|
|
1023
|
+
this.targetRect = targetRect;
|
|
1025
1024
|
this.behavior = behavior;
|
|
1026
|
-
this.
|
|
1027
|
-
this.
|
|
1025
|
+
this.sourceConnectableSide = sourceConnectableSide;
|
|
1026
|
+
this.targetConnectableSide = targetConnectableSide;
|
|
1028
1027
|
}
|
|
1029
1028
|
}
|
|
1030
1029
|
|
|
@@ -1126,7 +1125,7 @@ class FConnectorBase {
|
|
|
1126
1125
|
const F_NODE_INPUT = new InjectionToken('F_NODE_INPUT');
|
|
1127
1126
|
class FNodeInputBase extends FConnectorBase {
|
|
1128
1127
|
get canBeConnected() {
|
|
1129
|
-
return !this.disabled && (this.multiple ? true : !this.isConnected);
|
|
1128
|
+
return !this.disabled() && (this.multiple() ? true : !this.isConnected);
|
|
1130
1129
|
}
|
|
1131
1130
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeInputBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1132
1131
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FNodeInputBase, usesInheritance: true, ngImport: i0 });
|
|
@@ -1220,10 +1219,9 @@ function mixinChangeSelection(base) {
|
|
|
1220
1219
|
isSelected() {
|
|
1221
1220
|
return this.hostElement.classList.contains(F_SELECTED_CLASS);
|
|
1222
1221
|
}
|
|
1223
|
-
markChildrenAsSelected() {
|
|
1224
|
-
}
|
|
1225
|
-
|
|
1226
|
-
}
|
|
1222
|
+
markChildrenAsSelected() { }
|
|
1223
|
+
unmarkChildrenAsSelected() { }
|
|
1224
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1227
1225
|
constructor(...args) {
|
|
1228
1226
|
super(...args);
|
|
1229
1227
|
}
|
|
@@ -1233,11 +1231,12 @@ function mixinChangeSelection(base) {
|
|
|
1233
1231
|
function mixinChangeVisibility(base) {
|
|
1234
1232
|
return class extends base {
|
|
1235
1233
|
show() {
|
|
1236
|
-
this.hostElement.style.display =
|
|
1234
|
+
this.hostElement.style.display = 'unset';
|
|
1237
1235
|
}
|
|
1238
1236
|
hide() {
|
|
1239
|
-
this.hostElement.style.display =
|
|
1237
|
+
this.hostElement.style.display = 'none';
|
|
1240
1238
|
}
|
|
1239
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1241
1240
|
constructor(...args) {
|
|
1242
1241
|
super(...args);
|
|
1243
1242
|
}
|
|
@@ -1454,11 +1453,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
1454
1453
|
}]
|
|
1455
1454
|
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
1456
1455
|
|
|
1456
|
+
function infinityMinMax() {
|
|
1457
|
+
return {
|
|
1458
|
+
min: { x: -Infinity, y: -Infinity },
|
|
1459
|
+
max: { x: Infinity, y: Infinity },
|
|
1460
|
+
};
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1463
|
+
function stringAttribute(value) {
|
|
1464
|
+
return value ? `${value}` : undefined;
|
|
1465
|
+
}
|
|
1466
|
+
|
|
1457
1467
|
let uniqueId$a = 0;
|
|
1458
1468
|
class FNodeDirective extends FNodeBase {
|
|
1459
1469
|
_destroyRef = inject(DestroyRef);
|
|
1460
1470
|
_mediator = inject(FMediator);
|
|
1461
|
-
fId = input(`f-node-${uniqueId$a++}`, {
|
|
1471
|
+
fId = input(`f-node-${uniqueId$a++}`, {
|
|
1472
|
+
alias: 'fNodeId',
|
|
1473
|
+
transform: (value) => stringAttribute(value) || `f-node-${uniqueId$a++}`,
|
|
1474
|
+
});
|
|
1462
1475
|
fParentId = input(null, {
|
|
1463
1476
|
alias: 'fNodeParentId',
|
|
1464
1477
|
});
|
|
@@ -1569,26 +1582,36 @@ const F_NODE_PROVIDERS = [
|
|
|
1569
1582
|
|
|
1570
1583
|
let uniqueId$9 = 0;
|
|
1571
1584
|
class FNodeInputDirective extends FNodeInputBase {
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
fId = `f-node-input-${uniqueId$9++}
|
|
1576
|
-
|
|
1577
|
-
|
|
1585
|
+
hostElement = inject(ElementRef).nativeElement;
|
|
1586
|
+
_mediator = inject(FMediator);
|
|
1587
|
+
_node = inject(F_NODE);
|
|
1588
|
+
fId = input(`f-node-input-${uniqueId$9++}`, {
|
|
1589
|
+
alias: 'fInputId',
|
|
1590
|
+
transform: (value) => stringAttribute(value) || `f-node-input-${uniqueId$9++}`,
|
|
1591
|
+
});
|
|
1592
|
+
category = input(undefined, {
|
|
1593
|
+
alias: 'fInputCategory',
|
|
1594
|
+
transform: stringAttribute,
|
|
1595
|
+
});
|
|
1596
|
+
multiple = input(true, {
|
|
1597
|
+
alias: 'fInputMultiple',
|
|
1598
|
+
transform: booleanAttribute,
|
|
1599
|
+
});
|
|
1600
|
+
disabled = input(false, {
|
|
1601
|
+
alias: 'fInputDisabled',
|
|
1602
|
+
transform: booleanAttribute,
|
|
1603
|
+
});
|
|
1578
1604
|
userFConnectableSide = EFConnectableSide.AUTO;
|
|
1579
1605
|
get fNodeId() {
|
|
1580
|
-
return this.
|
|
1581
|
-
}
|
|
1582
|
-
get hostElement() {
|
|
1583
|
-
return this._elementReference.nativeElement;
|
|
1606
|
+
return this._node.fId();
|
|
1584
1607
|
}
|
|
1585
1608
|
ngOnInit() {
|
|
1586
|
-
this.
|
|
1587
|
-
this.
|
|
1609
|
+
this._mediator.execute(new AddInputToStoreRequest(this));
|
|
1610
|
+
this._node.addConnector(this);
|
|
1588
1611
|
}
|
|
1589
1612
|
ngOnChanges(changes) {
|
|
1590
1613
|
if (changes['userFConnectableSide']) {
|
|
1591
|
-
this.
|
|
1614
|
+
this._node.refresh();
|
|
1592
1615
|
}
|
|
1593
1616
|
}
|
|
1594
1617
|
setConnected(toConnector) {
|
|
@@ -1602,35 +1625,26 @@ class FNodeInputDirective extends FNodeInputBase {
|
|
|
1602
1625
|
this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_NOT_CONNECTABLE, !this.canBeConnected);
|
|
1603
1626
|
}
|
|
1604
1627
|
ngOnDestroy() {
|
|
1605
|
-
this.
|
|
1606
|
-
this.
|
|
1628
|
+
this._node.removeConnector(this);
|
|
1629
|
+
this._mediator.execute(new RemoveInputFromStoreRequest(this));
|
|
1607
1630
|
}
|
|
1608
1631
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeInputDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1609
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
1632
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FNodeInputDirective, selector: "[fNodeInput]", inputs: { fId: { classPropertyName: "fId", publicName: "fInputId", isSignal: true, isRequired: false, transformFunction: null }, category: { classPropertyName: "category", publicName: "fInputCategory", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "fInputMultiple", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "fInputDisabled", isSignal: true, isRequired: false, transformFunction: null }, userFConnectableSide: { classPropertyName: "userFConnectableSide", publicName: "fInputConnectableSide", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fInputConnectableSide', EFConnectableSide) } }, host: { properties: { "attr.data-f-input-id": "fId()", "class.f-node-input-multiple": "multiple", "class.f-node-input-disabled": "disabled()" }, classAttribute: "f-component f-node-input" }, providers: [{ provide: F_NODE_INPUT, useExisting: FNodeInputDirective }], exportAs: ["fNodeInput"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
1610
1633
|
}
|
|
1611
1634
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeInputDirective, decorators: [{
|
|
1612
1635
|
type: Directive,
|
|
1613
1636
|
args: [{
|
|
1614
|
-
selector:
|
|
1637
|
+
selector: '[fNodeInput]',
|
|
1615
1638
|
exportAs: 'fNodeInput',
|
|
1616
1639
|
host: {
|
|
1617
|
-
'[attr.data-f-input-id]': 'fId',
|
|
1618
|
-
class:
|
|
1640
|
+
'[attr.data-f-input-id]': 'fId()',
|
|
1641
|
+
class: 'f-component f-node-input',
|
|
1619
1642
|
'[class.f-node-input-multiple]': 'multiple',
|
|
1620
|
-
'[class.f-node-input-disabled]': 'disabled',
|
|
1643
|
+
'[class.f-node-input-disabled]': 'disabled()',
|
|
1621
1644
|
},
|
|
1622
1645
|
providers: [{ provide: F_NODE_INPUT, useExisting: FNodeInputDirective }],
|
|
1623
1646
|
}]
|
|
1624
|
-
}], propDecorators: {
|
|
1625
|
-
type: Input,
|
|
1626
|
-
args: ['fInputId']
|
|
1627
|
-
}], multiple: [{
|
|
1628
|
-
type: Input,
|
|
1629
|
-
args: ['fInputMultiple']
|
|
1630
|
-
}], disabled: [{
|
|
1631
|
-
type: Input,
|
|
1632
|
-
args: [{ alias: 'fInputDisabled', transform: booleanAttribute }]
|
|
1633
|
-
}], userFConnectableSide: [{
|
|
1647
|
+
}], propDecorators: { userFConnectableSide: [{
|
|
1634
1648
|
type: Input,
|
|
1635
1649
|
args: [{
|
|
1636
1650
|
alias: 'fInputConnectableSide',
|
|
@@ -1638,14 +1652,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
1638
1652
|
}]
|
|
1639
1653
|
}] } });
|
|
1640
1654
|
|
|
1655
|
+
class FSourceConnectorBase extends FConnectorBase {
|
|
1656
|
+
get hasConnectionLimits() {
|
|
1657
|
+
return !!this.canBeConnectedInputs && this.canBeConnectedInputs.length > 0;
|
|
1658
|
+
}
|
|
1659
|
+
canConnectTo(targetConnector) {
|
|
1660
|
+
const candidates = [targetConnector.fId(), targetConnector.category()];
|
|
1661
|
+
return candidates.some((c) => c && this.canBeConnectedInputs?.includes(c));
|
|
1662
|
+
}
|
|
1663
|
+
}
|
|
1664
|
+
|
|
1641
1665
|
const F_NODE_OUTLET = new InjectionToken('F_NODE_OUTLET');
|
|
1642
|
-
class FNodeOutletBase extends
|
|
1643
|
-
|
|
1666
|
+
class FNodeOutletBase extends FSourceConnectorBase {
|
|
1667
|
+
_outputs = [];
|
|
1644
1668
|
get canBeConnected() {
|
|
1645
|
-
return !this.disabled && this.
|
|
1669
|
+
return !this.disabled() && this._outputs.some((output) => output.canBeConnected);
|
|
1646
1670
|
}
|
|
1647
1671
|
setOutputs(outputs) {
|
|
1648
|
-
this.
|
|
1672
|
+
this._outputs = outputs;
|
|
1649
1673
|
}
|
|
1650
1674
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeOutletBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1651
1675
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FNodeOutletBase, usesInheritance: true, ngImport: i0 });
|
|
@@ -1660,50 +1684,46 @@ function isNodeOutlet(element) {
|
|
|
1660
1684
|
|
|
1661
1685
|
let uniqueId$8 = 0;
|
|
1662
1686
|
class FNodeOutletDirective extends FNodeOutletBase {
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1687
|
+
hostElement = inject(ElementRef).nativeElement;
|
|
1688
|
+
_mediator = inject(FMediator);
|
|
1689
|
+
_node = inject(F_NODE);
|
|
1690
|
+
fId = input(`f-node-outlet-${uniqueId$8++}`, {
|
|
1691
|
+
alias: 'fOutletId',
|
|
1692
|
+
transform: (value) => stringAttribute(value) || `f-node-outlet-${uniqueId$8++}`,
|
|
1693
|
+
});
|
|
1694
|
+
disabled = input(false, {
|
|
1695
|
+
alias: 'fOutletDisabled',
|
|
1696
|
+
transform: booleanAttribute,
|
|
1697
|
+
});
|
|
1669
1698
|
fConnectableSide = EFConnectableSide.AUTO;
|
|
1670
1699
|
userFConnectableSide = EFConnectableSide.AUTO;
|
|
1671
1700
|
isConnectionFromOutlet = false;
|
|
1672
1701
|
canBeConnectedInputs = [];
|
|
1673
1702
|
get fNodeId() {
|
|
1674
|
-
return this.
|
|
1675
|
-
}
|
|
1676
|
-
get hostElement() {
|
|
1677
|
-
return this._elementReference.nativeElement;
|
|
1703
|
+
return this._node.fId();
|
|
1678
1704
|
}
|
|
1679
1705
|
ngOnInit() {
|
|
1680
|
-
this.
|
|
1706
|
+
this._mediator.execute(new AddOutletToStoreRequest(this));
|
|
1681
1707
|
}
|
|
1682
1708
|
ngOnDestroy() {
|
|
1683
|
-
this.
|
|
1709
|
+
this._mediator.execute(new RemoveOutletFromStoreRequest(this));
|
|
1684
1710
|
}
|
|
1685
1711
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeOutletDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1686
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
1712
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FNodeOutletDirective, selector: "[fNodeOutlet]", inputs: { fId: { classPropertyName: "fId", publicName: "fOutletId", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "fOutletDisabled", isSignal: true, isRequired: false, transformFunction: null }, isConnectionFromOutlet: { classPropertyName: "isConnectionFromOutlet", publicName: "isConnectionFromOutlet", isSignal: false, isRequired: false, transformFunction: null }, canBeConnectedInputs: { classPropertyName: "canBeConnectedInputs", publicName: "fCanBeConnectedInputs", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-f-outlet-id": "fId()", "class.f-node-outlet-disabled": "disabled()" }, classAttribute: "f-component f-node-outlet" }, providers: [{ provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective }], exportAs: ["fNodeOutlet"], usesInheritance: true, ngImport: i0 });
|
|
1687
1713
|
}
|
|
1688
1714
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeOutletDirective, decorators: [{
|
|
1689
1715
|
type: Directive,
|
|
1690
1716
|
args: [{
|
|
1691
|
-
selector:
|
|
1717
|
+
selector: '[fNodeOutlet]',
|
|
1692
1718
|
exportAs: 'fNodeOutlet',
|
|
1693
1719
|
host: {
|
|
1694
|
-
'[attr.data-f-outlet-id]': 'fId',
|
|
1695
|
-
class:
|
|
1696
|
-
'[class.f-node-outlet-disabled]': 'disabled',
|
|
1720
|
+
'[attr.data-f-outlet-id]': 'fId()',
|
|
1721
|
+
class: 'f-component f-node-outlet',
|
|
1722
|
+
'[class.f-node-outlet-disabled]': 'disabled()',
|
|
1697
1723
|
},
|
|
1698
1724
|
providers: [{ provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective }],
|
|
1699
1725
|
}]
|
|
1700
|
-
}], propDecorators: {
|
|
1701
|
-
type: Input,
|
|
1702
|
-
args: ['fOutletId']
|
|
1703
|
-
}], disabled: [{
|
|
1704
|
-
type: Input,
|
|
1705
|
-
args: [{ alias: 'fOutletDisabled', transform: booleanAttribute }]
|
|
1706
|
-
}], isConnectionFromOutlet: [{
|
|
1726
|
+
}], propDecorators: { isConnectionFromOutlet: [{
|
|
1707
1727
|
type: Input
|
|
1708
1728
|
}], canBeConnectedInputs: [{
|
|
1709
1729
|
type: Input,
|
|
@@ -1711,9 +1731,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
1711
1731
|
}] } });
|
|
1712
1732
|
|
|
1713
1733
|
const F_NODE_OUTPUT = new InjectionToken('F_NODE_OUTPUT');
|
|
1714
|
-
class FNodeOutputBase extends
|
|
1734
|
+
class FNodeOutputBase extends FSourceConnectorBase {
|
|
1715
1735
|
get canBeConnected() {
|
|
1716
|
-
return !this.disabled && (this.multiple ? true : !this.isConnected);
|
|
1736
|
+
return !this.disabled() && (this.multiple() ? true : !this.isConnected);
|
|
1717
1737
|
}
|
|
1718
1738
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeOutputBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1719
1739
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FNodeOutputBase, usesInheritance: true, ngImport: i0 });
|
|
@@ -1728,28 +1748,34 @@ function isNodeOutput(element) {
|
|
|
1728
1748
|
|
|
1729
1749
|
let uniqueId$7 = 0;
|
|
1730
1750
|
class FNodeOutputDirective extends FNodeOutputBase {
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
fId = `f-node-output-${uniqueId$7++}
|
|
1735
|
-
|
|
1736
|
-
|
|
1751
|
+
hostElement = inject(ElementRef).nativeElement;
|
|
1752
|
+
_mediator = inject(FMediator);
|
|
1753
|
+
_node = inject(F_NODE);
|
|
1754
|
+
fId = input(`f-node-output-${uniqueId$7++}`, {
|
|
1755
|
+
alias: 'fOutputId',
|
|
1756
|
+
transform: (value) => stringAttribute(value) || `f-node-output-${uniqueId$7++}`,
|
|
1757
|
+
});
|
|
1758
|
+
multiple = input(false, {
|
|
1759
|
+
alias: 'fOutputMultiple',
|
|
1760
|
+
transform: booleanAttribute,
|
|
1761
|
+
});
|
|
1762
|
+
disabled = input(false, {
|
|
1763
|
+
alias: 'fOutputDisabled',
|
|
1764
|
+
transform: booleanAttribute,
|
|
1765
|
+
});
|
|
1737
1766
|
userFConnectableSide = EFConnectableSide.AUTO;
|
|
1738
1767
|
isSelfConnectable = true;
|
|
1739
1768
|
canBeConnectedInputs = [];
|
|
1740
1769
|
get fNodeId() {
|
|
1741
|
-
return this.
|
|
1742
|
-
}
|
|
1743
|
-
get hostElement() {
|
|
1744
|
-
return this._elementReference.nativeElement;
|
|
1770
|
+
return this._node.fId();
|
|
1745
1771
|
}
|
|
1746
1772
|
ngOnInit() {
|
|
1747
|
-
this.
|
|
1748
|
-
this.
|
|
1773
|
+
this._mediator.execute(new AddOutputToStoreRequest(this));
|
|
1774
|
+
this._node.addConnector(this);
|
|
1749
1775
|
}
|
|
1750
1776
|
ngOnChanges(changes) {
|
|
1751
1777
|
if (changes['userFConnectableSide']) {
|
|
1752
|
-
this.
|
|
1778
|
+
this._node.refresh();
|
|
1753
1779
|
}
|
|
1754
1780
|
}
|
|
1755
1781
|
setConnected(toConnector) {
|
|
@@ -1763,36 +1789,27 @@ class FNodeOutputDirective extends FNodeOutputBase {
|
|
|
1763
1789
|
this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_NOT_CONNECTABLE, !this.canBeConnected);
|
|
1764
1790
|
}
|
|
1765
1791
|
ngOnDestroy() {
|
|
1766
|
-
this.
|
|
1767
|
-
this.
|
|
1792
|
+
this._node.removeConnector(this);
|
|
1793
|
+
this._mediator.execute(new RemoveOutputFromStoreRequest(this));
|
|
1768
1794
|
}
|
|
1769
1795
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeOutputDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
1770
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
1796
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FNodeOutputDirective, selector: "[fNodeOutput]", inputs: { fId: { classPropertyName: "fId", publicName: "fOutputId", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "fOutputMultiple", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "fOutputDisabled", isSignal: true, isRequired: false, transformFunction: null }, userFConnectableSide: { classPropertyName: "userFConnectableSide", publicName: "fOutputConnectableSide", isSignal: false, isRequired: false, transformFunction: (value) => castToEnum(value, 'fOutputConnectableSide', EFConnectableSide) }, isSelfConnectable: { classPropertyName: "isSelfConnectable", publicName: "isSelfConnectable", isSignal: false, isRequired: false, transformFunction: null }, canBeConnectedInputs: { classPropertyName: "canBeConnectedInputs", publicName: "fCanBeConnectedInputs", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-f-output-id": "fId()", "class.f-node-output-multiple": "multiple", "class.f-node-output-disabled": "disabled()", "class.f-node-output-self-connectable": "isSelfConnectable" }, classAttribute: "f-component f-node-output" }, providers: [{ provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective }], exportAs: ["fNodeOutput"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
|
|
1771
1797
|
}
|
|
1772
1798
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeOutputDirective, decorators: [{
|
|
1773
1799
|
type: Directive,
|
|
1774
1800
|
args: [{
|
|
1775
|
-
selector:
|
|
1801
|
+
selector: '[fNodeOutput]',
|
|
1776
1802
|
exportAs: 'fNodeOutput',
|
|
1777
1803
|
host: {
|
|
1778
|
-
'[attr.data-f-output-id]': 'fId',
|
|
1779
|
-
class:
|
|
1804
|
+
'[attr.data-f-output-id]': 'fId()',
|
|
1805
|
+
class: 'f-component f-node-output',
|
|
1780
1806
|
'[class.f-node-output-multiple]': 'multiple',
|
|
1781
|
-
'[class.f-node-output-disabled]': 'disabled',
|
|
1807
|
+
'[class.f-node-output-disabled]': 'disabled()',
|
|
1782
1808
|
'[class.f-node-output-self-connectable]': 'isSelfConnectable',
|
|
1783
1809
|
},
|
|
1784
1810
|
providers: [{ provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective }],
|
|
1785
1811
|
}]
|
|
1786
|
-
}], propDecorators: {
|
|
1787
|
-
type: Input,
|
|
1788
|
-
args: ['fOutputId']
|
|
1789
|
-
}], multiple: [{
|
|
1790
|
-
type: Input,
|
|
1791
|
-
args: ['fOutputMultiple']
|
|
1792
|
-
}], disabled: [{
|
|
1793
|
-
type: Input,
|
|
1794
|
-
args: [{ alias: 'fOutputDisabled', transform: booleanAttribute }]
|
|
1795
|
-
}], userFConnectableSide: [{
|
|
1812
|
+
}], propDecorators: { userFConnectableSide: [{
|
|
1796
1813
|
type: Input,
|
|
1797
1814
|
args: [{
|
|
1798
1815
|
alias: 'fOutputConnectableSide',
|
|
@@ -1812,34 +1829,34 @@ const F_CONNECTORS_PROVIDERS = [
|
|
|
1812
1829
|
];
|
|
1813
1830
|
|
|
1814
1831
|
class FBezierPathBuilder {
|
|
1815
|
-
static
|
|
1832
|
+
static _getConnectorOffset(distance, offset) {
|
|
1816
1833
|
if (distance >= offset) {
|
|
1817
1834
|
return distance;
|
|
1818
1835
|
}
|
|
1819
1836
|
return offset * Math.sqrt(offset - distance);
|
|
1820
1837
|
}
|
|
1821
|
-
static
|
|
1838
|
+
static _getAnglePoint(side, source, target, offset) {
|
|
1822
1839
|
const result = { x: source.x, y: source.y };
|
|
1823
1840
|
switch (side) {
|
|
1824
1841
|
case EFConnectableSide.LEFT:
|
|
1825
|
-
result.x -= FBezierPathBuilder.
|
|
1842
|
+
result.x -= FBezierPathBuilder._getConnectorOffset(source.x - target.x, offset);
|
|
1826
1843
|
break;
|
|
1827
1844
|
case EFConnectableSide.RIGHT:
|
|
1828
|
-
result.x += FBezierPathBuilder.
|
|
1845
|
+
result.x += FBezierPathBuilder._getConnectorOffset(target.x - source.x, offset);
|
|
1829
1846
|
break;
|
|
1830
1847
|
case EFConnectableSide.TOP:
|
|
1831
|
-
result.y -= FBezierPathBuilder.
|
|
1848
|
+
result.y -= FBezierPathBuilder._getConnectorOffset(source.y - target.y, offset);
|
|
1832
1849
|
break;
|
|
1833
1850
|
case EFConnectableSide.BOTTOM:
|
|
1834
|
-
result.y += FBezierPathBuilder.
|
|
1851
|
+
result.y += FBezierPathBuilder._getConnectorOffset(target.y - source.y, offset);
|
|
1835
1852
|
break;
|
|
1836
1853
|
}
|
|
1837
1854
|
return result;
|
|
1838
1855
|
}
|
|
1839
1856
|
handle(request) {
|
|
1840
1857
|
const { source, sourceSide, target, targetSide, offset } = request;
|
|
1841
|
-
const sourceAnglePoint = FBezierPathBuilder.
|
|
1842
|
-
const targetAnglePoint = FBezierPathBuilder.
|
|
1858
|
+
const sourceAnglePoint = FBezierPathBuilder._getAnglePoint(sourceSide, source, target, offset);
|
|
1859
|
+
const targetAnglePoint = FBezierPathBuilder._getAnglePoint(targetSide, target, source, offset);
|
|
1843
1860
|
const path = `M ${source.x} ${source.y} C ${sourceAnglePoint.x} ${sourceAnglePoint.y}, ${targetAnglePoint.x} ${targetAnglePoint.y}, ${target.x + 0.0002} ${target.y + 0.0002}`;
|
|
1844
1861
|
const connectionCenter = new CalculateConnectionCenterHandler().handle(new CalculateConnectionCenterRequest([source, sourceAnglePoint, targetAnglePoint, target]));
|
|
1845
1862
|
return {
|
|
@@ -1847,9 +1864,25 @@ class FBezierPathBuilder {
|
|
|
1847
1864
|
connectionCenter,
|
|
1848
1865
|
penultimatePoint: targetAnglePoint,
|
|
1849
1866
|
secondPoint: sourceAnglePoint,
|
|
1867
|
+
points: _sampleCubic(source, sourceAnglePoint, targetAnglePoint, target, 32),
|
|
1850
1868
|
};
|
|
1851
1869
|
}
|
|
1852
1870
|
}
|
|
1871
|
+
function bez3(p0, p1, p2, p3, t) {
|
|
1872
|
+
const u = 1 - t, tt = t * t, uu = u * u, uuu = uu * u, ttt = tt * t;
|
|
1873
|
+
return {
|
|
1874
|
+
x: uuu * p0.x + 3 * uu * t * p1.x + 3 * u * tt * p2.x + ttt * p3.x,
|
|
1875
|
+
y: uuu * p0.y + 3 * uu * t * p1.y + 3 * u * tt * p2.y + ttt * p3.y,
|
|
1876
|
+
};
|
|
1877
|
+
}
|
|
1878
|
+
function _sampleCubic(p0, p1, p2, p3, samples = 32) {
|
|
1879
|
+
const out = new Array(samples + 1);
|
|
1880
|
+
out[0] = { ...p0 };
|
|
1881
|
+
for (let i = 1; i <= samples; i++) {
|
|
1882
|
+
out[i] = bez3(p0, p1, p2, p3, i / samples);
|
|
1883
|
+
}
|
|
1884
|
+
return out;
|
|
1885
|
+
}
|
|
1853
1886
|
|
|
1854
1887
|
const CONNECTOR_SIDE_POINT = {
|
|
1855
1888
|
[EFConnectableSide.LEFT]: PointExtensions.initialize(-1, 0),
|
|
@@ -1861,18 +1894,30 @@ const CONNECTOR_SIDE_POINT = {
|
|
|
1861
1894
|
class FSegmentPathBuilder {
|
|
1862
1895
|
handle(request) {
|
|
1863
1896
|
const { source, sourceSide, target, targetSide } = request;
|
|
1864
|
-
const { points, center } = this.
|
|
1865
|
-
const path = this.
|
|
1897
|
+
const { points, center } = this._getPathPoints(source, sourceSide, target, targetSide, request.offset);
|
|
1898
|
+
const path = this._buildPath(points, request.radius);
|
|
1866
1899
|
const penultimatePoint = points.length > 1 ? points[points.length - 2] : source;
|
|
1867
1900
|
const secondPoint = points.length > 1 ? points[1] : target;
|
|
1868
|
-
return {
|
|
1901
|
+
return {
|
|
1902
|
+
path,
|
|
1903
|
+
connectionCenter: center,
|
|
1904
|
+
penultimatePoint,
|
|
1905
|
+
secondPoint,
|
|
1906
|
+
points,
|
|
1907
|
+
};
|
|
1869
1908
|
}
|
|
1870
|
-
|
|
1909
|
+
_getPathPoints(source, sourceSide, target, targetSide, offset) {
|
|
1871
1910
|
const sourceDirection = CONNECTOR_SIDE_POINT[sourceSide];
|
|
1872
1911
|
const targetDirection = CONNECTOR_SIDE_POINT[targetSide];
|
|
1873
|
-
const sourceGap = {
|
|
1874
|
-
|
|
1875
|
-
|
|
1912
|
+
const sourceGap = {
|
|
1913
|
+
x: source.x + sourceDirection.x * offset,
|
|
1914
|
+
y: source.y + sourceDirection.y * offset,
|
|
1915
|
+
};
|
|
1916
|
+
const targetGap = {
|
|
1917
|
+
x: target.x + targetDirection.x * offset,
|
|
1918
|
+
y: target.y + targetDirection.y * offset,
|
|
1919
|
+
};
|
|
1920
|
+
const direction = this._getDirection(sourceGap, sourceSide, targetGap);
|
|
1876
1921
|
const directionAccessor = direction.x !== 0 ? 'x' : 'y';
|
|
1877
1922
|
const currentDirection = direction[directionAccessor];
|
|
1878
1923
|
let points = [];
|
|
@@ -1909,10 +1954,12 @@ class FSegmentPathBuilder {
|
|
|
1909
1954
|
if (diff <= offset) {
|
|
1910
1955
|
const gapOffset = Math.min(offset - 1, offset - diff);
|
|
1911
1956
|
if (sourceDirection[directionAccessor] === currentDirection) {
|
|
1912
|
-
sourceGapOffset[directionAccessor] =
|
|
1957
|
+
sourceGapOffset[directionAccessor] =
|
|
1958
|
+
(sourceGap[directionAccessor] > source[directionAccessor] ? -1 : 1) * gapOffset;
|
|
1913
1959
|
}
|
|
1914
1960
|
else {
|
|
1915
|
-
targetGapOffset[directionAccessor] =
|
|
1961
|
+
targetGapOffset[directionAccessor] =
|
|
1962
|
+
(targetGap[directionAccessor] > target[directionAccessor] ? -1 : 1) * gapOffset;
|
|
1916
1963
|
}
|
|
1917
1964
|
}
|
|
1918
1965
|
}
|
|
@@ -1940,35 +1987,39 @@ class FSegmentPathBuilder {
|
|
|
1940
1987
|
const center = new CalculateConnectionCenterHandler().handle(new CalculateConnectionCenterRequest(pathPoints));
|
|
1941
1988
|
return { points: pathPoints, center };
|
|
1942
1989
|
}
|
|
1943
|
-
|
|
1990
|
+
_getDirection(source, sourceSide, target) {
|
|
1944
1991
|
if (sourceSide === EFConnectableSide.LEFT || sourceSide === EFConnectableSide.RIGHT) {
|
|
1945
|
-
return source.x < target.x
|
|
1992
|
+
return source.x < target.x
|
|
1993
|
+
? PointExtensions.initialize(1, 0)
|
|
1994
|
+
: PointExtensions.initialize(-1, 0);
|
|
1946
1995
|
}
|
|
1947
|
-
return source.y < target.y
|
|
1996
|
+
return source.y < target.y
|
|
1997
|
+
? PointExtensions.initialize(0, 1)
|
|
1998
|
+
: PointExtensions.initialize(0, -1);
|
|
1948
1999
|
}
|
|
1949
|
-
|
|
2000
|
+
_distance(a, b) {
|
|
1950
2001
|
return Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));
|
|
1951
2002
|
}
|
|
1952
|
-
|
|
2003
|
+
_buildPath(points, borderRadius) {
|
|
1953
2004
|
let path = '';
|
|
1954
2005
|
for (let i = 0; i < points.length; i++) {
|
|
1955
2006
|
const p = points[i];
|
|
1956
2007
|
let segment = '';
|
|
1957
2008
|
if (i > 0 && i < points.length - 1) {
|
|
1958
|
-
segment = this.
|
|
2009
|
+
segment = this._getBend(points[i - 1], p, points[i + 1], borderRadius);
|
|
1959
2010
|
}
|
|
1960
2011
|
else if (i === points.length - 1) {
|
|
1961
|
-
segment = this.
|
|
2012
|
+
segment = this._buildLastLineSegment(i, p);
|
|
1962
2013
|
}
|
|
1963
2014
|
else {
|
|
1964
|
-
segment = this.
|
|
2015
|
+
segment = this._buildMoveOrLineSegment(i, p);
|
|
1965
2016
|
}
|
|
1966
2017
|
path += segment;
|
|
1967
2018
|
}
|
|
1968
2019
|
return path;
|
|
1969
2020
|
}
|
|
1970
|
-
|
|
1971
|
-
const bendSize = Math.min(this.
|
|
2021
|
+
_getBend(a, b, c, size) {
|
|
2022
|
+
const bendSize = Math.min(this._distance(a, b) / 2, this._distance(b, c) / 2, size);
|
|
1972
2023
|
const { x, y } = b;
|
|
1973
2024
|
if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {
|
|
1974
2025
|
return `L${x} ${y}`;
|
|
@@ -1982,10 +2033,10 @@ class FSegmentPathBuilder {
|
|
|
1982
2033
|
const yDir = a.y < c.y ? -1 : 1;
|
|
1983
2034
|
return `L ${x},${y + bendSize * yDir}Q ${x},${y} ${x + bendSize * xDir},${y}`;
|
|
1984
2035
|
}
|
|
1985
|
-
|
|
2036
|
+
_buildMoveOrLineSegment(index, point) {
|
|
1986
2037
|
return `${index === 0 ? 'M' : 'L'}${point.x} ${point.y}`;
|
|
1987
2038
|
}
|
|
1988
|
-
|
|
2039
|
+
_buildLastLineSegment(index, point) {
|
|
1989
2040
|
return `L${point.x + 0.0002} ${point.y + 0.0002}`;
|
|
1990
2041
|
}
|
|
1991
2042
|
}
|
|
@@ -1995,7 +2046,13 @@ class FStraightPathBuilder {
|
|
|
1995
2046
|
const { source, target } = request;
|
|
1996
2047
|
const path = `M ${source.x} ${source.y} L ${target.x + 0.0002} ${target.y + 0.0002}`;
|
|
1997
2048
|
const connectionCenter = new CalculateConnectionCenterHandler().handle(new CalculateConnectionCenterRequest([source, target]));
|
|
1998
|
-
return {
|
|
2049
|
+
return {
|
|
2050
|
+
path,
|
|
2051
|
+
connectionCenter,
|
|
2052
|
+
penultimatePoint: source,
|
|
2053
|
+
secondPoint: target,
|
|
2054
|
+
points: [source, connectionCenter, target],
|
|
2055
|
+
};
|
|
1999
2056
|
}
|
|
2000
2057
|
}
|
|
2001
2058
|
|
|
@@ -2023,47 +2080,40 @@ const F_CONNECTION_IDENTIFIERS = {
|
|
|
2023
2080
|
const F_CONNECTION = new InjectionToken('F_CONNECTION');
|
|
2024
2081
|
|
|
2025
2082
|
class FConnectionTextPathDirective {
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2083
|
+
hostElement = inject((ElementRef)).nativeElement;
|
|
2084
|
+
_base = inject(F_CONNECTION);
|
|
2085
|
+
_browser = inject(BrowserService);
|
|
2029
2086
|
get linkToConnection() {
|
|
2030
|
-
return F_CONNECTION_IDENTIFIERS.linkToConnection(this.
|
|
2031
|
-
}
|
|
2032
|
-
get hostElement() {
|
|
2033
|
-
return this.elementReference.nativeElement;
|
|
2087
|
+
return F_CONNECTION_IDENTIFIERS.linkToConnection(this._base.fId() + this._base.fOutputId() + this._base.fInputId());
|
|
2034
2088
|
}
|
|
2035
2089
|
symbolWidth = 8;
|
|
2036
2090
|
fontSize = '12px';
|
|
2037
|
-
constructor(elementReference, base, fBrowser) {
|
|
2038
|
-
this.elementReference = elementReference;
|
|
2039
|
-
this.base = base;
|
|
2040
|
-
this.fBrowser = fBrowser;
|
|
2041
|
-
}
|
|
2042
2091
|
ngOnInit() {
|
|
2043
2092
|
this.hostElement.setAttribute('text-anchor', `middle`);
|
|
2044
|
-
this.symbolWidth = this.
|
|
2093
|
+
this.symbolWidth = this._getSymbolWidth(this._base.fText || '');
|
|
2045
2094
|
}
|
|
2046
2095
|
getBBox() {
|
|
2047
2096
|
return this.hostElement.getBBox();
|
|
2048
2097
|
}
|
|
2049
2098
|
redraw() {
|
|
2050
|
-
this.hostElement.setAttribute('startOffset', this.
|
|
2099
|
+
this.hostElement.setAttribute('startOffset', this._base.fTextStartOffset || '50%');
|
|
2051
2100
|
}
|
|
2052
|
-
|
|
2053
|
-
const computedStyles = this.
|
|
2101
|
+
_getFontStyles(element) {
|
|
2102
|
+
const computedStyles = this._browser.window.getComputedStyle(element);
|
|
2054
2103
|
return {
|
|
2055
2104
|
fontSize: computedStyles.fontSize,
|
|
2056
2105
|
fontFamily: computedStyles.fontFamily,
|
|
2057
2106
|
};
|
|
2058
2107
|
}
|
|
2059
|
-
|
|
2108
|
+
_getSymbolWidth(name) {
|
|
2060
2109
|
const text = name || 'connection';
|
|
2061
|
-
const { fontFamily, fontSize } = this.
|
|
2110
|
+
const { fontFamily, fontSize } = this._getFontStyles(this.hostElement);
|
|
2062
2111
|
this.fontSize = fontSize || '12px';
|
|
2063
|
-
const canvas = this.
|
|
2112
|
+
const canvas = this._browser.document.createElement('canvas');
|
|
2064
2113
|
let context;
|
|
2065
2114
|
try {
|
|
2066
2115
|
context = canvas.getContext('2d');
|
|
2116
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
2067
2117
|
}
|
|
2068
2118
|
catch (e) {
|
|
2069
2119
|
context = null;
|
|
@@ -2076,7 +2126,7 @@ class FConnectionTextPathDirective {
|
|
|
2076
2126
|
const symbolWidth = metrics.width / text.length;
|
|
2077
2127
|
return symbolWidth;
|
|
2078
2128
|
}
|
|
2079
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionTextPathDirective, deps: [
|
|
2129
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionTextPathDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2080
2130
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionTextPathDirective, selector: "textPath[f-connection-text-path]", host: { properties: { "attr.href": "linkToConnection" } }, ngImport: i0 });
|
|
2081
2131
|
}
|
|
2082
2132
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionTextPathDirective, decorators: [{
|
|
@@ -2087,39 +2137,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2087
2137
|
'[attr.href]': 'linkToConnection',
|
|
2088
2138
|
},
|
|
2089
2139
|
}]
|
|
2090
|
-
}]
|
|
2091
|
-
type: Inject,
|
|
2092
|
-
args: [F_CONNECTION]
|
|
2093
|
-
}] }, { type: i1.BrowserService }] });
|
|
2140
|
+
}] });
|
|
2094
2141
|
|
|
2095
2142
|
const CONNECTION_TEXT = new InjectionToken('CONNECTION_TEXT');
|
|
2096
2143
|
|
|
2097
2144
|
class FConnectionTextComponent {
|
|
2098
|
-
|
|
2099
|
-
|
|
2145
|
+
hostElement = inject((ElementRef)).nativeElement;
|
|
2146
|
+
_base = inject(F_CONNECTION);
|
|
2147
|
+
_textPathDirective = viewChild.required(FConnectionTextPathDirective);
|
|
2100
2148
|
get textId() {
|
|
2101
|
-
return F_CONNECTION_IDENTIFIERS.textId(this.
|
|
2102
|
-
}
|
|
2103
|
-
get hostElement() {
|
|
2104
|
-
return this.elementReference.nativeElement;
|
|
2149
|
+
return F_CONNECTION_IDENTIFIERS.textId(this._base.fId() + this._base.fOutputId() + this._base.fInputId());
|
|
2105
2150
|
}
|
|
2106
2151
|
get text() {
|
|
2107
|
-
return this.
|
|
2108
|
-
}
|
|
2109
|
-
textPathDirective;
|
|
2110
|
-
constructor(elementReference, base) {
|
|
2111
|
-
this.elementReference = elementReference;
|
|
2112
|
-
this.base = base;
|
|
2152
|
+
return this._base.fText || '';
|
|
2113
2153
|
}
|
|
2114
2154
|
redraw(line) {
|
|
2115
|
-
this.
|
|
2116
|
-
const isTextReverse = FConnectionTextComponent.
|
|
2117
|
-
const dyValue = this.
|
|
2155
|
+
this._textPathDirective().redraw();
|
|
2156
|
+
const isTextReverse = FConnectionTextComponent._isTextReverse(line);
|
|
2157
|
+
const dyValue = this._calculateDy(this._textPathDirective().fontSize, isTextReverse);
|
|
2118
2158
|
this.hostElement.setAttribute('dy', dyValue);
|
|
2119
|
-
const textRect = this.
|
|
2159
|
+
const textRect = this._textPathDirective().getBBox();
|
|
2120
2160
|
const textRectCenter = [textRect.x + textRect.width / 2, textRect.y + textRect.height / 2];
|
|
2121
2161
|
this.hostElement.setAttribute('transform', isTextReverse ? `rotate(180, ${textRectCenter})` : '');
|
|
2122
|
-
const startOffset = FConnectionTextComponent.
|
|
2162
|
+
const startOffset = FConnectionTextComponent._getTextStartOffset(line, this._base.fText || '', this._textPathDirective().symbolWidth);
|
|
2123
2163
|
if (startOffset < 0) {
|
|
2124
2164
|
this.hostElement.style.display = 'none';
|
|
2125
2165
|
}
|
|
@@ -2127,34 +2167,28 @@ class FConnectionTextComponent {
|
|
|
2127
2167
|
this.hostElement.style.display = 'unset';
|
|
2128
2168
|
}
|
|
2129
2169
|
}
|
|
2130
|
-
|
|
2170
|
+
_calculateDy(fontSize, isTextReverse) {
|
|
2131
2171
|
const fontSizeNumber = parseFloat(fontSize);
|
|
2132
2172
|
const dyValue = isTextReverse ? fontSizeNumber * 1.5 : fontSizeNumber * -0.8;
|
|
2133
2173
|
return dyValue.toString();
|
|
2134
2174
|
}
|
|
2135
|
-
static
|
|
2175
|
+
static _isTextReverse(line) {
|
|
2136
2176
|
return line.point1.x > line.point2.x;
|
|
2137
2177
|
}
|
|
2138
|
-
static
|
|
2178
|
+
static _getTextStartOffset(line, name, symbolWidth) {
|
|
2139
2179
|
const vectorLength = PointExtensions.hypotenuse(line.point1, line.point2);
|
|
2140
2180
|
return vectorLength / 2 - ((name || '').length * symbolWidth) / 2;
|
|
2141
2181
|
}
|
|
2142
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionTextComponent, deps: [
|
|
2143
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2182
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2183
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.13", type: FConnectionTextComponent, selector: "text[f-connection-text]", host: { properties: { "attr.id": "textId" }, classAttribute: "f-component f-connection-text" }, providers: [{ provide: CONNECTION_TEXT, useExisting: FConnectionTextComponent }], viewQueries: [{ propertyName: "_textPathDirective", first: true, predicate: FConnectionTextPathDirective, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:textPath f-connection-text-path>\n {{ text }}\n </svg:textPath>\n</ng-container>\n", dependencies: [{ kind: "directive", type: FConnectionTextPathDirective, selector: "textPath[f-connection-text-path]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2144
2184
|
}
|
|
2145
2185
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionTextComponent, decorators: [{
|
|
2146
2186
|
type: Component,
|
|
2147
|
-
args: [{ selector:
|
|
2148
|
-
class:
|
|
2187
|
+
args: [{ selector: 'text[f-connection-text]', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
2188
|
+
class: 'f-component f-connection-text',
|
|
2149
2189
|
'[attr.id]': 'textId',
|
|
2150
2190
|
}, providers: [{ provide: CONNECTION_TEXT, useExisting: FConnectionTextComponent }], template: "<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:textPath f-connection-text-path>\n {{ text }}\n </svg:textPath>\n</ng-container>\n" }]
|
|
2151
|
-
}]
|
|
2152
|
-
type: Inject,
|
|
2153
|
-
args: [F_CONNECTION]
|
|
2154
|
-
}] }], propDecorators: { textPathDirective: [{
|
|
2155
|
-
type: ViewChild,
|
|
2156
|
-
args: [FConnectionTextPathDirective, { static: true }]
|
|
2157
|
-
}] } });
|
|
2191
|
+
}] });
|
|
2158
2192
|
|
|
2159
2193
|
const F_CSS_CLASS = {
|
|
2160
2194
|
DRAG_AND_DROP: {
|
|
@@ -2248,36 +2282,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2248
2282
|
const CONNECTION_GRADIENT = new InjectionToken('CONNECTION_GRADIENT');
|
|
2249
2283
|
|
|
2250
2284
|
class FConnectionGradientComponent {
|
|
2251
|
-
|
|
2252
|
-
|
|
2285
|
+
hostElement = inject((ElementRef)).nativeElement;
|
|
2286
|
+
_base = inject(F_CONNECTION);
|
|
2253
2287
|
get gradientId() {
|
|
2254
|
-
return F_CONNECTION_IDENTIFIERS.gradientId(this.
|
|
2255
|
-
}
|
|
2256
|
-
get hostElement() {
|
|
2257
|
-
return this.elementReference.nativeElement;
|
|
2288
|
+
return F_CONNECTION_IDENTIFIERS.gradientId(this._base.fId() + this._base.fOutputId() + this._base.fInputId());
|
|
2258
2289
|
}
|
|
2259
2290
|
get stop1Element() {
|
|
2260
|
-
return this.
|
|
2291
|
+
return this.hostElement.children.item(0);
|
|
2261
2292
|
}
|
|
2262
2293
|
get stop2Element() {
|
|
2263
|
-
return this.
|
|
2264
|
-
}
|
|
2265
|
-
constructor(elementReference, base) {
|
|
2266
|
-
this.elementReference = elementReference;
|
|
2267
|
-
this.base = base;
|
|
2294
|
+
return this.hostElement.children.item(1);
|
|
2268
2295
|
}
|
|
2269
2296
|
initialize() {
|
|
2270
2297
|
this.stop1Element.setAttribute('offset', '0%');
|
|
2271
2298
|
this.stop2Element.setAttribute('offset', '100%');
|
|
2272
2299
|
}
|
|
2273
|
-
|
|
2274
|
-
this.
|
|
2275
|
-
this.
|
|
2300
|
+
_updateGradient() {
|
|
2301
|
+
this._setFromColor(this._base.fStartColor());
|
|
2302
|
+
this._setToColor(this._base.fEndColor());
|
|
2276
2303
|
}
|
|
2277
|
-
|
|
2304
|
+
_setFromColor(color) {
|
|
2278
2305
|
this.stop1Element.setAttribute('stop-color', color || 'transparent');
|
|
2279
2306
|
}
|
|
2280
|
-
|
|
2307
|
+
_setToColor(color) {
|
|
2281
2308
|
this.stop2Element.setAttribute('stop-color', color || 'transparent');
|
|
2282
2309
|
}
|
|
2283
2310
|
redraw(line) {
|
|
@@ -2290,21 +2317,18 @@ class FConnectionGradientComponent {
|
|
|
2290
2317
|
const to = new Point(0.5 + (0.5 * x) / distance, 0.5 + (0.5 * y) / distance);
|
|
2291
2318
|
this.hostElement.setAttribute('x2', to.x.toString());
|
|
2292
2319
|
this.hostElement.setAttribute('y2', to.y.toString());
|
|
2293
|
-
this.
|
|
2320
|
+
this._updateGradient();
|
|
2294
2321
|
}
|
|
2295
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionGradientComponent, deps: [
|
|
2322
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionGradientComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2296
2323
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]", host: { properties: { "attr.id": "gradientId" }, classAttribute: "f-component f-connection-gradient" }, providers: [{ provide: CONNECTION_GRADIENT, useExisting: FConnectionGradientComponent }], ngImport: i0, template: "<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:stop/>\n <svg:stop/>\n</ng-container>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2297
2324
|
}
|
|
2298
2325
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionGradientComponent, decorators: [{
|
|
2299
2326
|
type: Component,
|
|
2300
|
-
args: [{ selector:
|
|
2301
|
-
class:
|
|
2327
|
+
args: [{ selector: 'linearGradient[fConnectionGradient]', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
2328
|
+
class: 'f-component f-connection-gradient',
|
|
2302
2329
|
'[attr.id]': 'gradientId',
|
|
2303
2330
|
}, providers: [{ provide: CONNECTION_GRADIENT, useExisting: FConnectionGradientComponent }], template: "<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:stop/>\n <svg:stop/>\n</ng-container>\n" }]
|
|
2304
|
-
}]
|
|
2305
|
-
type: Inject,
|
|
2306
|
-
args: [F_CONNECTION]
|
|
2307
|
-
}] }] });
|
|
2331
|
+
}] });
|
|
2308
2332
|
|
|
2309
2333
|
const CONNECTION_PATH = new InjectionToken('CONNECTION_PATH');
|
|
2310
2334
|
|
|
@@ -2322,93 +2346,62 @@ function getMarkerSelectedEndId(fConnectionId) {
|
|
|
2322
2346
|
}
|
|
2323
2347
|
|
|
2324
2348
|
class FConnectionPathComponent {
|
|
2325
|
-
|
|
2326
|
-
|
|
2349
|
+
hostElement = inject((ElementRef)).nativeElement;
|
|
2350
|
+
_base = inject(F_CONNECTION);
|
|
2327
2351
|
get fPathId() {
|
|
2328
|
-
return this.
|
|
2352
|
+
return this._base.fId();
|
|
2329
2353
|
}
|
|
2330
2354
|
get linkToGradient() {
|
|
2331
|
-
return F_CONNECTION_IDENTIFIERS.linkToGradient(this.
|
|
2355
|
+
return F_CONNECTION_IDENTIFIERS.linkToGradient(this._base.fId() + this._base.fOutputId() + this._base.fInputId());
|
|
2332
2356
|
}
|
|
2333
2357
|
get attrConnectionId() {
|
|
2334
|
-
return F_CONNECTION_IDENTIFIERS.connectionId(this.
|
|
2335
|
-
}
|
|
2336
|
-
get hostElement() {
|
|
2337
|
-
return this.elementReference.nativeElement;
|
|
2338
|
-
}
|
|
2339
|
-
constructor(elementReference, base) {
|
|
2340
|
-
this.elementReference = elementReference;
|
|
2341
|
-
this.base = base;
|
|
2358
|
+
return F_CONNECTION_IDENTIFIERS.connectionId(this._base.fId() + this._base.fOutputId() + this._base.fInputId());
|
|
2342
2359
|
}
|
|
2343
2360
|
initialize() {
|
|
2344
2361
|
this.deselect();
|
|
2345
2362
|
}
|
|
2346
2363
|
setPath(path) {
|
|
2347
|
-
this.hostElement.setAttribute(
|
|
2364
|
+
this.hostElement.setAttribute('d', `${path}`);
|
|
2348
2365
|
}
|
|
2349
2366
|
select() {
|
|
2350
|
-
this.hostElement.setAttribute('marker-start', `url(#${getMarkerSelectedStartId(this.
|
|
2351
|
-
this.hostElement.setAttribute('marker-end', `url(#${getMarkerSelectedEndId(this.
|
|
2367
|
+
this.hostElement.setAttribute('marker-start', `url(#${getMarkerSelectedStartId(this._base.fId())})`);
|
|
2368
|
+
this.hostElement.setAttribute('marker-end', `url(#${getMarkerSelectedEndId(this._base.fId())})`);
|
|
2352
2369
|
}
|
|
2353
2370
|
deselect() {
|
|
2354
|
-
this.hostElement.setAttribute('marker-start', `url(#${getMarkerStartId(this.
|
|
2355
|
-
this.hostElement.setAttribute('marker-end', `url(#${getMarkerEndId(this.
|
|
2371
|
+
this.hostElement.setAttribute('marker-start', `url(#${getMarkerStartId(this._base.fId())})`);
|
|
2372
|
+
this.hostElement.setAttribute('marker-end', `url(#${getMarkerEndId(this._base.fId())})`);
|
|
2356
2373
|
}
|
|
2357
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionPathComponent, deps: [
|
|
2374
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionPathComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2358
2375
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionPathComponent, selector: "path[f-connection-path]", host: { properties: { "attr.id": "attrConnectionId", "attr.data-f-path-id": "fPathId", "attr.stroke": "linkToGradient" }, classAttribute: "f-component f-connection-path" }, providers: [{ provide: CONNECTION_PATH, useExisting: FConnectionPathComponent }], ngImport: i0, template: '', isInline: true, styles: [":host{fill:none;pointer-events:stroke}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2359
2376
|
}
|
|
2360
2377
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionPathComponent, decorators: [{
|
|
2361
2378
|
type: Component,
|
|
2362
|
-
args: [{ selector:
|
|
2363
|
-
class:
|
|
2379
|
+
args: [{ selector: 'path[f-connection-path]', template: '', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
2380
|
+
class: 'f-component f-connection-path',
|
|
2364
2381
|
'[attr.id]': 'attrConnectionId',
|
|
2365
2382
|
'[attr.data-f-path-id]': 'fPathId',
|
|
2366
2383
|
'[attr.stroke]': 'linkToGradient',
|
|
2367
2384
|
}, providers: [{ provide: CONNECTION_PATH, useExisting: FConnectionPathComponent }], styles: [":host{fill:none;pointer-events:stroke}\n"] }]
|
|
2368
|
-
}]
|
|
2369
|
-
type: Inject,
|
|
2370
|
-
args: [F_CONNECTION]
|
|
2371
|
-
}] }] });
|
|
2385
|
+
}] });
|
|
2372
2386
|
|
|
2373
2387
|
class FConnectionSelectionComponent {
|
|
2374
|
-
|
|
2375
|
-
|
|
2388
|
+
hostElement = inject((ElementRef)).nativeElement;
|
|
2389
|
+
_base = inject(F_CONNECTION);
|
|
2376
2390
|
get connectionForSelectionId() {
|
|
2377
|
-
return F_CONNECTION_IDENTIFIERS.connectionForSelectionId(this.
|
|
2378
|
-
}
|
|
2379
|
-
get hostElement() {
|
|
2380
|
-
return this.elementReference.nativeElement;
|
|
2381
|
-
}
|
|
2382
|
-
constructor(elementReference, base) {
|
|
2383
|
-
this.elementReference = elementReference;
|
|
2384
|
-
this.base = base;
|
|
2391
|
+
return F_CONNECTION_IDENTIFIERS.connectionForSelectionId(this._base.fId() + this._base.fOutputId() + this._base.fInputId());
|
|
2385
2392
|
}
|
|
2386
2393
|
setPath(path) {
|
|
2387
|
-
this.hostElement.setAttribute(
|
|
2394
|
+
this.hostElement.setAttribute('d', `${path}`);
|
|
2388
2395
|
}
|
|
2389
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionSelectionComponent, deps: [
|
|
2396
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionSelectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2390
2397
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionSelectionComponent, selector: "path[fConnectionSelection]", host: { properties: { "attr.id": "connectionForSelectionId" }, classAttribute: "f-component f-connection-selection" }, ngImport: i0, template: '', isInline: true, styles: [":host{fill:none;pointer-events:stroke}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2391
2398
|
}
|
|
2392
2399
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionSelectionComponent, decorators: [{
|
|
2393
2400
|
type: Component,
|
|
2394
|
-
args: [{ selector:
|
|
2395
|
-
class:
|
|
2401
|
+
args: [{ selector: 'path[fConnectionSelection]', template: '', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
2402
|
+
class: 'f-component f-connection-selection',
|
|
2396
2403
|
'[attr.id]': 'connectionForSelectionId',
|
|
2397
2404
|
}, styles: [":host{fill:none;pointer-events:stroke}\n"] }]
|
|
2398
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
|
|
2399
|
-
type: Inject,
|
|
2400
|
-
args: [F_CONNECTION]
|
|
2401
|
-
}] }] });
|
|
2402
|
-
|
|
2403
|
-
class FConnectionCenterDirective {
|
|
2404
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionCenterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2405
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionCenterDirective, selector: "[fConnectionCenter]", ngImport: i0 });
|
|
2406
|
-
}
|
|
2407
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionCenterDirective, decorators: [{
|
|
2408
|
-
type: Directive,
|
|
2409
|
-
args: [{
|
|
2410
|
-
selector: "[fConnectionCenter]",
|
|
2411
|
-
}]
|
|
2412
2405
|
}] });
|
|
2413
2406
|
|
|
2414
2407
|
const F_CONNECTION_BUILDERS = new InjectionToken('F_CONNECTION_BUILDERS');
|
|
@@ -2443,6 +2436,431 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2443
2436
|
args: [F_CONNECTION_BUILDERS]
|
|
2444
2437
|
}] }] });
|
|
2445
2438
|
|
|
2439
|
+
let warnedFConnectionCenter = false;
|
|
2440
|
+
/** @deprecated '[fConnectionCenter] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead.' */
|
|
2441
|
+
class FConnectionCenterDirective {
|
|
2442
|
+
/**
|
|
2443
|
+
* @deprecated '[fConnectionCenter] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead.'
|
|
2444
|
+
*/
|
|
2445
|
+
fConnectionCenter = input(true, {
|
|
2446
|
+
alias: 'fConnectionCenter',
|
|
2447
|
+
transform: (v) => {
|
|
2448
|
+
// Превращаем presence-атрибут в boolean
|
|
2449
|
+
const val = booleanAttribute(v);
|
|
2450
|
+
if (!warnedFConnectionCenter && isDevMode()) {
|
|
2451
|
+
warnedFConnectionCenter = true;
|
|
2452
|
+
console.warn('[fConnectionCenter] is deprecated and will be removed in v18.0.0. Use [FConnectionContent] instead.');
|
|
2453
|
+
}
|
|
2454
|
+
return val;
|
|
2455
|
+
},
|
|
2456
|
+
});
|
|
2457
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionCenterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2458
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FConnectionCenterDirective, selector: "[fConnectionCenter]", inputs: { fConnectionCenter: { classPropertyName: "fConnectionCenter", publicName: "fConnectionCenter", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
2459
|
+
}
|
|
2460
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionCenterDirective, decorators: [{
|
|
2461
|
+
type: Directive,
|
|
2462
|
+
args: [{
|
|
2463
|
+
selector: '[fConnectionCenter]',
|
|
2464
|
+
}]
|
|
2465
|
+
}] });
|
|
2466
|
+
|
|
2467
|
+
/**
|
|
2468
|
+
* Immutable polyline geometry with precomputed cumulative lengths and segment tangents.
|
|
2469
|
+
* Keep this class focused on geometry only; sampling/traversal lives in PolylineSampler.
|
|
2470
|
+
*/
|
|
2471
|
+
class Polyline {
|
|
2472
|
+
/** Cleaned points (with consecutive duplicates removed). */
|
|
2473
|
+
points;
|
|
2474
|
+
/** Cumulative length from start to each vertex. Same length as `points`. */
|
|
2475
|
+
cumulativeLengths;
|
|
2476
|
+
/** Unit tangent per segment `i` for segment [i -> i+1]. Length = points.length - 1. */
|
|
2477
|
+
segmentTangents;
|
|
2478
|
+
/** Total length of the polyline (>= 1 for the degenerate fallback). */
|
|
2479
|
+
totalLength;
|
|
2480
|
+
/**
|
|
2481
|
+
* Construct a polyline from raw points.
|
|
2482
|
+
* Consecutive duplicate points are removed.
|
|
2483
|
+
* If less than 2 points remain, it falls back to a unit horizontal segment [0,0] → [1,0].
|
|
2484
|
+
*/
|
|
2485
|
+
constructor(points) {
|
|
2486
|
+
const cleaned = Polyline._removeConsecutiveDuplicates(points);
|
|
2487
|
+
if (cleaned.length < 2) {
|
|
2488
|
+
// Fallback to a unit segment to avoid zero-length edge cases.
|
|
2489
|
+
this.points = [{ x: 0, y: 0 }, { x: 1, y: 0 }];
|
|
2490
|
+
this.cumulativeLengths = [0, 1];
|
|
2491
|
+
this.segmentTangents = [{ x: 1, y: 0 }];
|
|
2492
|
+
this.totalLength = 1;
|
|
2493
|
+
return;
|
|
2494
|
+
}
|
|
2495
|
+
this.points = cleaned;
|
|
2496
|
+
const vertexCount = this.points.length;
|
|
2497
|
+
const segmentCount = vertexCount - 1;
|
|
2498
|
+
const cumulative = new Array(vertexCount).fill(0);
|
|
2499
|
+
const tangents = new Array(segmentCount);
|
|
2500
|
+
let accumulated = 0;
|
|
2501
|
+
for (let i = 0; i < segmentCount; i++) {
|
|
2502
|
+
const dx = this.points[i + 1].x - this.points[i].x;
|
|
2503
|
+
const dy = this.points[i + 1].y - this.points[i].y;
|
|
2504
|
+
const length = Math.hypot(dx, dy);
|
|
2505
|
+
const ux = length ? dx / length : 1;
|
|
2506
|
+
const uy = length ? dy / length : 0;
|
|
2507
|
+
tangents[i] = { x: ux, y: uy };
|
|
2508
|
+
accumulated += length;
|
|
2509
|
+
cumulative[i + 1] = accumulated;
|
|
2510
|
+
}
|
|
2511
|
+
this.cumulativeLengths = cumulative;
|
|
2512
|
+
this.segmentTangents = tangents;
|
|
2513
|
+
this.totalLength = accumulated || 1;
|
|
2514
|
+
}
|
|
2515
|
+
/**
|
|
2516
|
+
* Create a polyline by cloning points (defensive copy).
|
|
2517
|
+
* @param points Raw input points; they will be copied and cleaned.
|
|
2518
|
+
*/
|
|
2519
|
+
static from(points) {
|
|
2520
|
+
return new Polyline(points.map(p => ({ x: p.x, y: p.y })));
|
|
2521
|
+
}
|
|
2522
|
+
/** Remove consecutive duplicate points. */
|
|
2523
|
+
static _removeConsecutiveDuplicates(points) {
|
|
2524
|
+
const result = [];
|
|
2525
|
+
for (const p of points) {
|
|
2526
|
+
const last = result[result.length - 1];
|
|
2527
|
+
if (!last || last.x !== p.x || last.y !== p.y) {
|
|
2528
|
+
result.push({ x: p.x, y: p.y });
|
|
2529
|
+
}
|
|
2530
|
+
}
|
|
2531
|
+
return result;
|
|
2532
|
+
}
|
|
2533
|
+
}
|
|
2534
|
+
|
|
2535
|
+
/**
|
|
2536
|
+
* Provides sampling (interpolation) along a {@link Polyline}.
|
|
2537
|
+
* Separates traversal logic from pure geometry stored in {@link Polyline}.
|
|
2538
|
+
*/
|
|
2539
|
+
class PolylineSampler {
|
|
2540
|
+
_polyline;
|
|
2541
|
+
/**
|
|
2542
|
+
* @param points Initial points to build the underlying polyline.
|
|
2543
|
+
* You can later call {@link updatePoints} to rebuild.
|
|
2544
|
+
*/
|
|
2545
|
+
constructor(points = []) {
|
|
2546
|
+
this._polyline = new Polyline(points);
|
|
2547
|
+
}
|
|
2548
|
+
/**
|
|
2549
|
+
* Rebuild the underlying polyline from new points.
|
|
2550
|
+
* @returns Total length of the rebuilt polyline.
|
|
2551
|
+
*/
|
|
2552
|
+
updatePoints(points) {
|
|
2553
|
+
this._polyline = new Polyline(points);
|
|
2554
|
+
return this._polyline.totalLength;
|
|
2555
|
+
}
|
|
2556
|
+
/**
|
|
2557
|
+
* Backward-compatible alias for older API naming.
|
|
2558
|
+
* @returns Total length of the rebuilt polyline.
|
|
2559
|
+
*/
|
|
2560
|
+
calculateTotalLength(points) {
|
|
2561
|
+
return this.updatePoints(points);
|
|
2562
|
+
}
|
|
2563
|
+
/** Total length of the current polyline. */
|
|
2564
|
+
get totalLength() {
|
|
2565
|
+
return this._polyline.totalLength;
|
|
2566
|
+
}
|
|
2567
|
+
/**
|
|
2568
|
+
* Sample a point by normalized progress along the whole length.
|
|
2569
|
+
*
|
|
2570
|
+
* - `progress = 0` → start vertex
|
|
2571
|
+
* - `progress = 1` → end vertex
|
|
2572
|
+
*
|
|
2573
|
+
* Uses a small edge threshold (0.5 units) to snap near-start/near-end queries to exact vertices,
|
|
2574
|
+
* mirroring the behavior in the original implementation.
|
|
2575
|
+
*
|
|
2576
|
+
* @param progress Normalized value in [0..1]. Values are clamped to this range.
|
|
2577
|
+
* @returns Interpolated point, segment tangent, and whether it was clamped to an edge.
|
|
2578
|
+
*/
|
|
2579
|
+
getPointAtProgress(progress) {
|
|
2580
|
+
const { points, cumulativeLengths, segmentTangents, totalLength } = this._polyline;
|
|
2581
|
+
const clamped = PolylineSampler._clamp(progress, 0, 1);
|
|
2582
|
+
const target = clamped * totalLength;
|
|
2583
|
+
const edgeThreshold = 0.5;
|
|
2584
|
+
if (target <= edgeThreshold) {
|
|
2585
|
+
return {
|
|
2586
|
+
point: points[0],
|
|
2587
|
+
tangent: segmentTangents[0] ?? { x: 1, y: 0 },
|
|
2588
|
+
atEdge: true,
|
|
2589
|
+
};
|
|
2590
|
+
}
|
|
2591
|
+
if (totalLength - target <= edgeThreshold) {
|
|
2592
|
+
const last = points.length - 1;
|
|
2593
|
+
return {
|
|
2594
|
+
point: points[last],
|
|
2595
|
+
tangent: segmentTangents[last - 1] ?? { x: 1, y: 0 },
|
|
2596
|
+
atEdge: true,
|
|
2597
|
+
};
|
|
2598
|
+
}
|
|
2599
|
+
const rightIndex = PolylineSampler._findRightIndex(cumulativeLengths, target);
|
|
2600
|
+
const i = Math.max(1, rightIndex);
|
|
2601
|
+
const leftLen = cumulativeLengths[i - 1];
|
|
2602
|
+
const rightLen = cumulativeLengths[i];
|
|
2603
|
+
const t = PolylineSampler._safeRatio(target - leftLen, rightLen - leftLen);
|
|
2604
|
+
const a = points[i - 1];
|
|
2605
|
+
const b = points[i];
|
|
2606
|
+
const point = {
|
|
2607
|
+
x: PolylineSampler._lerp(a.x, b.x, t),
|
|
2608
|
+
y: PolylineSampler._lerp(a.y, b.y, t),
|
|
2609
|
+
};
|
|
2610
|
+
const tangent = segmentTangents[i - 1] ?? { x: 1, y: 0 };
|
|
2611
|
+
return { point, tangent, atEdge: false };
|
|
2612
|
+
}
|
|
2613
|
+
/**
|
|
2614
|
+
* Backward-compatible alias.
|
|
2615
|
+
* Equivalent to {@link getPointAtProgress}.
|
|
2616
|
+
*/
|
|
2617
|
+
getPointAtLength(progress) {
|
|
2618
|
+
return this.getPointAtProgress(progress);
|
|
2619
|
+
}
|
|
2620
|
+
/**
|
|
2621
|
+
* Sample a point by absolute distance from the start (in the same units as your points).
|
|
2622
|
+
* This is a convenience wrapper over {@link getPointAtProgress}.
|
|
2623
|
+
*
|
|
2624
|
+
* @param distance Distance from 0 to {@link totalLength}. Values outside are clamped.
|
|
2625
|
+
* @returns Interpolated point, segment tangent, and whether it was clamped to an edge.
|
|
2626
|
+
*/
|
|
2627
|
+
getPointAtDistance(distance) {
|
|
2628
|
+
const progress = this._polyline.totalLength ? distance / this._polyline.totalLength : 0;
|
|
2629
|
+
return this.getPointAtProgress(progress);
|
|
2630
|
+
}
|
|
2631
|
+
// =============== Internal utilities ===============
|
|
2632
|
+
/** Binary-search the first index where cumulativeLengths[index] >= target. */
|
|
2633
|
+
static _findRightIndex(cumulativeLengths, target) {
|
|
2634
|
+
let lo = 0;
|
|
2635
|
+
let hi = cumulativeLengths.length - 1;
|
|
2636
|
+
while (lo < hi) {
|
|
2637
|
+
const mid = (lo + hi) >> 1;
|
|
2638
|
+
if (cumulativeLengths[mid] < target)
|
|
2639
|
+
lo = mid + 1;
|
|
2640
|
+
else
|
|
2641
|
+
hi = mid;
|
|
2642
|
+
}
|
|
2643
|
+
return lo;
|
|
2644
|
+
}
|
|
2645
|
+
/** Linear interpolation between `a` and `b`. */
|
|
2646
|
+
static _lerp(a, b, t) {
|
|
2647
|
+
return a + (b - a) * t;
|
|
2648
|
+
}
|
|
2649
|
+
/** Clamp `value` into [min, max]. */
|
|
2650
|
+
static _clamp(value, min, max) {
|
|
2651
|
+
return value < min ? min : value > max ? max : value;
|
|
2652
|
+
}
|
|
2653
|
+
/** Safe ratio `num / den` with tiny-denominator guard. */
|
|
2654
|
+
static _safeRatio(num, den) {
|
|
2655
|
+
const d = Math.abs(den) < 1e-6 ? 1e-6 : den;
|
|
2656
|
+
return num / d;
|
|
2657
|
+
}
|
|
2658
|
+
}
|
|
2659
|
+
/* ============================
|
|
2660
|
+
Example
|
|
2661
|
+
===============================
|
|
2662
|
+
const sampler = new PolylineSampler([
|
|
2663
|
+
{ x: 0, y: 0 },
|
|
2664
|
+
{ x: 10, y: 0 },
|
|
2665
|
+
{ x: 10, y: 10 },
|
|
2666
|
+
]);
|
|
2667
|
+
|
|
2668
|
+
console.log('Total length:', sampler.totalLength); // -> 20
|
|
2669
|
+
|
|
2670
|
+
const s1 = sampler.getPointAtProgress(0.25);
|
|
2671
|
+
console.log(s1.point, s1.tangent, s1.atEdge);
|
|
2672
|
+
|
|
2673
|
+
const s2 = sampler.getPointAtDistance(15); // same as progress 0.75
|
|
2674
|
+
console.log(s2.point, s2.tangent, s2.atEdge);
|
|
2675
|
+
*/
|
|
2676
|
+
|
|
2677
|
+
var PolylineContentAlign;
|
|
2678
|
+
(function (PolylineContentAlign) {
|
|
2679
|
+
PolylineContentAlign["NONE"] = "none";
|
|
2680
|
+
PolylineContentAlign["ALONG"] = "along";
|
|
2681
|
+
})(PolylineContentAlign || (PolylineContentAlign = {}));
|
|
2682
|
+
|
|
2683
|
+
/**
|
|
2684
|
+
* Encapsulates placement logic for a single content item along the path.
|
|
2685
|
+
*/
|
|
2686
|
+
class PolylineContentPlace {
|
|
2687
|
+
compute(sampler, content) {
|
|
2688
|
+
const progress = this._clamp01(content.position());
|
|
2689
|
+
const { point, tangent } = sampler.getPointAtLength(progress);
|
|
2690
|
+
// Left-hand normal
|
|
2691
|
+
const normal = { x: -tangent.y, y: tangent.x };
|
|
2692
|
+
// Apply lateral offset
|
|
2693
|
+
const lateral = content.offset() ?? 0;
|
|
2694
|
+
const x = point.x + normal.x * lateral;
|
|
2695
|
+
const y = point.y + normal.y * lateral;
|
|
2696
|
+
// Edge guard
|
|
2697
|
+
const projectedSize = this._sizeAlongDirection(content.hostElement, tangent);
|
|
2698
|
+
const halfExtent = projectedSize * 0.5;
|
|
2699
|
+
const distanceFromStart = progress * sampler.totalLength;
|
|
2700
|
+
const distanceFromEnd = sampler.totalLength - distanceFromStart;
|
|
2701
|
+
const position = this._applyEdgeGuard(x, y, tangent, distanceFromStart, distanceFromEnd, halfExtent);
|
|
2702
|
+
const rotationDeg = this._calculateContentRotation(content.align(), tangent);
|
|
2703
|
+
return { position, rotationDeg };
|
|
2704
|
+
}
|
|
2705
|
+
_clamp01(v) {
|
|
2706
|
+
return v <= 0 ? 0 : v >= 1 ? 1 : v;
|
|
2707
|
+
}
|
|
2708
|
+
_applyEdgeGuard(x, y, tangent, distanceFromStart, distanceFromEnd, halfExtent) {
|
|
2709
|
+
if (distanceFromStart <= halfExtent) {
|
|
2710
|
+
const push = halfExtent - distanceFromStart;
|
|
2711
|
+
return { x: x + tangent.x * push, y: y + tangent.y * push };
|
|
2712
|
+
}
|
|
2713
|
+
if (distanceFromEnd <= halfExtent) {
|
|
2714
|
+
const push = halfExtent - distanceFromEnd;
|
|
2715
|
+
return { x: x - tangent.x * push, y: y - tangent.y * push };
|
|
2716
|
+
}
|
|
2717
|
+
return { x, y };
|
|
2718
|
+
}
|
|
2719
|
+
_sizeAlongDirection(element, dir) {
|
|
2720
|
+
const rect = element.getBoundingClientRect();
|
|
2721
|
+
return Math.abs(dir.x) * rect.width + Math.abs(dir.y) * rect.height;
|
|
2722
|
+
}
|
|
2723
|
+
_normalize180(angleDeg) {
|
|
2724
|
+
let a = (angleDeg + 180) % 360;
|
|
2725
|
+
if (a < 0)
|
|
2726
|
+
a += 360;
|
|
2727
|
+
return a - 180;
|
|
2728
|
+
}
|
|
2729
|
+
_keepUpright(angleDeg) {
|
|
2730
|
+
let a = this._normalize180(angleDeg);
|
|
2731
|
+
if (a > 90)
|
|
2732
|
+
a -= 180;
|
|
2733
|
+
else if (a < -90)
|
|
2734
|
+
a += 180;
|
|
2735
|
+
return a;
|
|
2736
|
+
}
|
|
2737
|
+
_calculateContentRotation(align, tangent) {
|
|
2738
|
+
let result = 0;
|
|
2739
|
+
if (align === PolylineContentAlign.ALONG) {
|
|
2740
|
+
result = (Math.atan2(tangent.y, tangent.x) * 180) / Math.PI;
|
|
2741
|
+
result = this._keepUpright(result);
|
|
2742
|
+
}
|
|
2743
|
+
return result;
|
|
2744
|
+
}
|
|
2745
|
+
}
|
|
2746
|
+
|
|
2747
|
+
/**
|
|
2748
|
+
* Engine that orchestrates positioning and orientation of all
|
|
2749
|
+
* connection contents along a computed path.
|
|
2750
|
+
*/
|
|
2751
|
+
class ConnectionContentLayoutEngine {
|
|
2752
|
+
_placement;
|
|
2753
|
+
constructor(_placement = new PolylineContentPlace()) {
|
|
2754
|
+
this._placement = _placement;
|
|
2755
|
+
}
|
|
2756
|
+
layout(line, builderResult, contents) {
|
|
2757
|
+
const sampler = new PolylineSampler(builderResult.points ?? calculatePathPointsIfEmpty(line, builderResult));
|
|
2758
|
+
const total = sampler.totalLength;
|
|
2759
|
+
for (const item of contents) {
|
|
2760
|
+
const { position, rotationDeg } = this._placement.compute(sampler, item);
|
|
2761
|
+
const style = this._createTransformString(position, rotationDeg);
|
|
2762
|
+
item.hostElement.setAttribute('style', style);
|
|
2763
|
+
}
|
|
2764
|
+
return total;
|
|
2765
|
+
}
|
|
2766
|
+
_createTransformString(position, rotationDeg) {
|
|
2767
|
+
return `position: fixed; pointer-events: all; transform: translate(-50%, -50%) rotate(${rotationDeg}deg); left: ${position.x}px; top: ${position.y}px`;
|
|
2768
|
+
}
|
|
2769
|
+
}
|
|
2770
|
+
function calculatePathPointsIfEmpty({ point1, point2 }, { secondPoint, connectionCenter, penultimatePoint }) {
|
|
2771
|
+
return [point1, secondPoint || point1, connectionCenter, penultimatePoint || point2, point2];
|
|
2772
|
+
}
|
|
2773
|
+
|
|
2774
|
+
/**
|
|
2775
|
+
* Directive for placing custom user content (text, icons, buttons, etc.)
|
|
2776
|
+
* along a connection line.
|
|
2777
|
+
*
|
|
2778
|
+
* It allows you to specify the position along the connection,
|
|
2779
|
+
* shift the content sideways (perpendicular to the path),
|
|
2780
|
+
* apply a margin near the edges, and control orientation.
|
|
2781
|
+
*
|
|
2782
|
+
* ### Usage examples
|
|
2783
|
+
*
|
|
2784
|
+
* ```html
|
|
2785
|
+
* <!-- Text centered on the connection -->
|
|
2786
|
+
* <div fConnectionContent [position]="0.5">
|
|
2787
|
+
* Hello
|
|
2788
|
+
* </div>
|
|
2789
|
+
*
|
|
2790
|
+
* <!-- Button near the start of the connection, shifted upward by 12px -->
|
|
2791
|
+
* <button fConnectionContent [position]="0.2" [offset]="-12">
|
|
2792
|
+
* +
|
|
2793
|
+
* </button>
|
|
2794
|
+
*
|
|
2795
|
+
* <!-- Icon at the end of the connection, with 6px margin and rotated along the path -->
|
|
2796
|
+
* <span fConnectionContent [position]="1" [margin]="6" align="along">
|
|
2797
|
+
* ⮕
|
|
2798
|
+
* </span>
|
|
2799
|
+
* ```
|
|
2800
|
+
*/
|
|
2801
|
+
class FConnectionContent {
|
|
2802
|
+
_mediator = inject(FMediator);
|
|
2803
|
+
_injector = inject(Injector);
|
|
2804
|
+
/**
|
|
2805
|
+
* The host DOM element to which the directive is applied.
|
|
2806
|
+
* Used internally for positioning calculations.
|
|
2807
|
+
*/
|
|
2808
|
+
hostElement = inject((ElementRef)).nativeElement;
|
|
2809
|
+
/**
|
|
2810
|
+
* Position along the connection.
|
|
2811
|
+
*
|
|
2812
|
+
* A normalized value in the range `0..1`:
|
|
2813
|
+
* - `0` — at the start of the connection,
|
|
2814
|
+
* - `1` — at the end of the connection,
|
|
2815
|
+
* - `0.5` — at the middle of the connection (default).
|
|
2816
|
+
*/
|
|
2817
|
+
position = input(0.5, {
|
|
2818
|
+
transform: (v) => (v < 0 ? 0 : v > 1 ? 1 : v),
|
|
2819
|
+
});
|
|
2820
|
+
/**
|
|
2821
|
+
* Perpendicular offset from the connection line (in pixels).
|
|
2822
|
+
*
|
|
2823
|
+
* - Positive values shift the element to the right
|
|
2824
|
+
* relative to the line direction.
|
|
2825
|
+
* - Negative values shift it to the left.
|
|
2826
|
+
* - Default: `0` (no shift).
|
|
2827
|
+
*/
|
|
2828
|
+
offset = input(0);
|
|
2829
|
+
/**
|
|
2830
|
+
* Controls the orientation (rotation) of the content relative to the connection.
|
|
2831
|
+
*
|
|
2832
|
+
* Possible values:
|
|
2833
|
+
* - `'none'` — no rotation (default).
|
|
2834
|
+
* - `'along'` — aligned along the path (tangent).
|
|
2835
|
+
*/
|
|
2836
|
+
align = input(PolylineContentAlign.NONE, {
|
|
2837
|
+
transform: (x) => castToEnum(x, 'align', PolylineContentAlign),
|
|
2838
|
+
});
|
|
2839
|
+
ngOnInit() {
|
|
2840
|
+
this._listenChanges();
|
|
2841
|
+
}
|
|
2842
|
+
_listenChanges() {
|
|
2843
|
+
effect(() => {
|
|
2844
|
+
this.offset();
|
|
2845
|
+
this.position();
|
|
2846
|
+
this.align();
|
|
2847
|
+
untracked(() => this._mediator.execute(new NotifyDataChangedRequest()));
|
|
2848
|
+
}, { injector: this._injector });
|
|
2849
|
+
}
|
|
2850
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2851
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FConnectionContent, isStandalone: true, selector: "[fConnectionContent]", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "f-connection-content" }, ngImport: i0 });
|
|
2852
|
+
}
|
|
2853
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionContent, decorators: [{
|
|
2854
|
+
type: Directive,
|
|
2855
|
+
args: [{
|
|
2856
|
+
selector: '[fConnectionContent]',
|
|
2857
|
+
standalone: true,
|
|
2858
|
+
host: {
|
|
2859
|
+
'class': 'f-connection-content',
|
|
2860
|
+
},
|
|
2861
|
+
}]
|
|
2862
|
+
}] });
|
|
2863
|
+
|
|
2446
2864
|
const MIXIN_BASE = mixinChangeSelection(mixinChangeVisibility(class {
|
|
2447
2865
|
hostElement;
|
|
2448
2866
|
constructor(hostElement) {
|
|
@@ -2450,7 +2868,7 @@ const MIXIN_BASE = mixinChangeSelection(mixinChangeVisibility(class {
|
|
|
2450
2868
|
}
|
|
2451
2869
|
}));
|
|
2452
2870
|
class FConnectionBase extends MIXIN_BASE {
|
|
2453
|
-
|
|
2871
|
+
_connectionFactory = inject(FConnectionFactory);
|
|
2454
2872
|
fStartColor = input('black');
|
|
2455
2873
|
fEndColor = input('black');
|
|
2456
2874
|
path = '';
|
|
@@ -2466,12 +2884,16 @@ class FConnectionBase extends MIXIN_BASE {
|
|
|
2466
2884
|
fSelection = viewChild.required(FConnectionSelectionComponent);
|
|
2467
2885
|
fTextComponent = viewChild.required(CONNECTION_TEXT);
|
|
2468
2886
|
fConnectionCenter = viewChild('fConnectionCenter');
|
|
2469
|
-
fConnectionCenters = contentChildren(FConnectionCenterDirective, {
|
|
2470
|
-
|
|
2471
|
-
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
|
|
2887
|
+
fConnectionCenters = contentChildren(FConnectionCenterDirective, {
|
|
2888
|
+
descendants: true,
|
|
2889
|
+
});
|
|
2890
|
+
fConnectionContents = contentChildren(FConnectionContent, {
|
|
2891
|
+
descendants: true,
|
|
2892
|
+
});
|
|
2893
|
+
_penultimatePoint = PointExtensions.initialize();
|
|
2894
|
+
_secondPoint = PointExtensions.initialize();
|
|
2895
|
+
constructor() {
|
|
2896
|
+
super(inject((ElementRef)).nativeElement);
|
|
2475
2897
|
}
|
|
2476
2898
|
initialize() {
|
|
2477
2899
|
this.fPath().initialize();
|
|
@@ -2483,22 +2905,26 @@ class FConnectionBase extends MIXIN_BASE {
|
|
|
2483
2905
|
}
|
|
2484
2906
|
setLine({ point1, point2 }, sourceSide, targetSide) {
|
|
2485
2907
|
this.line = LineExtensions.initialize(point1, point2);
|
|
2486
|
-
const pathResult = this.
|
|
2908
|
+
const pathResult = this._getPathResult(point1, sourceSide, point2, targetSide);
|
|
2487
2909
|
this.path = pathResult.path;
|
|
2488
|
-
this.
|
|
2489
|
-
this.
|
|
2490
|
-
|
|
2910
|
+
this._penultimatePoint = pathResult.penultimatePoint || point1;
|
|
2911
|
+
this._secondPoint = pathResult.secondPoint || point2;
|
|
2912
|
+
new ConnectionContentLayoutEngine().layout(this.line, pathResult, this._contents());
|
|
2913
|
+
this.fConnectionCenter()?.nativeElement?.setAttribute('style', this._createTransformString(pathResult.connectionCenter));
|
|
2914
|
+
}
|
|
2915
|
+
_contents() {
|
|
2916
|
+
return Array.from(this.fConnectionContents()?.values() ?? []);
|
|
2491
2917
|
}
|
|
2492
|
-
|
|
2918
|
+
_getPathResult(source, sourceSide, target, targetSide) {
|
|
2493
2919
|
const radius = this.fRadius > 0 ? this.fRadius : 0;
|
|
2494
2920
|
const offset = this.fOffset > 0 ? this.fOffset : 1;
|
|
2495
|
-
return this.
|
|
2921
|
+
return this._connectionFactory.handle({
|
|
2496
2922
|
type: this.fType,
|
|
2497
2923
|
payload: { source, sourceSide, target, targetSide, radius, offset },
|
|
2498
2924
|
});
|
|
2499
2925
|
}
|
|
2500
|
-
|
|
2501
|
-
return `position: absolute;
|
|
2926
|
+
_createTransformString(position, rotate = 0) {
|
|
2927
|
+
return `position: absolute; pointer-events: all; transform: translate(-50%, -50%) rotate(${rotate}deg); left: ${position.x}px; top: ${position.y}px`;
|
|
2502
2928
|
}
|
|
2503
2929
|
markChildrenAsSelected() {
|
|
2504
2930
|
this.fPath().select();
|
|
@@ -2510,16 +2936,16 @@ class FConnectionBase extends MIXIN_BASE {
|
|
|
2510
2936
|
this.fPath().setPath(this.path);
|
|
2511
2937
|
this.fSelection().setPath(this.path);
|
|
2512
2938
|
this.fGradient().redraw(this.line);
|
|
2513
|
-
this.fDragHandleEnd().redraw(this.
|
|
2514
|
-
this.fDragHandleStart()?.redraw(this.
|
|
2939
|
+
this.fDragHandleEnd().redraw(this._penultimatePoint, this.line.point2);
|
|
2940
|
+
this.fDragHandleStart()?.redraw(this._secondPoint, this.line.point1);
|
|
2515
2941
|
this.fTextComponent().redraw(this.line);
|
|
2516
2942
|
}
|
|
2517
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionBase, deps: [
|
|
2518
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: FConnectionBase, inputs: { fStartColor: { classPropertyName: "fStartColor", publicName: "fStartColor", isSignal: true, isRequired: false, transformFunction: null }, fEndColor: { classPropertyName: "fEndColor", publicName: "fEndColor", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "fConnectionCenters", predicate: FConnectionCenterDirective, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "fDefs", first: true, predicate: ["defs"], descendants: true, isSignal: true }, { propertyName: "fPath", first: true, predicate: CONNECTION_PATH, descendants: true, isSignal: true }, { propertyName: "fGradient", first: true, predicate: CONNECTION_GRADIENT, descendants: true, isSignal: true }, { propertyName: "fDragHandleStart", first: true, predicate: FConnectionDragHandleStartComponent, descendants: true, isSignal: true }, { propertyName: "fDragHandleEnd", first: true, predicate: FConnectionDragHandleEndComponent, descendants: true, isSignal: true }, { propertyName: "fSelection", first: true, predicate: FConnectionSelectionComponent, descendants: true, isSignal: true }, { propertyName: "fTextComponent", first: true, predicate: CONNECTION_TEXT, descendants: true, isSignal: true }, { propertyName: "fConnectionCenter", first: true, predicate: ["fConnectionCenter"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 });
|
|
2943
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2944
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.2.13", type: FConnectionBase, inputs: { fStartColor: { classPropertyName: "fStartColor", publicName: "fStartColor", isSignal: true, isRequired: false, transformFunction: null }, fEndColor: { classPropertyName: "fEndColor", publicName: "fEndColor", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "fConnectionCenters", predicate: FConnectionCenterDirective, descendants: true, isSignal: true }, { propertyName: "fConnectionContents", predicate: FConnectionContent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "fDefs", first: true, predicate: ["defs"], descendants: true, isSignal: true }, { propertyName: "fPath", first: true, predicate: CONNECTION_PATH, descendants: true, isSignal: true }, { propertyName: "fGradient", first: true, predicate: CONNECTION_GRADIENT, descendants: true, isSignal: true }, { propertyName: "fDragHandleStart", first: true, predicate: FConnectionDragHandleStartComponent, descendants: true, isSignal: true }, { propertyName: "fDragHandleEnd", first: true, predicate: FConnectionDragHandleEndComponent, descendants: true, isSignal: true }, { propertyName: "fSelection", first: true, predicate: FConnectionSelectionComponent, descendants: true, isSignal: true }, { propertyName: "fTextComponent", first: true, predicate: CONNECTION_TEXT, descendants: true, isSignal: true }, { propertyName: "fConnectionCenter", first: true, predicate: ["fConnectionCenter"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 });
|
|
2519
2945
|
}
|
|
2520
2946
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionBase, decorators: [{
|
|
2521
2947
|
type: Directive
|
|
2522
|
-
}], ctorParameters: () => [
|
|
2948
|
+
}], ctorParameters: () => [] });
|
|
2523
2949
|
|
|
2524
2950
|
var EFConnectionBehavior;
|
|
2525
2951
|
(function (EFConnectionBehavior) {
|
|
@@ -2540,8 +2966,8 @@ class FConnectionForCreateComponent extends FConnectionBase {
|
|
|
2540
2966
|
fId = signal(`f-connection-for-create-${uniqueId$6++}`);
|
|
2541
2967
|
fText = '';
|
|
2542
2968
|
fTextStartOffset = '';
|
|
2543
|
-
fOutputId;
|
|
2544
|
-
fInputId;
|
|
2969
|
+
fOutputId = signal('');
|
|
2970
|
+
fInputId = signal('');
|
|
2545
2971
|
fRadius = 8;
|
|
2546
2972
|
fOffset = 12;
|
|
2547
2973
|
fBehavior = EFConnectionBehavior.FIXED;
|
|
@@ -2550,9 +2976,6 @@ class FConnectionForCreateComponent extends FConnectionBase {
|
|
|
2550
2976
|
return this.fPath().hostElement;
|
|
2551
2977
|
}
|
|
2552
2978
|
_mediator = inject(FMediator);
|
|
2553
|
-
constructor(elementReference, fConnectionFactory) {
|
|
2554
|
-
super(elementReference, fConnectionFactory);
|
|
2555
|
-
}
|
|
2556
2979
|
ngOnInit() {
|
|
2557
2980
|
this._mediator.execute(new AddConnectionForCreateToStoreRequest(this));
|
|
2558
2981
|
}
|
|
@@ -2565,15 +2988,15 @@ class FConnectionForCreateComponent extends FConnectionBase {
|
|
|
2565
2988
|
ngOnDestroy() {
|
|
2566
2989
|
this._mediator.execute(new RemoveConnectionForCreateFromStoreRequest());
|
|
2567
2990
|
}
|
|
2568
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionForCreateComponent, deps:
|
|
2569
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FConnectionForCreateComponent, selector: "f-connection-for-create", inputs: { fRadius: ["fRadius", "fRadius", numberAttribute], fOffset: ["fOffset", "fOffset", numberAttribute], fBehavior: ["fBehavior", "fBehavior", (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior)], fType: "fType" }, host: { classAttribute: "f-component f-connection f-connection-for-create" }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionForCreateComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path
|
|
2991
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionForCreateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2992
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FConnectionForCreateComponent, selector: "f-connection-for-create", inputs: { fRadius: ["fRadius", "fRadius", numberAttribute], fOffset: ["fOffset", "fOffset", numberAttribute], fBehavior: ["fBehavior", "fBehavior", (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior)], fType: "fType" }, host: { classAttribute: "f-component f-connection f-connection-for-create" }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionForCreateComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionTextComponent, selector: "text[f-connection-text]" }, { kind: "component", type: FConnectionDragHandleStartComponent, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: FConnectionDragHandleEndComponent, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]" }, { kind: "component", type: FConnectionPathComponent, selector: "path[f-connection-path]" }, { kind: "component", type: FConnectionSelectionComponent, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2570
2993
|
}
|
|
2571
2994
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionForCreateComponent, decorators: [{
|
|
2572
2995
|
type: Component,
|
|
2573
|
-
args: [{ selector:
|
|
2574
|
-
class:
|
|
2575
|
-
}, providers: [{ provide: F_CONNECTION, useExisting: FConnectionForCreateComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path
|
|
2576
|
-
}],
|
|
2996
|
+
args: [{ selector: 'f-connection-for-create', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
2997
|
+
class: 'f-component f-connection f-connection-for-create',
|
|
2998
|
+
}, providers: [{ provide: F_CONNECTION, useExisting: FConnectionForCreateComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"] }]
|
|
2999
|
+
}], propDecorators: { fRadius: [{
|
|
2577
3000
|
type: Input,
|
|
2578
3001
|
args: [{ transform: numberAttribute }]
|
|
2579
3002
|
}], fOffset: [{
|
|
@@ -2589,10 +3012,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2589
3012
|
let uniqueId$5 = 0;
|
|
2590
3013
|
class FConnectionComponent extends FConnectionBase {
|
|
2591
3014
|
fId = input(`f-connection-${uniqueId$5++}`, { alias: 'fConnectionId' });
|
|
3015
|
+
/** @deprecated [fText] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead. */
|
|
2592
3016
|
fText = '';
|
|
3017
|
+
/** @deprecated [fTextStartOffset] is deprecated and will be removed in v18.0.0. Use FConnectionContent directive instead. */
|
|
2593
3018
|
fTextStartOffset = '';
|
|
2594
|
-
fOutputId = ''
|
|
2595
|
-
|
|
3019
|
+
fOutputId = input('', {
|
|
3020
|
+
transform: (value) => stringAttribute(value) || '',
|
|
3021
|
+
});
|
|
3022
|
+
fInputId = input('', {
|
|
3023
|
+
transform: (value) => stringAttribute(value) || '',
|
|
3024
|
+
});
|
|
2596
3025
|
fRadius = 8;
|
|
2597
3026
|
fOffset = 12;
|
|
2598
3027
|
fBehavior = EFConnectionBehavior.FIXED;
|
|
@@ -2607,9 +3036,6 @@ class FConnectionComponent extends FConnectionBase {
|
|
|
2607
3036
|
return this.fPath().hostElement;
|
|
2608
3037
|
}
|
|
2609
3038
|
_mediator = inject(FMediator);
|
|
2610
|
-
constructor(elementReference, fConnectionFactory) {
|
|
2611
|
-
super(elementReference, fConnectionFactory);
|
|
2612
|
-
}
|
|
2613
3039
|
ngOnInit() {
|
|
2614
3040
|
this._mediator.execute(new AddConnectionToStoreRequest(this));
|
|
2615
3041
|
}
|
|
@@ -2619,25 +3045,21 @@ class FConnectionComponent extends FConnectionBase {
|
|
|
2619
3045
|
ngOnDestroy() {
|
|
2620
3046
|
this._mediator.execute(new RemoveConnectionFromStoreRequest(this));
|
|
2621
3047
|
}
|
|
2622
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionComponent, deps:
|
|
2623
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FConnectionComponent, selector: "f-connection", inputs: { fId: { classPropertyName: "fId", publicName: "fConnectionId", isSignal: true, isRequired: false, transformFunction: null }, fText: { classPropertyName: "fText", publicName: "fText", isSignal: false, isRequired: false, transformFunction: null }, fTextStartOffset: { classPropertyName: "fTextStartOffset", publicName: "fTextStartOffset", isSignal: false, isRequired: false, transformFunction: null }, fOutputId: { classPropertyName: "fOutputId", publicName: "fOutputId", isSignal:
|
|
3048
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
3049
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FConnectionComponent, selector: "f-connection", inputs: { fId: { classPropertyName: "fId", publicName: "fConnectionId", isSignal: true, isRequired: false, transformFunction: null }, fText: { classPropertyName: "fText", publicName: "fText", isSignal: false, isRequired: false, transformFunction: null }, fTextStartOffset: { classPropertyName: "fTextStartOffset", publicName: "fTextStartOffset", isSignal: false, 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 } }, host: { properties: { "attr.id": "fId()", "class.f-connection-selection-disabled": "fSelectionDisabled()", "class.f-connection-reassign-disabled": "fDraggingDisabled()" }, classAttribute: "f-component f-connection" }, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], exportAs: ["fComponent"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"overflow: visible; display: block; vertical-align: middle;\"\n>\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [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 <text f-connection-text></text>\n </g>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionTextComponent, selector: "text[f-connection-text]" }, { kind: "component", type: FConnectionDragHandleStartComponent, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: FConnectionDragHandleEndComponent, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]" }, { kind: "component", type: FConnectionPathComponent, selector: "path[f-connection-path]" }, { kind: "component", type: FConnectionSelectionComponent, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2624
3050
|
}
|
|
2625
3051
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionComponent, decorators: [{
|
|
2626
3052
|
type: Component,
|
|
2627
|
-
args: [{ selector:
|
|
3053
|
+
args: [{ selector: 'f-connection', exportAs: 'fComponent', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
2628
3054
|
'[attr.id]': 'fId()',
|
|
2629
|
-
class:
|
|
3055
|
+
class: 'f-component f-connection',
|
|
2630
3056
|
'[class.f-connection-selection-disabled]': 'fSelectionDisabled()',
|
|
2631
3057
|
'[class.f-connection-reassign-disabled]': 'fDraggingDisabled()',
|
|
2632
|
-
}, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], template: "<svg
|
|
2633
|
-
}],
|
|
3058
|
+
}, providers: [{ provide: F_CONNECTION, useExisting: FConnectionComponent }], template: "<svg\n xmlns=\"http://www.w3.org/2000/svg\"\n style=\"overflow: visible; display: block; vertical-align: middle;\"\n>\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [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 <text f-connection-text></text>\n </g>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"] }]
|
|
3059
|
+
}], propDecorators: { fText: [{
|
|
2634
3060
|
type: Input
|
|
2635
3061
|
}], fTextStartOffset: [{
|
|
2636
3062
|
type: Input
|
|
2637
|
-
}], fOutputId: [{
|
|
2638
|
-
type: Input
|
|
2639
|
-
}], fInputId: [{
|
|
2640
|
-
type: Input
|
|
2641
3063
|
}], fRadius: [{
|
|
2642
3064
|
type: Input,
|
|
2643
3065
|
args: [{ transform: numberAttribute }]
|
|
@@ -2661,18 +3083,11 @@ var EFMarkerType;
|
|
|
2661
3083
|
|
|
2662
3084
|
const F_MARKER = new InjectionToken('F_MARKER');
|
|
2663
3085
|
class FMarkerBase {
|
|
2664
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FMarkerBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2665
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FMarkerBase, ngImport: i0 });
|
|
2666
3086
|
}
|
|
2667
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FMarkerBase, decorators: [{
|
|
2668
|
-
type: Directive
|
|
2669
|
-
}] });
|
|
2670
3087
|
|
|
2671
3088
|
class FMarkerDirective extends FMarkerBase {
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
return this.elementReference.nativeElement;
|
|
2675
|
-
}
|
|
3089
|
+
hostElement = inject((ElementRef)).nativeElement;
|
|
3090
|
+
_mediator = inject(FMediator);
|
|
2676
3091
|
width = 0;
|
|
2677
3092
|
height = 0;
|
|
2678
3093
|
refX = 0;
|
|
@@ -2680,33 +3095,26 @@ class FMarkerDirective extends FMarkerBase {
|
|
|
2680
3095
|
type = EFMarkerType.START;
|
|
2681
3096
|
orient = 'auto';
|
|
2682
3097
|
markerUnits = 'strokeWidth';
|
|
2683
|
-
_fMediator = inject(FMediator);
|
|
2684
|
-
constructor(elementReference) {
|
|
2685
|
-
super();
|
|
2686
|
-
this.elementReference = elementReference;
|
|
2687
|
-
this.hostElement.style.display = 'none';
|
|
2688
|
-
}
|
|
2689
3098
|
ngOnInit() {
|
|
2690
|
-
this.
|
|
3099
|
+
this.hostElement.style.display = 'none';
|
|
3100
|
+
this._mediator.execute(new AddConnectionMarkerToStoreRequest(this));
|
|
2691
3101
|
}
|
|
2692
3102
|
ngOnDestroy() {
|
|
2693
|
-
this.
|
|
3103
|
+
this._mediator.execute(new RemoveConnectionMarkerFromStoreRequest(this));
|
|
2694
3104
|
}
|
|
2695
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FMarkerDirective, deps:
|
|
2696
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FMarkerDirective, selector: "svg[fMarker]", inputs: {
|
|
3105
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FMarkerDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
3106
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: FMarkerDirective, selector: "svg[fMarker]", inputs: { width: "width", height: "height", refX: "refX", refY: "refY", type: "type", orient: "orient", markerUnits: "markerUnits" }, host: { classAttribute: "f-component f-marker" }, providers: [{ provide: F_MARKER, useExisting: FMarkerDirective }], usesInheritance: true, ngImport: i0 });
|
|
2697
3107
|
}
|
|
2698
3108
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FMarkerDirective, decorators: [{
|
|
2699
3109
|
type: Directive,
|
|
2700
3110
|
args: [{
|
|
2701
|
-
selector:
|
|
3111
|
+
selector: 'svg[fMarker]',
|
|
2702
3112
|
host: {
|
|
2703
|
-
class:
|
|
3113
|
+
class: 'f-component f-marker',
|
|
2704
3114
|
},
|
|
2705
3115
|
providers: [{ provide: F_MARKER, useExisting: FMarkerDirective }],
|
|
2706
3116
|
}]
|
|
2707
|
-
}],
|
|
2708
|
-
type: Input
|
|
2709
|
-
}], width: [{
|
|
3117
|
+
}], propDecorators: { width: [{
|
|
2710
3118
|
type: Input
|
|
2711
3119
|
}], height: [{
|
|
2712
3120
|
type: Input
|
|
@@ -2728,8 +3136,8 @@ class FSnapConnectionComponent extends FConnectionBase {
|
|
|
2728
3136
|
fText = '';
|
|
2729
3137
|
fTextStartOffset = '';
|
|
2730
3138
|
fSnapThreshold = 20;
|
|
2731
|
-
fOutputId;
|
|
2732
|
-
fInputId;
|
|
3139
|
+
fOutputId = signal('');
|
|
3140
|
+
fInputId = signal('');
|
|
2733
3141
|
fRadius = 8;
|
|
2734
3142
|
fOffset = 12;
|
|
2735
3143
|
fBehavior = EFConnectionBehavior.FIXED;
|
|
@@ -2738,9 +3146,6 @@ class FSnapConnectionComponent extends FConnectionBase {
|
|
|
2738
3146
|
return this.fPath().hostElement;
|
|
2739
3147
|
}
|
|
2740
3148
|
_mediator = inject(FMediator);
|
|
2741
|
-
constructor(elementReference, fConnectionFactory) {
|
|
2742
|
-
super(elementReference, fConnectionFactory);
|
|
2743
|
-
}
|
|
2744
3149
|
ngOnInit() {
|
|
2745
3150
|
this._mediator.execute(new AddSnapConnectionToStoreRequest(this));
|
|
2746
3151
|
}
|
|
@@ -2753,15 +3158,15 @@ class FSnapConnectionComponent extends FConnectionBase {
|
|
|
2753
3158
|
ngOnDestroy() {
|
|
2754
3159
|
this._mediator.execute(new RemoveSnapConnectionFromStoreRequest());
|
|
2755
3160
|
}
|
|
2756
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FSnapConnectionComponent, deps:
|
|
2757
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FSnapConnectionComponent, selector: "f-snap-connection", inputs: { fSnapThreshold: ["fSnapThreshold", "fSnapThreshold", numberAttribute], fRadius: ["fRadius", "fRadius", numberAttribute], fOffset: ["fOffset", "fOffset", numberAttribute], fBehavior: ["fBehavior", "fBehavior", (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior)], fType: "fType" }, host: { classAttribute: "f-component f-connection f-snap-connection" }, providers: [{ provide: F_CONNECTION, useExisting: FSnapConnectionComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path
|
|
3161
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FSnapConnectionComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
3162
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FSnapConnectionComponent, selector: "f-snap-connection", inputs: { fSnapThreshold: ["fSnapThreshold", "fSnapThreshold", numberAttribute], fRadius: ["fRadius", "fRadius", numberAttribute], fOffset: ["fOffset", "fOffset", numberAttribute], fBehavior: ["fBehavior", "fBehavior", (value) => castToEnum(value, 'fBehavior', EFConnectionBehavior)], fType: "fType" }, host: { classAttribute: "f-component f-connection f-snap-connection" }, providers: [{ provide: F_CONNECTION, useExisting: FSnapConnectionComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"], dependencies: [{ kind: "component", type: FConnectionTextComponent, selector: "text[f-connection-text]" }, { kind: "component", type: FConnectionDragHandleStartComponent, selector: "circle[f-connection-drag-handle-start]" }, { kind: "component", type: FConnectionDragHandleEndComponent, selector: "circle[f-connection-drag-handle-end]" }, { kind: "component", type: FConnectionGradientComponent, selector: "linearGradient[fConnectionGradient]" }, { kind: "component", type: FConnectionPathComponent, selector: "path[f-connection-path]" }, { kind: "component", type: FConnectionSelectionComponent, selector: "path[fConnectionSelection]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2758
3163
|
}
|
|
2759
3164
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FSnapConnectionComponent, decorators: [{
|
|
2760
3165
|
type: Component,
|
|
2761
|
-
args: [{ selector:
|
|
2762
|
-
class:
|
|
2763
|
-
}, providers: [{ provide: F_CONNECTION, useExisting: FSnapConnectionComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path
|
|
2764
|
-
}],
|
|
3166
|
+
args: [{ selector: 'f-snap-connection', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
3167
|
+
class: 'f-component f-connection f-snap-connection',
|
|
3168
|
+
}, providers: [{ provide: F_CONNECTION, useExisting: FSnapConnectionComponent }], template: "<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-start r=\"8\"></circle>\n <circle f-connection-drag-handle-end r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n@if (fConnectionCenters().length) {\n <div #fConnectionCenter class=\"f-connection-center\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n </div>\n}\n\n@if (fConnectionContents().length) {\n <ng-content select=\"[fConnectionContent]\"></ng-content>\n}\n", styles: [":host{pointer-events:none;position:absolute}:host svg{overflow:visible}:host svg .f-connection-group{pointer-events:all}:host .f-connection-center,:host .f-connection-content{pointer-events:all}\n"] }]
|
|
3169
|
+
}], propDecorators: { fSnapThreshold: [{
|
|
2765
3170
|
type: Input,
|
|
2766
3171
|
args: [{ transform: numberAttribute }]
|
|
2767
3172
|
}], fRadius: [{
|
|
@@ -2797,19 +3202,19 @@ const F_CONNECTION_PROVIDERS = [
|
|
|
2797
3202
|
* It constructs a line between the intersections of the connectors rectangles and line from the centers of the connector rectangles
|
|
2798
3203
|
* @param payload
|
|
2799
3204
|
*/
|
|
2800
|
-
function floatingBehavior(
|
|
2801
|
-
return _getIntersectionsLine(_fromRoundedRectIntersections(
|
|
3205
|
+
function floatingBehavior({ sourceRect, targetRect, }) {
|
|
3206
|
+
return _getIntersectionsLine(_fromRoundedRectIntersections(sourceRect, targetRect), _toRoundedRectIntersections(sourceRect, targetRect), sourceRect, targetRect);
|
|
2802
3207
|
}
|
|
2803
|
-
function _fromRoundedRectIntersections(
|
|
2804
|
-
return GetIntersections.getRoundedRectIntersections(
|
|
3208
|
+
function _fromRoundedRectIntersections(sourceRect, targetRect) {
|
|
3209
|
+
return GetIntersections.getRoundedRectIntersections(sourceRect.gravityCenter, targetRect.gravityCenter, sourceRect)[0];
|
|
2805
3210
|
}
|
|
2806
|
-
function _toRoundedRectIntersections(
|
|
2807
|
-
return GetIntersections.getRoundedRectIntersections(
|
|
3211
|
+
function _toRoundedRectIntersections(sourceRect, targetRect) {
|
|
3212
|
+
return GetIntersections.getRoundedRectIntersections(targetRect.gravityCenter, sourceRect.gravityCenter, targetRect)[0];
|
|
2808
3213
|
}
|
|
2809
|
-
function _getIntersectionsLine(from, to,
|
|
3214
|
+
function _getIntersectionsLine(from, to, sourceRect, targetRect) {
|
|
2810
3215
|
return {
|
|
2811
|
-
point1: from ? from :
|
|
2812
|
-
point2: to ? to :
|
|
3216
|
+
point1: from ? from : sourceRect.gravityCenter,
|
|
3217
|
+
point2: to ? to : targetRect.gravityCenter,
|
|
2813
3218
|
};
|
|
2814
3219
|
}
|
|
2815
3220
|
|
|
@@ -2818,10 +3223,10 @@ function _getIntersectionsLine(from, to, payload) {
|
|
|
2818
3223
|
* It constructs a line between the gravity centers of the connector rectangles
|
|
2819
3224
|
* @param payload
|
|
2820
3225
|
*/
|
|
2821
|
-
function fixedCenterBehavior(
|
|
3226
|
+
function fixedCenterBehavior({ sourceRect, targetRect, }) {
|
|
2822
3227
|
return {
|
|
2823
|
-
point1:
|
|
2824
|
-
point2:
|
|
3228
|
+
point1: sourceRect.gravityCenter,
|
|
3229
|
+
point2: targetRect.gravityCenter,
|
|
2825
3230
|
};
|
|
2826
3231
|
}
|
|
2827
3232
|
|
|
@@ -2830,10 +3235,14 @@ function fixedCenterBehavior(payload) {
|
|
|
2830
3235
|
* It constructs a line between the specified sides of the output and input rectangles
|
|
2831
3236
|
* @param payload
|
|
2832
3237
|
*/
|
|
2833
|
-
function fixedOutboundBehavior(
|
|
3238
|
+
function fixedOutboundBehavior({ sourceRect, sourceConnectableSide, targetRect, targetConnectableSide, }) {
|
|
2834
3239
|
return {
|
|
2835
|
-
point1: _getPosition(
|
|
2836
|
-
|
|
3240
|
+
point1: _getPosition(sourceRect, sourceConnectableSide === EFConnectableSide.AUTO
|
|
3241
|
+
? EFConnectableSide.BOTTOM
|
|
3242
|
+
: sourceConnectableSide),
|
|
3243
|
+
point2: _getPosition(targetRect, targetConnectableSide === EFConnectableSide.AUTO
|
|
3244
|
+
? EFConnectableSide.TOP
|
|
3245
|
+
: targetConnectableSide),
|
|
2837
3246
|
};
|
|
2838
3247
|
}
|
|
2839
3248
|
function _getPosition(rect, side) {
|
|
@@ -2854,7 +3263,7 @@ function _getPosition(rect, side) {
|
|
|
2854
3263
|
/**
|
|
2855
3264
|
* Execution that calculates the connection line based on the behavior.
|
|
2856
3265
|
*/
|
|
2857
|
-
let
|
|
3266
|
+
let CalculateConnectionLineByBehavior = class CalculateConnectionLineByBehavior {
|
|
2858
3267
|
_handlers = {
|
|
2859
3268
|
[EFConnectionBehavior.FLOATING.toString()]: floatingBehavior,
|
|
2860
3269
|
[EFConnectionBehavior.FIXED_CENTER.toString()]: fixedCenterBehavior,
|
|
@@ -2863,13 +3272,13 @@ let CalculateConnectionLineByBehaviorExecution = class CalculateConnectionLineBy
|
|
|
2863
3272
|
handle(payload) {
|
|
2864
3273
|
return this._handlers[payload.behavior](payload);
|
|
2865
3274
|
}
|
|
2866
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
2867
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3275
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectionLineByBehavior, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3276
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectionLineByBehavior });
|
|
2868
3277
|
};
|
|
2869
|
-
|
|
3278
|
+
CalculateConnectionLineByBehavior = __decorate([
|
|
2870
3279
|
FExecutionRegister(CalculateConnectionLineByBehaviorRequest)
|
|
2871
|
-
],
|
|
2872
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3280
|
+
], CalculateConnectionLineByBehavior);
|
|
3281
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateConnectionLineByBehavior, decorators: [{
|
|
2873
3282
|
type: Injectable
|
|
2874
3283
|
}] });
|
|
2875
3284
|
|
|
@@ -2988,9 +3397,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2988
3397
|
* and sets up connections based on the stored outputs and inputs.
|
|
2989
3398
|
*/
|
|
2990
3399
|
let RedrawConnectionsExecution = class RedrawConnectionsExecution {
|
|
2991
|
-
|
|
3400
|
+
_mediator = inject(FMediator);
|
|
2992
3401
|
_store = inject(FComponentsStore);
|
|
2993
|
-
handle(
|
|
3402
|
+
handle(_request) {
|
|
2994
3403
|
this._resetConnectors();
|
|
2995
3404
|
if (this._store.fTempConnection) {
|
|
2996
3405
|
this._setMarkers(this._store.fTempConnection);
|
|
@@ -2999,18 +3408,18 @@ let RedrawConnectionsExecution = class RedrawConnectionsExecution {
|
|
|
2999
3408
|
this._setMarkers(this._store.fSnapConnection);
|
|
3000
3409
|
}
|
|
3001
3410
|
this._store.fConnections.forEach((x) => {
|
|
3002
|
-
this._setupConnection(this._getOutput(x.fOutputId), this._getInput(x.fInputId), x);
|
|
3411
|
+
this._setupConnection(this._getOutput(x.fOutputId()), this._getInput(x.fInputId()), x);
|
|
3003
3412
|
});
|
|
3004
3413
|
}
|
|
3005
3414
|
_getOutput(id) {
|
|
3006
|
-
const result = this._store.fOutputs.find((x) => x.fId === id);
|
|
3415
|
+
const result = this._store.fOutputs.find((x) => x.fId() === id);
|
|
3007
3416
|
if (!result) {
|
|
3008
3417
|
throw new Error(`Output with id ${id} not found`);
|
|
3009
3418
|
}
|
|
3010
3419
|
return result;
|
|
3011
3420
|
}
|
|
3012
3421
|
_getInput(id) {
|
|
3013
|
-
const result = this._store.fInputs.find((x) => x.fId === id);
|
|
3422
|
+
const result = this._store.fInputs.find((x) => x.fId() === id);
|
|
3014
3423
|
if (!result) {
|
|
3015
3424
|
throw new Error(`Input with id ${id} not found`);
|
|
3016
3425
|
}
|
|
@@ -3030,10 +3439,10 @@ let RedrawConnectionsExecution = class RedrawConnectionsExecution {
|
|
|
3030
3439
|
fConnection.isSelected() ? fConnection.markAsSelected() : null;
|
|
3031
3440
|
}
|
|
3032
3441
|
_getLine(output, input, connection) {
|
|
3033
|
-
return this.
|
|
3442
|
+
return this._mediator.execute(new CalculateConnectionLineByBehaviorRequest(this._mediator.execute(new GetNormalizedConnectorRectRequest(output.hostElement)), this._mediator.execute(new GetNormalizedConnectorRectRequest(input.hostElement)), connection.fBehavior, output.fConnectableSide, input.fConnectableSide));
|
|
3034
3443
|
}
|
|
3035
3444
|
_setMarkers(connection) {
|
|
3036
|
-
this.
|
|
3445
|
+
this._mediator.execute(new CreateConnectionMarkersRequest(connection));
|
|
3037
3446
|
}
|
|
3038
3447
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedrawConnectionsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3039
3448
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedrawConnectionsExecution });
|
|
@@ -3158,7 +3567,7 @@ const F_CONNECTION_FEATURES = [
|
|
|
3158
3567
|
AddConnectionToStoreExecution,
|
|
3159
3568
|
AddSnapConnectionToStoreExecution,
|
|
3160
3569
|
CreateConnectionMarkersExecution,
|
|
3161
|
-
|
|
3570
|
+
CalculateConnectionLineByBehavior,
|
|
3162
3571
|
RedrawConnectionsExecution,
|
|
3163
3572
|
RemoveConnectionForCreateFromStoreExecution,
|
|
3164
3573
|
RemoveConnectionFromStoreExecution,
|
|
@@ -3167,87 +3576,87 @@ const F_CONNECTION_FEATURES = [
|
|
|
3167
3576
|
];
|
|
3168
3577
|
|
|
3169
3578
|
class AddInputToStoreRequest {
|
|
3170
|
-
|
|
3579
|
+
component;
|
|
3171
3580
|
static fToken = Symbol('AddInputToStoreRequest');
|
|
3172
|
-
constructor(
|
|
3173
|
-
this.
|
|
3581
|
+
constructor(component) {
|
|
3582
|
+
this.component = component;
|
|
3174
3583
|
}
|
|
3175
3584
|
}
|
|
3176
3585
|
|
|
3177
3586
|
/**
|
|
3178
3587
|
* Execution that adds an InputConnector to the FComponentsStore.
|
|
3179
3588
|
*/
|
|
3180
|
-
let
|
|
3589
|
+
let AddInputToStore = class AddInputToStore {
|
|
3181
3590
|
_store = inject(FComponentsStore);
|
|
3182
|
-
handle(
|
|
3183
|
-
this._store.addComponent(this._store.fInputs,
|
|
3591
|
+
handle({ component }) {
|
|
3592
|
+
this._store.addComponent(this._store.fInputs, component);
|
|
3184
3593
|
}
|
|
3185
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3186
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3594
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddInputToStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3595
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddInputToStore });
|
|
3187
3596
|
};
|
|
3188
|
-
|
|
3597
|
+
AddInputToStore = __decorate([
|
|
3189
3598
|
FExecutionRegister(AddInputToStoreRequest)
|
|
3190
|
-
],
|
|
3191
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3599
|
+
], AddInputToStore);
|
|
3600
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddInputToStore, decorators: [{
|
|
3192
3601
|
type: Injectable
|
|
3193
3602
|
}] });
|
|
3194
3603
|
|
|
3195
3604
|
class AddOutletToStoreRequest {
|
|
3196
|
-
|
|
3605
|
+
component;
|
|
3197
3606
|
static fToken = Symbol('AddOutletToStoreRequest');
|
|
3198
|
-
constructor(
|
|
3199
|
-
this.
|
|
3607
|
+
constructor(component) {
|
|
3608
|
+
this.component = component;
|
|
3200
3609
|
}
|
|
3201
3610
|
}
|
|
3202
3611
|
|
|
3203
3612
|
/**
|
|
3204
3613
|
* Execution that adds an OutletConnector to the FComponentsStore.
|
|
3205
3614
|
*/
|
|
3206
|
-
let
|
|
3615
|
+
let AddOutletToStore = class AddOutletToStore {
|
|
3207
3616
|
_store = inject(FComponentsStore);
|
|
3208
|
-
handle(
|
|
3209
|
-
this._store.addComponent(this._store.fOutlets,
|
|
3617
|
+
handle({ component }) {
|
|
3618
|
+
this._store.addComponent(this._store.fOutlets, component);
|
|
3210
3619
|
}
|
|
3211
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3212
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3620
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutletToStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3621
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutletToStore });
|
|
3213
3622
|
};
|
|
3214
|
-
|
|
3623
|
+
AddOutletToStore = __decorate([
|
|
3215
3624
|
FExecutionRegister(AddOutletToStoreRequest)
|
|
3216
|
-
],
|
|
3217
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3625
|
+
], AddOutletToStore);
|
|
3626
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutletToStore, decorators: [{
|
|
3218
3627
|
type: Injectable
|
|
3219
3628
|
}] });
|
|
3220
3629
|
|
|
3221
3630
|
class AddOutputToStoreRequest {
|
|
3222
|
-
|
|
3631
|
+
component;
|
|
3223
3632
|
static fToken = Symbol('AddOutputToStoreRequest');
|
|
3224
|
-
constructor(
|
|
3225
|
-
this.
|
|
3633
|
+
constructor(component) {
|
|
3634
|
+
this.component = component;
|
|
3226
3635
|
}
|
|
3227
3636
|
}
|
|
3228
3637
|
|
|
3229
3638
|
/**
|
|
3230
3639
|
* Execution that adds an OutputConnector to the FComponentsStore.
|
|
3231
3640
|
*/
|
|
3232
|
-
let
|
|
3641
|
+
let AddOutputToStore = class AddOutputToStore {
|
|
3233
3642
|
_store = inject(FComponentsStore);
|
|
3234
|
-
handle(
|
|
3235
|
-
this._store.addComponent(this._store.fOutputs,
|
|
3643
|
+
handle({ component }) {
|
|
3644
|
+
this._store.addComponent(this._store.fOutputs, component);
|
|
3236
3645
|
}
|
|
3237
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3238
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3646
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutputToStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3647
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutputToStore });
|
|
3239
3648
|
};
|
|
3240
|
-
|
|
3649
|
+
AddOutputToStore = __decorate([
|
|
3241
3650
|
FExecutionRegister(AddOutputToStoreRequest)
|
|
3242
|
-
],
|
|
3243
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3651
|
+
], AddOutputToStore);
|
|
3652
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AddOutputToStore, decorators: [{
|
|
3244
3653
|
type: Injectable
|
|
3245
3654
|
}] });
|
|
3246
3655
|
|
|
3247
|
-
class
|
|
3656
|
+
class CalculateClosestConnectorRequest {
|
|
3248
3657
|
position;
|
|
3249
3658
|
connectors;
|
|
3250
|
-
static fToken = Symbol('
|
|
3659
|
+
static fToken = Symbol('CalculateClosestConnectorRequest');
|
|
3251
3660
|
constructor(position, connectors) {
|
|
3252
3661
|
this.position = position;
|
|
3253
3662
|
this.connectors = connectors;
|
|
@@ -3259,21 +3668,23 @@ class FindClosestConnectorRequest {
|
|
|
3259
3668
|
* It calculates the distance from the point to each connector's rectangle
|
|
3260
3669
|
* and returns the closest one along with its distance.
|
|
3261
3670
|
*/
|
|
3262
|
-
let
|
|
3263
|
-
handle(
|
|
3671
|
+
let CalculateClosestConnector = class CalculateClosestConnector {
|
|
3672
|
+
handle({ position, connectors, }) {
|
|
3264
3673
|
let result;
|
|
3265
3674
|
let minDistance = Infinity;
|
|
3266
|
-
for (const element of
|
|
3267
|
-
const distance = this._distanceToRectangle(
|
|
3675
|
+
for (const element of connectors) {
|
|
3676
|
+
const distance = this._distanceToRectangle(position, element);
|
|
3268
3677
|
if (distance < minDistance) {
|
|
3269
3678
|
minDistance = distance;
|
|
3270
3679
|
result = element;
|
|
3271
3680
|
}
|
|
3272
3681
|
}
|
|
3273
|
-
return result
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3682
|
+
return result
|
|
3683
|
+
? {
|
|
3684
|
+
...result,
|
|
3685
|
+
distance: minDistance,
|
|
3686
|
+
}
|
|
3687
|
+
: undefined;
|
|
3277
3688
|
}
|
|
3278
3689
|
_distanceToRectangle(point, inputWithRect) {
|
|
3279
3690
|
const closestX = this._clamp(point.x, inputWithRect.fRect.x, inputWithRect.fRect.x + inputWithRect.fRect.width);
|
|
@@ -3285,13 +3696,13 @@ let FindClosestConnectorExecution = class FindClosestConnectorExecution {
|
|
|
3285
3696
|
_clamp(value, min, max) {
|
|
3286
3697
|
return Math.max(min, Math.min(max, value));
|
|
3287
3698
|
}
|
|
3288
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3289
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3699
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateClosestConnector, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3700
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateClosestConnector });
|
|
3290
3701
|
};
|
|
3291
|
-
|
|
3292
|
-
FExecutionRegister(
|
|
3293
|
-
],
|
|
3294
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3702
|
+
CalculateClosestConnector = __decorate([
|
|
3703
|
+
FExecutionRegister(CalculateClosestConnectorRequest)
|
|
3704
|
+
], CalculateClosestConnector);
|
|
3705
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateClosestConnector, decorators: [{
|
|
3295
3706
|
type: Injectable
|
|
3296
3707
|
}] });
|
|
3297
3708
|
|
|
@@ -3346,21 +3757,24 @@ let FindConnectableConnectorUsingPriorityAndPositionExecution = class FindConnec
|
|
|
3346
3757
|
return result;
|
|
3347
3758
|
}
|
|
3348
3759
|
_filterConnectorsThatLocatedAtPosition(request) {
|
|
3349
|
-
return request.connectableConnectors
|
|
3760
|
+
return request.connectableConnectors
|
|
3761
|
+
.filter((x) => {
|
|
3350
3762
|
return RectExtensions.isIncludePoint(x.fRect, this._getPointInFlow(request.pointerPosition));
|
|
3351
|
-
})
|
|
3763
|
+
})
|
|
3764
|
+
.map((x) => x.fConnector);
|
|
3352
3765
|
}
|
|
3353
3766
|
_getPointInFlow(position) {
|
|
3354
3767
|
return Point.fromPoint(position)
|
|
3355
3768
|
.elementTransform(this._fHost)
|
|
3356
|
-
.sub(this._transform.scaledPosition)
|
|
3769
|
+
.sub(this._transform.scaledPosition)
|
|
3770
|
+
.sub(this._transform.position)
|
|
3357
3771
|
.div(this._transform.scale);
|
|
3358
3772
|
}
|
|
3359
3773
|
_isSnapConnectionEnabledAndHasClosestConnector(request) {
|
|
3360
3774
|
if (!this._fSnapConnection) {
|
|
3361
3775
|
return undefined;
|
|
3362
3776
|
}
|
|
3363
|
-
const closestConnector = this._mediator.execute(new
|
|
3777
|
+
const closestConnector = this._mediator.execute(new CalculateClosestConnectorRequest(this._getPointInFlow(request.pointerPosition), request.connectableConnectors));
|
|
3364
3778
|
return this._isValidClosestInput(closestConnector) ? closestConnector : undefined;
|
|
3365
3779
|
}
|
|
3366
3780
|
_isValidClosestInput(closestConnector) {
|
|
@@ -3394,42 +3808,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3394
3808
|
}] });
|
|
3395
3809
|
|
|
3396
3810
|
class GetAllCanBeConnectedInputsAndRectsRequest {
|
|
3397
|
-
|
|
3811
|
+
outputOrOutlet;
|
|
3398
3812
|
static fToken = Symbol('GetAllCanBeConnectedInputsAndRectsRequest');
|
|
3399
|
-
constructor(
|
|
3400
|
-
this.
|
|
3813
|
+
constructor(outputOrOutlet) {
|
|
3814
|
+
this.outputOrOutlet = outputOrOutlet;
|
|
3401
3815
|
}
|
|
3402
3816
|
}
|
|
3403
3817
|
|
|
3404
3818
|
class GetConnectorAndRectRequest {
|
|
3405
|
-
|
|
3819
|
+
connector;
|
|
3406
3820
|
static fToken = Symbol('GetConnectorAndRectRequest');
|
|
3407
|
-
constructor(
|
|
3408
|
-
this.
|
|
3821
|
+
constructor(connector) {
|
|
3822
|
+
this.connector = connector;
|
|
3409
3823
|
}
|
|
3410
3824
|
}
|
|
3411
3825
|
|
|
3412
3826
|
/**
|
|
3413
3827
|
* Execution that retrieves a connector and its rectangle.
|
|
3414
3828
|
*/
|
|
3415
|
-
let
|
|
3829
|
+
let GetConnectorAndRect = class GetConnectorAndRect {
|
|
3416
3830
|
_mediator = inject(FMediator);
|
|
3417
|
-
handle(
|
|
3831
|
+
handle({ connector }) {
|
|
3418
3832
|
return {
|
|
3419
|
-
fConnector:
|
|
3420
|
-
fRect: this._getConnectorRect(
|
|
3833
|
+
fConnector: connector,
|
|
3834
|
+
fRect: this._getConnectorRect(connector),
|
|
3421
3835
|
};
|
|
3422
3836
|
}
|
|
3423
3837
|
_getConnectorRect(fConnector) {
|
|
3424
3838
|
return this._mediator.execute(new GetNormalizedConnectorRectRequest(fConnector.hostElement));
|
|
3425
3839
|
}
|
|
3426
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3427
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3840
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetConnectorAndRect, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3841
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetConnectorAndRect });
|
|
3428
3842
|
};
|
|
3429
|
-
|
|
3843
|
+
GetConnectorAndRect = __decorate([
|
|
3430
3844
|
FExecutionRegister(GetConnectorAndRectRequest)
|
|
3431
|
-
],
|
|
3432
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3845
|
+
], GetConnectorAndRect);
|
|
3846
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetConnectorAndRect, decorators: [{
|
|
3433
3847
|
type: Injectable
|
|
3434
3848
|
}] });
|
|
3435
3849
|
|
|
@@ -3439,29 +3853,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3439
3853
|
let GetAllCanBeConnectedInputsAndRectsExecution = class GetAllCanBeConnectedInputsAndRectsExecution {
|
|
3440
3854
|
_mediator = inject(FMediator);
|
|
3441
3855
|
_store = inject(FComponentsStore);
|
|
3442
|
-
get
|
|
3856
|
+
get _targetConnectors() {
|
|
3443
3857
|
return this._store.fInputs;
|
|
3444
3858
|
}
|
|
3445
|
-
handle(
|
|
3446
|
-
return this._getCanBeConnectedInputs(
|
|
3859
|
+
handle({ outputOrOutlet, }) {
|
|
3860
|
+
return this._getCanBeConnectedInputs(outputOrOutlet).map((x) => {
|
|
3447
3861
|
return this._mediator.execute(new GetConnectorAndRectRequest(x));
|
|
3448
3862
|
});
|
|
3449
3863
|
}
|
|
3450
|
-
_getCanBeConnectedInputs(
|
|
3451
|
-
let
|
|
3452
|
-
if (
|
|
3453
|
-
|
|
3864
|
+
_getCanBeConnectedInputs(outputOrOutlet) {
|
|
3865
|
+
let targetConnectors = [];
|
|
3866
|
+
if (outputOrOutlet.hasConnectionLimits) {
|
|
3867
|
+
targetConnectors = this._targetConnectors.filter((x) => outputOrOutlet.canConnectTo(x));
|
|
3454
3868
|
}
|
|
3455
3869
|
else {
|
|
3456
|
-
|
|
3457
|
-
if (!
|
|
3458
|
-
|
|
3870
|
+
targetConnectors = this._targetConnectors.filter((x) => x.canBeConnected);
|
|
3871
|
+
if (!outputOrOutlet.isSelfConnectable) {
|
|
3872
|
+
targetConnectors = this._filterSelfConnectable(targetConnectors, outputOrOutlet);
|
|
3459
3873
|
}
|
|
3460
3874
|
}
|
|
3461
|
-
return
|
|
3875
|
+
return targetConnectors;
|
|
3462
3876
|
}
|
|
3463
|
-
_filterSelfConnectable(
|
|
3464
|
-
return
|
|
3877
|
+
_filterSelfConnectable(targetConnectors, outputOrOutlet) {
|
|
3878
|
+
return targetConnectors.filter(({ fNodeId }) => outputOrOutlet.fNodeId !== fNodeId);
|
|
3465
3879
|
}
|
|
3466
3880
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetAllCanBeConnectedInputsAndRectsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3467
3881
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetAllCanBeConnectedInputsAndRectsExecution });
|
|
@@ -3474,10 +3888,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3474
3888
|
}] });
|
|
3475
3889
|
|
|
3476
3890
|
class GetAllCanBeConnectedSourceConnectorsAndRectsRequest {
|
|
3477
|
-
|
|
3891
|
+
targetConnector;
|
|
3478
3892
|
static fToken = Symbol('GetAllCanBeConnectedSourceConnectorsAndRectsRequest');
|
|
3479
|
-
constructor(
|
|
3480
|
-
this.
|
|
3893
|
+
constructor(targetConnector) {
|
|
3894
|
+
this.targetConnector = targetConnector;
|
|
3481
3895
|
}
|
|
3482
3896
|
}
|
|
3483
3897
|
|
|
@@ -3489,19 +3903,19 @@ class GetAllCanBeConnectedSourceConnectorsAndRectsRequest {
|
|
|
3489
3903
|
let GetAllCanBeConnectedSourceConnectorsAndRectsExecution = class GetAllCanBeConnectedSourceConnectorsAndRectsExecution {
|
|
3490
3904
|
_mediator = inject(FMediator);
|
|
3491
3905
|
_store = inject(FComponentsStore);
|
|
3492
|
-
get
|
|
3906
|
+
get _sourceConnectors() {
|
|
3493
3907
|
return this._store.fOutputs;
|
|
3494
3908
|
}
|
|
3495
|
-
handle(
|
|
3496
|
-
return this._getCanBeConnectedSourceConnectors(
|
|
3909
|
+
handle({ targetConnector, }) {
|
|
3910
|
+
return this._getCanBeConnectedSourceConnectors(targetConnector).map((x) => {
|
|
3497
3911
|
return this._mediator.execute(new GetConnectorAndRectRequest(x));
|
|
3498
3912
|
});
|
|
3499
3913
|
}
|
|
3500
|
-
_getCanBeConnectedSourceConnectors(
|
|
3501
|
-
return this.
|
|
3914
|
+
_getCanBeConnectedSourceConnectors(targetConnector) {
|
|
3915
|
+
return this._sourceConnectors.filter((x) => {
|
|
3502
3916
|
let result = x.canBeConnected;
|
|
3503
|
-
if (result && x.
|
|
3504
|
-
result = x.
|
|
3917
|
+
if (result && x.hasConnectionLimits) {
|
|
3918
|
+
result = x.canConnectTo(targetConnector);
|
|
3505
3919
|
}
|
|
3506
3920
|
return result;
|
|
3507
3921
|
});
|
|
@@ -3517,58 +3931,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3517
3931
|
}] });
|
|
3518
3932
|
|
|
3519
3933
|
class MarkConnectableConnectorsRequest {
|
|
3520
|
-
|
|
3934
|
+
connectors;
|
|
3521
3935
|
static fToken = Symbol('MarkConnectableConnectorsRequest');
|
|
3522
|
-
constructor(
|
|
3523
|
-
this.
|
|
3936
|
+
constructor(connectors) {
|
|
3937
|
+
this.connectors = connectors;
|
|
3524
3938
|
}
|
|
3525
3939
|
}
|
|
3526
3940
|
|
|
3527
3941
|
/**
|
|
3528
3942
|
* Execution that marks connectors as connectable.
|
|
3529
3943
|
*/
|
|
3530
|
-
let
|
|
3944
|
+
let MarkConnectableConnectors = class MarkConnectableConnectors {
|
|
3531
3945
|
_store = inject(FComponentsStore);
|
|
3532
|
-
handle(
|
|
3946
|
+
handle({ connectors }) {
|
|
3533
3947
|
this._store.flowHost.classList.add(F_CSS_CLASS.DRAG_AND_DROP.CONNECTIONS_DRAGGING);
|
|
3534
|
-
|
|
3948
|
+
connectors.forEach((x) => this._markConnector(x));
|
|
3535
3949
|
}
|
|
3536
|
-
_markConnector(
|
|
3537
|
-
|
|
3950
|
+
_markConnector({ hostElement }) {
|
|
3951
|
+
hostElement.classList.add(F_CSS_CLASS.CONNECTOR.CONNECTABLE);
|
|
3538
3952
|
}
|
|
3539
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3540
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3953
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkConnectableConnectors, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3954
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkConnectableConnectors });
|
|
3541
3955
|
};
|
|
3542
|
-
|
|
3956
|
+
MarkConnectableConnectors = __decorate([
|
|
3543
3957
|
FExecutionRegister(MarkConnectableConnectorsRequest)
|
|
3544
|
-
],
|
|
3545
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3958
|
+
], MarkConnectableConnectors);
|
|
3959
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkConnectableConnectors, decorators: [{
|
|
3546
3960
|
type: Injectable
|
|
3547
3961
|
}] });
|
|
3548
3962
|
|
|
3549
3963
|
class RemoveInputFromStoreRequest {
|
|
3550
|
-
|
|
3964
|
+
component;
|
|
3551
3965
|
static fToken = Symbol('RemoveInputFromStoreRequest');
|
|
3552
|
-
constructor(
|
|
3553
|
-
this.
|
|
3966
|
+
constructor(component) {
|
|
3967
|
+
this.component = component;
|
|
3554
3968
|
}
|
|
3555
3969
|
}
|
|
3556
3970
|
|
|
3557
3971
|
/**
|
|
3558
3972
|
* Execution that removes an inputConnector from the FComponentsStore.
|
|
3559
3973
|
*/
|
|
3560
|
-
let
|
|
3974
|
+
let RemoveInputFromStore = class RemoveInputFromStore {
|
|
3561
3975
|
_store = inject(FComponentsStore);
|
|
3562
|
-
handle(
|
|
3563
|
-
this._store.removeComponent(this._store.fInputs,
|
|
3976
|
+
handle({ component }) {
|
|
3977
|
+
this._store.removeComponent(this._store.fInputs, component);
|
|
3564
3978
|
}
|
|
3565
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3566
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3979
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RemoveInputFromStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3980
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RemoveInputFromStore });
|
|
3567
3981
|
};
|
|
3568
|
-
|
|
3982
|
+
RemoveInputFromStore = __decorate([
|
|
3569
3983
|
FExecutionRegister(RemoveInputFromStoreRequest)
|
|
3570
|
-
],
|
|
3571
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3984
|
+
], RemoveInputFromStore);
|
|
3985
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RemoveInputFromStore, decorators: [{
|
|
3572
3986
|
type: Injectable
|
|
3573
3987
|
}] });
|
|
3574
3988
|
|
|
@@ -3625,52 +4039,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3625
4039
|
}] });
|
|
3626
4040
|
|
|
3627
4041
|
class UnmarkConnectableConnectorsRequest {
|
|
3628
|
-
|
|
4042
|
+
connectors;
|
|
3629
4043
|
static fToken = Symbol('UnmarkConnectableConnectorsRequest');
|
|
3630
|
-
constructor(
|
|
3631
|
-
this.
|
|
4044
|
+
constructor(connectors) {
|
|
4045
|
+
this.connectors = connectors;
|
|
3632
4046
|
}
|
|
3633
4047
|
}
|
|
3634
4048
|
|
|
3635
4049
|
/**
|
|
3636
4050
|
* Execution that unmarks connectors as connectable.
|
|
3637
4051
|
*/
|
|
3638
|
-
let
|
|
4052
|
+
let UnmarkConnectableConnectors = class UnmarkConnectableConnectors {
|
|
3639
4053
|
_store = inject(FComponentsStore);
|
|
3640
|
-
handle(
|
|
4054
|
+
handle({ connectors }) {
|
|
3641
4055
|
this._store.flowHost.classList.remove(F_CSS_CLASS.DRAG_AND_DROP.CONNECTIONS_DRAGGING);
|
|
3642
|
-
|
|
4056
|
+
connectors.forEach((x) => this._unmarkConnector(x));
|
|
3643
4057
|
}
|
|
3644
|
-
_unmarkConnector(
|
|
3645
|
-
|
|
4058
|
+
_unmarkConnector({ hostElement }) {
|
|
4059
|
+
hostElement.classList.remove(F_CSS_CLASS.CONNECTOR.CONNECTABLE);
|
|
3646
4060
|
}
|
|
3647
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
3648
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
4061
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UnmarkConnectableConnectors, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4062
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UnmarkConnectableConnectors });
|
|
3649
4063
|
};
|
|
3650
|
-
|
|
4064
|
+
UnmarkConnectableConnectors = __decorate([
|
|
3651
4065
|
FExecutionRegister(UnmarkConnectableConnectorsRequest)
|
|
3652
|
-
],
|
|
3653
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type:
|
|
4066
|
+
], UnmarkConnectableConnectors);
|
|
4067
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UnmarkConnectableConnectors, decorators: [{
|
|
3654
4068
|
type: Injectable
|
|
3655
4069
|
}] });
|
|
3656
4070
|
|
|
3657
4071
|
/*
|
|
3658
|
-
|
|
4072
|
+
* This file exports all the connector-related executions that can be used in the FFlow domain.
|
|
3659
4073
|
*/
|
|
3660
4074
|
const F_CONNECTORS_FEATURES = [
|
|
3661
|
-
|
|
3662
|
-
|
|
3663
|
-
|
|
3664
|
-
|
|
4075
|
+
AddInputToStore,
|
|
4076
|
+
AddOutletToStore,
|
|
4077
|
+
AddOutputToStore,
|
|
4078
|
+
CalculateClosestConnector,
|
|
3665
4079
|
FindConnectableConnectorUsingPriorityAndPositionExecution,
|
|
3666
4080
|
GetAllCanBeConnectedSourceConnectorsAndRectsExecution,
|
|
3667
4081
|
GetAllCanBeConnectedInputsAndRectsExecution,
|
|
3668
|
-
|
|
3669
|
-
|
|
3670
|
-
|
|
4082
|
+
GetConnectorAndRect,
|
|
4083
|
+
MarkConnectableConnectors,
|
|
4084
|
+
RemoveInputFromStore,
|
|
3671
4085
|
RemoveOutletFromStoreExecution,
|
|
3672
4086
|
RemoveOutputFromStoreExecution,
|
|
3673
|
-
|
|
4087
|
+
UnmarkConnectableConnectors,
|
|
3674
4088
|
];
|
|
3675
4089
|
|
|
3676
4090
|
class AddDndToStoreRequest {
|
|
@@ -3816,7 +4230,7 @@ class IsConnectionUnderNodeRequest {
|
|
|
3816
4230
|
}
|
|
3817
4231
|
|
|
3818
4232
|
let IsConnectionUnderNodeExecution = class IsConnectionUnderNodeExecution {
|
|
3819
|
-
|
|
4233
|
+
_mediator = inject(FMediator);
|
|
3820
4234
|
_store = inject(FComponentsStore);
|
|
3821
4235
|
handle(request) {
|
|
3822
4236
|
const fOutputConnectors = this._getOutputConnectors(request.fNode);
|
|
@@ -3847,24 +4261,24 @@ let IsConnectionUnderNodeExecution = class IsConnectionUnderNodeExecution {
|
|
|
3847
4261
|
_getOutputConnectionsId(connectors) {
|
|
3848
4262
|
const connectorsId = this._getConnectorsId(connectors);
|
|
3849
4263
|
return this._store.fConnections
|
|
3850
|
-
.filter((x) => connectorsId.includes(x.fOutputId))
|
|
4264
|
+
.filter((x) => connectorsId.includes(x.fOutputId()))
|
|
3851
4265
|
.map((x) => x.fId());
|
|
3852
4266
|
}
|
|
3853
4267
|
_getInputConnectionsId(connectors) {
|
|
3854
4268
|
const connectorsId = this._getConnectorsId(connectors);
|
|
3855
4269
|
return this._store.fConnections
|
|
3856
|
-
.filter((x) => connectorsId.includes(x.fInputId))
|
|
4270
|
+
.filter((x) => connectorsId.includes(x.fInputId()))
|
|
3857
4271
|
.map((x) => x.fId());
|
|
3858
4272
|
}
|
|
3859
4273
|
_getConnectorsId(connectors) {
|
|
3860
|
-
return connectors.map((x) => x.fId);
|
|
4274
|
+
return connectors.map((x) => x.fId());
|
|
3861
4275
|
}
|
|
3862
4276
|
_calculateConnectionsUnderNode(fNode) {
|
|
3863
|
-
const fNodeRect = this.
|
|
4277
|
+
const fNodeRect = this._mediator.execute(new GetNormalizedConnectorRectRequest(fNode.hostElement));
|
|
3864
4278
|
return this._store.fConnections.filter((x) => this._isConnectionHasIntersectionsWithNode(x, fNodeRect));
|
|
3865
4279
|
}
|
|
3866
4280
|
_isConnectionHasIntersectionsWithNode(fConnection, fNodeRect) {
|
|
3867
|
-
return GetIntersections.getRoundedRectIntersectionsWithSVGPath(fConnection.fPath().hostElement, fNodeRect).length > 0;
|
|
4281
|
+
return (GetIntersections.getRoundedRectIntersectionsWithSVGPath(fConnection.fPath().hostElement, fNodeRect).length > 0);
|
|
3868
4282
|
}
|
|
3869
4283
|
_emitNodeIntersectedWithConnections(fNode, fConnections) {
|
|
3870
4284
|
this._store.fDraggable?.fNodeIntersectedWithConnections.emit(new FNodeIntersectedWithConnections(fNode.fId(), fConnections.map((x) => x.fId())));
|
|
@@ -3882,7 +4296,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3882
4296
|
class FDragStartedEvent {
|
|
3883
4297
|
fEventType;
|
|
3884
4298
|
fData;
|
|
3885
|
-
constructor(fEventType,
|
|
4299
|
+
constructor(fEventType,
|
|
4300
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
4301
|
+
fData) {
|
|
3886
4302
|
this.fEventType = fEventType;
|
|
3887
4303
|
this.fData = fData;
|
|
3888
4304
|
}
|
|
@@ -3948,7 +4364,7 @@ class FCanvasDragHandler {
|
|
|
3948
4364
|
|
|
3949
4365
|
let FCanvasMoveFinalizeExecution = class FCanvasMoveFinalizeExecution {
|
|
3950
4366
|
_dragContext = inject(FDraggableDataContext);
|
|
3951
|
-
handle(
|
|
4367
|
+
handle(_request) {
|
|
3952
4368
|
if (!this._isValid()) {
|
|
3953
4369
|
return;
|
|
3954
4370
|
}
|
|
@@ -4118,22 +4534,22 @@ class FCreateConnectionDragHandler {
|
|
|
4118
4534
|
_fOutputOrOutlet;
|
|
4119
4535
|
fEventType = 'create-connection';
|
|
4120
4536
|
fData;
|
|
4121
|
-
|
|
4122
|
-
|
|
4537
|
+
_result;
|
|
4538
|
+
_mediator;
|
|
4123
4539
|
_store;
|
|
4124
4540
|
_toConnectorRect = new RoundedRect();
|
|
4125
|
-
get
|
|
4541
|
+
get _connection() {
|
|
4126
4542
|
return this._store.fTempConnection;
|
|
4127
4543
|
}
|
|
4128
|
-
get
|
|
4544
|
+
get _snapConnection() {
|
|
4129
4545
|
return this._store.fSnapConnection;
|
|
4130
4546
|
}
|
|
4131
4547
|
_fOutputWithRect;
|
|
4132
4548
|
_canBeConnectedInputs = [];
|
|
4133
4549
|
constructor(_injector, _fOutputOrOutlet, _onPointerDownPosition) {
|
|
4134
4550
|
this._fOutputOrOutlet = _fOutputOrOutlet;
|
|
4135
|
-
this.
|
|
4136
|
-
this.
|
|
4551
|
+
this._result = _injector.get(FDragHandlerResult);
|
|
4552
|
+
this._mediator = _injector.get(FMediator);
|
|
4137
4553
|
this._store = _injector.get(FComponentsStore);
|
|
4138
4554
|
this._toConnectorRect = RoundedRect.fromRect(RectExtensions.initialize(_onPointerDownPosition.x, _onPointerDownPosition.y));
|
|
4139
4555
|
this.fData = {
|
|
@@ -4144,102 +4560,106 @@ class FCreateConnectionDragHandler {
|
|
|
4144
4560
|
this._getAndMarkCanBeConnectedInputs();
|
|
4145
4561
|
this._initializeSnapConnection();
|
|
4146
4562
|
this._initializeConnectionForCreate();
|
|
4147
|
-
this._fOutputWithRect = this.
|
|
4148
|
-
this.
|
|
4563
|
+
this._fOutputWithRect = this._mediator.execute(new GetConnectorAndRectRequest(this._fOutputOrOutlet));
|
|
4564
|
+
this._connection.show();
|
|
4149
4565
|
this.onPointerMove(PointExtensions.initialize());
|
|
4150
|
-
this.
|
|
4566
|
+
this._result.setData({
|
|
4151
4567
|
toConnectorRect: this._toConnectorRect,
|
|
4152
4568
|
canBeConnectedInputs: this._canBeConnectedInputs,
|
|
4153
|
-
fOutputId: this._fOutputOrOutlet.fId,
|
|
4569
|
+
fOutputId: this._fOutputOrOutlet.fId(),
|
|
4154
4570
|
});
|
|
4155
4571
|
}
|
|
4156
4572
|
_getAndMarkCanBeConnectedInputs() {
|
|
4157
|
-
this._canBeConnectedInputs = this.
|
|
4158
|
-
this.
|
|
4573
|
+
this._canBeConnectedInputs = this._mediator.execute(new GetAllCanBeConnectedInputsAndRectsRequest(this._fOutputOrOutlet));
|
|
4574
|
+
this._mediator.execute(new MarkConnectableConnectorsRequest(this._canBeConnectedInputs.map((x) => x.fConnector)));
|
|
4159
4575
|
}
|
|
4160
4576
|
_initializeSnapConnection() {
|
|
4161
|
-
if (!this.
|
|
4577
|
+
if (!this._snapConnection) {
|
|
4162
4578
|
return;
|
|
4163
4579
|
}
|
|
4164
|
-
this.
|
|
4165
|
-
this.
|
|
4580
|
+
this._snapConnection.fOutputId.set(this._fOutputOrOutlet.fId());
|
|
4581
|
+
this._snapConnection.initialize();
|
|
4166
4582
|
}
|
|
4167
4583
|
_initializeConnectionForCreate() {
|
|
4168
|
-
this.
|
|
4169
|
-
this.
|
|
4584
|
+
this._connection.fOutputId.set(this._fOutputOrOutlet.fId());
|
|
4585
|
+
this._connection.initialize();
|
|
4170
4586
|
}
|
|
4171
4587
|
onPointerMove(difference) {
|
|
4172
4588
|
const fClosestInput = this._findClosestInput(difference);
|
|
4173
4589
|
this._drawConnectionForCreate(this._toConnectorRect.addPoint(difference), fClosestInput?.fConnector.fConnectableSide || EFConnectableSide.TOP);
|
|
4174
|
-
if (this.
|
|
4590
|
+
if (this._snapConnection) {
|
|
4175
4591
|
this._drawSnapConnection(this._getClosestInputForSnapConnection(fClosestInput));
|
|
4176
4592
|
}
|
|
4177
4593
|
}
|
|
4178
4594
|
_drawConnectionForCreate(toConnectorRect, fSide) {
|
|
4179
|
-
const line = this.
|
|
4180
|
-
this.
|
|
4181
|
-
this.
|
|
4595
|
+
const line = this._mediator.execute(new CalculateConnectionLineByBehaviorRequest(this._fOutputWithRect.fRect, toConnectorRect, this._connection.fBehavior, this._fOutputWithRect.fConnector.fConnectableSide, fSide));
|
|
4596
|
+
this._connection.setLine(line, this._fOutputWithRect.fConnector.fConnectableSide, fSide);
|
|
4597
|
+
this._connection.redraw();
|
|
4182
4598
|
}
|
|
4183
4599
|
_drawSnapConnection(fClosestInput) {
|
|
4184
4600
|
if (fClosestInput) {
|
|
4185
|
-
const line = this.
|
|
4186
|
-
this.
|
|
4187
|
-
this.
|
|
4188
|
-
this.
|
|
4601
|
+
const line = this._mediator.execute(new CalculateConnectionLineByBehaviorRequest(this._fOutputWithRect.fRect, fClosestInput.fRect, this._snapConnection.fBehavior, this._fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide));
|
|
4602
|
+
this._snapConnection?.show();
|
|
4603
|
+
this._snapConnection?.setLine(line, this._fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide);
|
|
4604
|
+
this._snapConnection?.redraw();
|
|
4189
4605
|
}
|
|
4190
4606
|
else {
|
|
4191
|
-
this.
|
|
4607
|
+
this._snapConnection?.hide();
|
|
4192
4608
|
}
|
|
4193
4609
|
}
|
|
4194
4610
|
_findClosestInput(difference) {
|
|
4195
|
-
return this.
|
|
4611
|
+
return this._mediator.execute(new CalculateClosestConnectorRequest(this._toConnectorRect.addPoint(difference), this._canBeConnectedInputs));
|
|
4196
4612
|
}
|
|
4197
4613
|
_getClosestInputForSnapConnection(fClosestInput) {
|
|
4198
|
-
return fClosestInput && fClosestInput.distance < this.
|
|
4614
|
+
return fClosestInput && fClosestInput.distance < this._snapConnection.fSnapThreshold
|
|
4615
|
+
? fClosestInput
|
|
4616
|
+
: undefined;
|
|
4199
4617
|
}
|
|
4200
4618
|
onPointerUp() {
|
|
4201
|
-
this.
|
|
4202
|
-
this.
|
|
4203
|
-
this.
|
|
4204
|
-
this.
|
|
4619
|
+
this._connection.redraw();
|
|
4620
|
+
this._connection.hide();
|
|
4621
|
+
this._snapConnection?.hide();
|
|
4622
|
+
this._mediator.execute(new UnmarkConnectableConnectorsRequest(this._canBeConnectedInputs.map((x) => x.fConnector)));
|
|
4205
4623
|
}
|
|
4206
4624
|
}
|
|
4207
4625
|
|
|
4208
4626
|
let FCreateConnectionFinalizeExecution = class FCreateConnectionFinalizeExecution {
|
|
4209
|
-
|
|
4210
|
-
|
|
4627
|
+
_result = inject(FDragHandlerResult);
|
|
4628
|
+
_mediator = inject(FMediator);
|
|
4211
4629
|
_store = inject(FComponentsStore);
|
|
4212
4630
|
_dragContext = inject(FDraggableDataContext);
|
|
4213
|
-
get
|
|
4631
|
+
get _dragHandler() {
|
|
4214
4632
|
return this._dragContext.draggableItems[0];
|
|
4215
4633
|
}
|
|
4216
4634
|
handle(request) {
|
|
4217
4635
|
if (!this._isValid()) {
|
|
4218
4636
|
return;
|
|
4219
4637
|
}
|
|
4220
|
-
this.
|
|
4221
|
-
this.
|
|
4638
|
+
this._emitEvent(request.event);
|
|
4639
|
+
this._dragHandler.onPointerUp();
|
|
4222
4640
|
}
|
|
4223
4641
|
_isValid() {
|
|
4224
4642
|
return this._dragContext.draggableItems.some((x) => x instanceof FCreateConnectionDragHandler);
|
|
4225
4643
|
}
|
|
4226
|
-
|
|
4644
|
+
_getTargetOutput(output) {
|
|
4227
4645
|
if (!output) {
|
|
4228
|
-
throw new Error(`Output with fOutputId ${this.
|
|
4646
|
+
throw new Error(`Output with fOutputId ${this._result.getData().fOutputId} not found. Make sure there is no f-connection to a non-existent fOutput.`);
|
|
4229
4647
|
}
|
|
4230
|
-
return isNodeOutlet(output.hostElement)
|
|
4648
|
+
return isNodeOutlet(output.hostElement)
|
|
4649
|
+
? this._mediator.execute(new GetFirstConnectableOutputRequest(output))
|
|
4650
|
+
: output;
|
|
4231
4651
|
}
|
|
4232
|
-
|
|
4233
|
-
return this._store.fOutputs.find((x) => x.fId === this.
|
|
4652
|
+
_getOutput() {
|
|
4653
|
+
return this._store.fOutputs.find((x) => x.fId() === this._result.getData().fOutputId);
|
|
4234
4654
|
}
|
|
4235
|
-
|
|
4236
|
-
return this._store.fOutlets.find((x) => x.fId === this.
|
|
4655
|
+
_getOutlet() {
|
|
4656
|
+
return this._store.fOutlets.find((x) => x.fId() === this._result.getData().fOutputId);
|
|
4237
4657
|
}
|
|
4238
|
-
|
|
4239
|
-
this._store.fDraggable?.fCreateConnection.emit(new FCreateConnectionEvent(this.
|
|
4658
|
+
_emitEvent(event) {
|
|
4659
|
+
this._store.fDraggable?.fCreateConnection.emit(new FCreateConnectionEvent(this._getTargetOutput(this._getOutput() || this._getOutlet()).fId(), this._getInputUnderPointer(event)?.fId(), event.getPosition()));
|
|
4240
4660
|
}
|
|
4241
4661
|
_getInputUnderPointer(event) {
|
|
4242
|
-
return this.
|
|
4662
|
+
return this._mediator.execute(new FindConnectableConnectorUsingPriorityAndPositionRequest(event.getPosition(), this._result.getData().canBeConnectedInputs));
|
|
4243
4663
|
}
|
|
4244
4664
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCreateConnectionFinalizeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4245
4665
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCreateConnectionFinalizeExecution });
|
|
@@ -4498,7 +4918,7 @@ class FReassignTargetDragHandler {
|
|
|
4498
4918
|
if (!snapConnection) {
|
|
4499
4919
|
return;
|
|
4500
4920
|
}
|
|
4501
|
-
snapConnection.fOutputId
|
|
4921
|
+
snapConnection.fOutputId.set(this._connection.fOutputId());
|
|
4502
4922
|
snapConnection.initialize();
|
|
4503
4923
|
}
|
|
4504
4924
|
onPointerMove(difference) {
|
|
@@ -4510,7 +4930,7 @@ class FReassignTargetDragHandler {
|
|
|
4510
4930
|
}
|
|
4511
4931
|
}
|
|
4512
4932
|
_findClosestConnector(point, connectors) {
|
|
4513
|
-
return this._mediator.execute(new
|
|
4933
|
+
return this._mediator.execute(new CalculateClosestConnectorRequest(point, connectors));
|
|
4514
4934
|
}
|
|
4515
4935
|
_drawConnection(newPoint, fSide) {
|
|
4516
4936
|
const line = this._calculateNewLine(newPoint, fSide);
|
|
@@ -4568,7 +4988,7 @@ class FReassignSourceDragHandler {
|
|
|
4568
4988
|
}
|
|
4569
4989
|
markConnectableConnector() {
|
|
4570
4990
|
this._connectableConnectors = this._mediator.execute(new GetAllCanBeConnectedSourceConnectorsAndRectsRequest(this._targetConnector));
|
|
4571
|
-
const isExistCurrentSourceConnector = this._connectableConnectors.some((x) => x.fConnector.fId === this._sourceConnector.fId);
|
|
4991
|
+
const isExistCurrentSourceConnector = this._connectableConnectors.some((x) => x.fConnector.fId() === this._sourceConnector.fId());
|
|
4572
4992
|
if (!isExistCurrentSourceConnector) {
|
|
4573
4993
|
this._connectableConnectors.push(this._sourceConnectorAndRect);
|
|
4574
4994
|
}
|
|
@@ -4579,7 +4999,7 @@ class FReassignSourceDragHandler {
|
|
|
4579
4999
|
if (!snapConnection) {
|
|
4580
5000
|
return;
|
|
4581
5001
|
}
|
|
4582
|
-
snapConnection.fInputId
|
|
5002
|
+
snapConnection.fInputId.set(this._connection.fInputId());
|
|
4583
5003
|
snapConnection.initialize();
|
|
4584
5004
|
}
|
|
4585
5005
|
onPointerMove(difference) {
|
|
@@ -4591,7 +5011,7 @@ class FReassignSourceDragHandler {
|
|
|
4591
5011
|
}
|
|
4592
5012
|
}
|
|
4593
5013
|
_findClosestConnector(point, connectors) {
|
|
4594
|
-
return this._mediator.execute(new
|
|
5014
|
+
return this._mediator.execute(new CalculateClosestConnectorRequest(point, connectors));
|
|
4595
5015
|
}
|
|
4596
5016
|
_drawConnection(newPoint, fSide) {
|
|
4597
5017
|
const line = this._calculateNewLine(newPoint, fSide);
|
|
@@ -4628,54 +5048,56 @@ class FReassignConnectionDragHandler {
|
|
|
4628
5048
|
_isTargetDragHandle;
|
|
4629
5049
|
fEventType = 'reassign-connection';
|
|
4630
5050
|
fData;
|
|
4631
|
-
|
|
4632
|
-
|
|
5051
|
+
_result;
|
|
5052
|
+
_mediator;
|
|
4633
5053
|
_store;
|
|
4634
|
-
get
|
|
5054
|
+
get _snapConnection() {
|
|
4635
5055
|
return this._store.fSnapConnection;
|
|
4636
5056
|
}
|
|
4637
5057
|
get _sourceConnector() {
|
|
4638
|
-
const result = this._store.fOutputs.find((x) => x.fId === this._connection.fOutputId);
|
|
5058
|
+
const result = this._store.fOutputs.find((x) => x.fId() === this._connection.fOutputId());
|
|
4639
5059
|
if (!result) {
|
|
4640
5060
|
throw new Error('Connection output not found');
|
|
4641
5061
|
}
|
|
4642
5062
|
return result;
|
|
4643
5063
|
}
|
|
4644
5064
|
get _targetConnector() {
|
|
4645
|
-
const result = this._store.fInputs.find((x) => x.fId === this._connection.fInputId);
|
|
5065
|
+
const result = this._store.fInputs.find((x) => x.fId() === this._connection.fInputId());
|
|
4646
5066
|
if (!result) {
|
|
4647
5067
|
throw new Error('Connection input not found');
|
|
4648
5068
|
}
|
|
4649
5069
|
return result;
|
|
4650
5070
|
}
|
|
4651
5071
|
get _sourceConnectorAndRect() {
|
|
4652
|
-
return this.
|
|
5072
|
+
return this._mediator.execute(new GetConnectorAndRectRequest(this._sourceConnector));
|
|
4653
5073
|
}
|
|
4654
5074
|
get _targetConnectorAndRect() {
|
|
4655
|
-
return this.
|
|
5075
|
+
return this._mediator.execute(new GetConnectorAndRectRequest(this._targetConnector));
|
|
4656
5076
|
}
|
|
4657
5077
|
_reassignHandler;
|
|
4658
5078
|
constructor(_injector, _connection, _isTargetDragHandle) {
|
|
4659
5079
|
this._connection = _connection;
|
|
4660
5080
|
this._isTargetDragHandle = _isTargetDragHandle;
|
|
4661
|
-
this.
|
|
4662
|
-
this.
|
|
5081
|
+
this._result = _injector.get(FDragHandlerResult);
|
|
5082
|
+
this._mediator = _injector.get(FMediator);
|
|
4663
5083
|
this._store = _injector.get(FComponentsStore);
|
|
4664
5084
|
this.fData = {
|
|
4665
5085
|
fConnectionId: this._connection.fId(),
|
|
4666
5086
|
};
|
|
4667
|
-
this._reassignHandler = this._isTargetDragHandle
|
|
5087
|
+
this._reassignHandler = this._isTargetDragHandle
|
|
5088
|
+
? this._targetDragHandler()
|
|
5089
|
+
: this._sourceDragHandler();
|
|
4668
5090
|
}
|
|
4669
5091
|
_sourceDragHandler() {
|
|
4670
|
-
return new FReassignSourceDragHandler(this.
|
|
5092
|
+
return new FReassignSourceDragHandler(this._mediator, this._connection, this._sourceConnectorAndRect, this._targetConnectorAndRect);
|
|
4671
5093
|
}
|
|
4672
5094
|
_targetDragHandler() {
|
|
4673
|
-
return new FReassignTargetDragHandler(this.
|
|
5095
|
+
return new FReassignTargetDragHandler(this._mediator, this._connection, this._sourceConnectorAndRect, this._targetConnectorAndRect);
|
|
4674
5096
|
}
|
|
4675
5097
|
prepareDragSequence() {
|
|
4676
5098
|
this._reassignHandler.markConnectableConnector();
|
|
4677
|
-
this._reassignHandler.initializeSnapConnection(this.
|
|
4678
|
-
this.
|
|
5099
|
+
this._reassignHandler.initializeSnapConnection(this._snapConnection);
|
|
5100
|
+
this._result.setData({
|
|
4679
5101
|
isTargetDragHandle: this._isTargetDragHandle,
|
|
4680
5102
|
sourceConnectorRect: roundedRectFromPoint(this._connection.line.point1),
|
|
4681
5103
|
targetConnectorRect: roundedRectFromPoint(this._connection.line.point2),
|
|
@@ -4745,10 +5167,10 @@ let FReassignConnectionFinalizeExecution = class FReassignConnectionFinalizeExec
|
|
|
4745
5167
|
}
|
|
4746
5168
|
_isReassignToDifferentConnector(fConnector) {
|
|
4747
5169
|
if (!this._dragResult.getData().isTargetDragHandle) {
|
|
4748
|
-
return this._dragResult.getData().fConnection.fInputId !== fConnector.fId;
|
|
5170
|
+
return this._dragResult.getData().fConnection.fInputId() !== fConnector.fId();
|
|
4749
5171
|
}
|
|
4750
5172
|
else {
|
|
4751
|
-
return this._dragResult.getData().fConnection.fOutputId !== fConnector.fId;
|
|
5173
|
+
return this._dragResult.getData().fConnection.fOutputId() !== fConnector.fId();
|
|
4752
5174
|
}
|
|
4753
5175
|
}
|
|
4754
5176
|
_emitReassignConnectionEvent(event, fConnector) {
|
|
@@ -4757,7 +5179,7 @@ let FReassignConnectionFinalizeExecution = class FReassignConnectionFinalizeExec
|
|
|
4757
5179
|
_getEventData(event, fConnector) {
|
|
4758
5180
|
const fConnection = this._dragResult.getData().fConnection;
|
|
4759
5181
|
const isTargetDragHandle = this._dragResult.getData().isTargetDragHandle;
|
|
4760
|
-
return new FReassignConnectionEvent(fConnection.fId(), !isTargetDragHandle, isTargetDragHandle, fConnection.fOutputId, !isTargetDragHandle ? fConnector?.fId : undefined, fConnection.fInputId, isTargetDragHandle ? fConnector?.fId : undefined, event.getPosition());
|
|
5182
|
+
return new FReassignConnectionEvent(fConnection.fId(), !isTargetDragHandle, isTargetDragHandle, fConnection.fOutputId(), !isTargetDragHandle ? fConnector?.fId() : undefined, fConnection.fInputId(), isTargetDragHandle ? fConnector?.fId() : undefined, event.getPosition());
|
|
4761
5183
|
}
|
|
4762
5184
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FReassignConnectionFinalizeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
4763
5185
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FReassignConnectionFinalizeExecution });
|
|
@@ -4946,14 +5368,14 @@ class BaseConnectionDragHandler {
|
|
|
4946
5368
|
_fOutputWithRect;
|
|
4947
5369
|
_fInputWithRect;
|
|
4948
5370
|
get _fOutput() {
|
|
4949
|
-
const result = this._store.fOutputs.find((x) => x.fId === this.fConnection.fOutputId);
|
|
5371
|
+
const result = this._store.fOutputs.find((x) => x.fId() === this.fConnection.fOutputId());
|
|
4950
5372
|
if (!result) {
|
|
4951
5373
|
throw new Error(this._connectorNotFoundPrefix(`fOutput with id ${this.fConnection.fOutputId} not found`));
|
|
4952
5374
|
}
|
|
4953
5375
|
return result;
|
|
4954
5376
|
}
|
|
4955
5377
|
get _fInput() {
|
|
4956
|
-
const result = this._store.fInputs.find((x) => x.fId === this.fConnection.fInputId);
|
|
5378
|
+
const result = this._store.fInputs.find((x) => x.fId() === this.fConnection.fInputId());
|
|
4957
5379
|
if (!result) {
|
|
4958
5380
|
throw new Error(this._connectorNotFoundPrefix(`fInput with id ${this.fConnection.fInputId} not found`));
|
|
4959
5381
|
}
|
|
@@ -5306,13 +5728,6 @@ class CalculateDragLimitsRequest {
|
|
|
5306
5728
|
}
|
|
5307
5729
|
}
|
|
5308
5730
|
|
|
5309
|
-
function infinityMinMax() {
|
|
5310
|
-
return {
|
|
5311
|
-
min: { x: -Infinity, y: -Infinity },
|
|
5312
|
-
max: { x: Infinity, y: Infinity },
|
|
5313
|
-
};
|
|
5314
|
-
}
|
|
5315
|
-
|
|
5316
5731
|
class GetNodeBoundingIncludePaddingsRequest {
|
|
5317
5732
|
nodeOrGroup;
|
|
5318
5733
|
childrenPaddings;
|
|
@@ -5531,12 +5946,12 @@ let CreateInputConnectionHandlerAndSetToNodeHandler = class CreateInputConnectio
|
|
|
5531
5946
|
}
|
|
5532
5947
|
_getInputConnections(nodeOrGroup) {
|
|
5533
5948
|
const ids = new Set(this._getNodeInputIds(nodeOrGroup));
|
|
5534
|
-
return this._connections.filter((x) => ids.has(x.fInputId));
|
|
5949
|
+
return this._connections.filter((x) => ids.has(x.fInputId()));
|
|
5535
5950
|
}
|
|
5536
5951
|
_getNodeInputIds(nodeOrGroup) {
|
|
5537
5952
|
return this._store.fInputs
|
|
5538
5953
|
.filter((x) => nodeOrGroup.isContains(x.hostElement))
|
|
5539
|
-
.map((x) => x.fId);
|
|
5954
|
+
.map((x) => x.fId());
|
|
5540
5955
|
}
|
|
5541
5956
|
_createAndSetConnectionToNodeHandler(connection, request) {
|
|
5542
5957
|
let connectionHandler = this._getExistingConnectionHandler(request.existingConnectionHandlers, connection);
|
|
@@ -5551,7 +5966,7 @@ let CreateInputConnectionHandlerAndSetToNodeHandler = class CreateInputConnectio
|
|
|
5551
5966
|
}
|
|
5552
5967
|
_createConnectionHandler(outputIds, connection) {
|
|
5553
5968
|
let result;
|
|
5554
|
-
if (outputIds.includes(connection.fOutputId)) {
|
|
5969
|
+
if (outputIds.includes(connection.fOutputId())) {
|
|
5555
5970
|
result = new SourceTargetConnectionDragHandler(this._injector, connection);
|
|
5556
5971
|
}
|
|
5557
5972
|
else {
|
|
@@ -5594,12 +6009,12 @@ let CreateOutputConnectionHandlerAndSetToNodeHandler = class CreateOutputConnect
|
|
|
5594
6009
|
}
|
|
5595
6010
|
_getOutputConnections(nodeOrGroup) {
|
|
5596
6011
|
const ids = new Set(this._getNodeOutputIds(nodeOrGroup));
|
|
5597
|
-
return this._connections.filter((x) => ids.has(x.fOutputId));
|
|
6012
|
+
return this._connections.filter((x) => ids.has(x.fOutputId()));
|
|
5598
6013
|
}
|
|
5599
6014
|
_getNodeOutputIds(nodeOrGroup) {
|
|
5600
6015
|
return this._store.fOutputs
|
|
5601
6016
|
.filter((x) => nodeOrGroup.isContains(x.hostElement))
|
|
5602
|
-
.map((x) => x.fId);
|
|
6017
|
+
.map((x) => x.fId());
|
|
5603
6018
|
}
|
|
5604
6019
|
_createAndSetConnectionToNodeHandler(connection, request) {
|
|
5605
6020
|
let connectionHandler = this._getExistingConnectionHandler(request.existingConnectionHandlers, connection);
|
|
@@ -5614,7 +6029,7 @@ let CreateOutputConnectionHandlerAndSetToNodeHandler = class CreateOutputConnect
|
|
|
5614
6029
|
}
|
|
5615
6030
|
_createConnectionHandler(inputIds, connection) {
|
|
5616
6031
|
let result;
|
|
5617
|
-
if (inputIds.includes(connection.fInputId)) {
|
|
6032
|
+
if (inputIds.includes(connection.fInputId())) {
|
|
5618
6033
|
result = new SourceTargetConnectionDragHandler(this._injector, connection);
|
|
5619
6034
|
}
|
|
5620
6035
|
else {
|
|
@@ -5665,8 +6080,7 @@ let CreateDragModelFromSelection = class CreateDragModelFromSelection {
|
|
|
5665
6080
|
.filter((x) => !!x);
|
|
5666
6081
|
}
|
|
5667
6082
|
_findNode(hostElement) {
|
|
5668
|
-
return this._store.fNodes
|
|
5669
|
-
.find(n => n.isContains(hostElement));
|
|
6083
|
+
return this._store.fNodes.find((n) => n.isContains(hostElement));
|
|
5670
6084
|
}
|
|
5671
6085
|
_collectSelectedAndAllChildren(selectedNodesAndGroups) {
|
|
5672
6086
|
return selectedNodesAndGroups.reduce((result, x) => {
|
|
@@ -5684,15 +6098,13 @@ let CreateDragModelFromSelection = class CreateDragModelFromSelection {
|
|
|
5684
6098
|
return flatMap(fNodes, (fNode) => this._getNodeOutputIds(fNode));
|
|
5685
6099
|
}
|
|
5686
6100
|
_getNodeOutputIds(fNode) {
|
|
5687
|
-
return this._store.fOutputs.filter((x) => fNode.fId() === x.fNodeId)
|
|
5688
|
-
.map((x) => x.fId);
|
|
6101
|
+
return this._store.fOutputs.filter((x) => fNode.fId() === x.fNodeId).map((x) => x.fId());
|
|
5689
6102
|
}
|
|
5690
6103
|
_getAllInputIds(fNodes) {
|
|
5691
6104
|
return flatMap(fNodes, (fNode) => this._getNodeInputIds(fNode));
|
|
5692
6105
|
}
|
|
5693
6106
|
_getNodeInputIds(fNode) {
|
|
5694
|
-
return this._store.fInputs.filter((x) => fNode.fId() === x.fNodeId)
|
|
5695
|
-
.map((x) => x.fId);
|
|
6107
|
+
return this._store.fInputs.filter((x) => fNode.fId() === x.fNodeId).map((x) => x.fId());
|
|
5696
6108
|
}
|
|
5697
6109
|
_setConnectionsHandlersToNodes(dragHandlers, outputIds, inputIds) {
|
|
5698
6110
|
const existingConnectionHandlers = [];
|
|
@@ -5701,7 +6113,7 @@ let CreateDragModelFromSelection = class CreateDragModelFromSelection {
|
|
|
5701
6113
|
this._mediator.execute(new CreateInputConnectionHandlerAndSetToNodeHandlerRequest(x, outputIds, existingConnectionHandlers));
|
|
5702
6114
|
});
|
|
5703
6115
|
}
|
|
5704
|
-
_createSummaryDragHandler({ roots, list }) {
|
|
6116
|
+
_createSummaryDragHandler({ roots, list, }) {
|
|
5705
6117
|
return this._mediator.execute(new CreateSummaryDragHandlerRequest(roots, list));
|
|
5706
6118
|
}
|
|
5707
6119
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CreateDragModelFromSelection, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
@@ -7575,7 +7987,7 @@ class FNodeRotatePreparationRequest {
|
|
|
7575
7987
|
}
|
|
7576
7988
|
|
|
7577
7989
|
let FNodeRotatePreparationExecution = class FNodeRotatePreparationExecution {
|
|
7578
|
-
|
|
7990
|
+
_mediator = inject(FMediator);
|
|
7579
7991
|
_store = inject(FComponentsStore);
|
|
7580
7992
|
_dragContext = inject(FDraggableDataContext);
|
|
7581
7993
|
_injector = inject(Injector);
|
|
@@ -7593,45 +8005,57 @@ let FNodeRotatePreparationExecution = class FNodeRotatePreparationExecution {
|
|
|
7593
8005
|
this._selectAndUpdateNodeLayer();
|
|
7594
8006
|
this._dragContext.onPointerDownScale = this._transform.scale;
|
|
7595
8007
|
this._dragContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())
|
|
7596
|
-
.elementTransform(this._fHost)
|
|
8008
|
+
.elementTransform(this._fHost)
|
|
8009
|
+
.div(this._transform.scale);
|
|
7597
8010
|
this._dragContext.draggableItems = [
|
|
7598
8011
|
new FNodeRotateDragHandler(this._injector, this._fNode, this._calculateOutputConnectionsDragHandlers(), this._calculateInputConnectionsDragHandlers()),
|
|
7599
8012
|
];
|
|
7600
8013
|
}
|
|
7601
8014
|
_isValid(request) {
|
|
7602
|
-
return this._dragContext.isEmpty()
|
|
7603
|
-
|
|
7604
|
-
|
|
8015
|
+
return (this._dragContext.isEmpty() &&
|
|
8016
|
+
isRotateHandle(request.event.targetElement) &&
|
|
8017
|
+
this._isNodeCanBeDragged(this._getNode(request.event.targetElement)));
|
|
7605
8018
|
}
|
|
7606
8019
|
_isNodeCanBeDragged(fNode) {
|
|
7607
8020
|
return !!fNode && !fNode.fDraggingDisabled();
|
|
7608
8021
|
}
|
|
7609
8022
|
_getNode(element) {
|
|
7610
|
-
this._fNode = this._store
|
|
7611
|
-
.fNodes.find(x => x.isContains(element));
|
|
8023
|
+
this._fNode = this._store.fNodes.find((x) => x.isContains(element));
|
|
7612
8024
|
return this._fNode;
|
|
7613
8025
|
}
|
|
7614
8026
|
_isValidTrigger(request) {
|
|
7615
8027
|
return isValidEventTrigger(request.event.originalEvent, request.fTrigger);
|
|
7616
8028
|
}
|
|
7617
8029
|
_selectAndUpdateNodeLayer() {
|
|
7618
|
-
this.
|
|
8030
|
+
this._mediator.execute(new SelectAndUpdateNodeLayerRequest(this._fNode));
|
|
7619
8031
|
}
|
|
7620
8032
|
_calculateInputConnectionsDragHandlers() {
|
|
7621
|
-
return this.
|
|
7622
|
-
|
|
8033
|
+
return this._mediator
|
|
8034
|
+
.execute(new CalculateInputConnectionsRequest(this._fNode))
|
|
8035
|
+
.map((x) => {
|
|
8036
|
+
const connector = this._store.fInputs.find((y) => y.fId() === x.fInputId())?.hostElement;
|
|
8037
|
+
if (!connector) {
|
|
8038
|
+
throw new Error(`Connector with id ${x.fInputId()} not found`);
|
|
8039
|
+
}
|
|
7623
8040
|
return {
|
|
7624
8041
|
connection: new TargetConnectionDragHandler(this._injector, x),
|
|
7625
|
-
connector: this.
|
|
8042
|
+
connector: this._mediator.execute(new GetNormalizedElementRectRequest(connector))
|
|
8043
|
+
.gravityCenter,
|
|
7626
8044
|
};
|
|
7627
8045
|
});
|
|
7628
8046
|
}
|
|
7629
8047
|
_calculateOutputConnectionsDragHandlers() {
|
|
7630
|
-
return this.
|
|
7631
|
-
|
|
8048
|
+
return this._mediator
|
|
8049
|
+
.execute(new CalculateOutputConnectionsRequest(this._fNode))
|
|
8050
|
+
.map((x) => {
|
|
8051
|
+
const connector = this._store.fOutputs.find((y) => y.fId() === x.fOutputId())?.hostElement;
|
|
8052
|
+
if (!connector) {
|
|
8053
|
+
throw new Error(`Connector with id ${x.fOutputId()} not found`);
|
|
8054
|
+
}
|
|
7632
8055
|
return {
|
|
7633
8056
|
connection: new SourceConnectionDragHandler(this._injector, x),
|
|
7634
|
-
connector: this.
|
|
8057
|
+
connector: this._mediator.execute(new GetNormalizedElementRectRequest(connector))
|
|
8058
|
+
.gravityCenter,
|
|
7635
8059
|
};
|
|
7636
8060
|
});
|
|
7637
8061
|
}
|
|
@@ -8157,7 +8581,7 @@ function isFakeTouchstartFromScreenReader(event) {
|
|
|
8157
8581
|
|
|
8158
8582
|
class FDraggableBase extends DragAndDropBase {
|
|
8159
8583
|
constructor(ngZone) {
|
|
8160
|
-
super(ngZone);
|
|
8584
|
+
super(ngZone || undefined);
|
|
8161
8585
|
}
|
|
8162
8586
|
}
|
|
8163
8587
|
|
|
@@ -8220,15 +8644,12 @@ function isDragBlocker(element) {
|
|
|
8220
8644
|
// │ To Start │
|
|
8221
8645
|
// └──────────────────────────────────────┘
|
|
8222
8646
|
class FDraggableDirective extends FDraggableBase {
|
|
8223
|
-
|
|
8224
|
-
|
|
8647
|
+
hostElement = inject(ElementRef).nativeElement;
|
|
8648
|
+
_result = inject(FDragHandlerResult);
|
|
8225
8649
|
_mediator = inject(FMediator);
|
|
8226
8650
|
_platform = inject(PlatformService);
|
|
8227
8651
|
_browser = inject(BrowserService);
|
|
8228
8652
|
disabled = false;
|
|
8229
|
-
get hostElement() {
|
|
8230
|
-
return this._elementReference.nativeElement;
|
|
8231
|
-
}
|
|
8232
8653
|
fMultiSelectTrigger = (event) => {
|
|
8233
8654
|
return this._platform.getOS() === EOperationSystem.MAC_OS ? event.metaKey : event.ctrlKey;
|
|
8234
8655
|
};
|
|
@@ -8275,10 +8696,8 @@ class FDraggableDirective extends FDraggableBase {
|
|
|
8275
8696
|
fDragEnded = new EventEmitter();
|
|
8276
8697
|
_beforePlugins;
|
|
8277
8698
|
_afterPlugins;
|
|
8278
|
-
constructor(
|
|
8279
|
-
|
|
8280
|
-
ngZone) {
|
|
8281
|
-
super(ngZone);
|
|
8699
|
+
constructor() {
|
|
8700
|
+
super(inject(NgZone, { optional: true }));
|
|
8282
8701
|
}
|
|
8283
8702
|
ngOnInit() {
|
|
8284
8703
|
this._mediator.execute(new AddDndToStoreRequest(this));
|
|
@@ -8290,7 +8709,7 @@ class FDraggableDirective extends FDraggableBase {
|
|
|
8290
8709
|
if (isDragBlocker(event.targetElement)) {
|
|
8291
8710
|
return false;
|
|
8292
8711
|
}
|
|
8293
|
-
this.
|
|
8712
|
+
this._result.clear();
|
|
8294
8713
|
this._mediator.execute(new InitializeDragSequenceRequest());
|
|
8295
8714
|
this._beforePlugins.forEach((p) => p.onPointerDown?.(event));
|
|
8296
8715
|
this._mediator.execute(new FSingleSelectRequest(event, this.fMultiSelectTrigger));
|
|
@@ -8335,13 +8754,13 @@ class FDraggableDirective extends FDraggableBase {
|
|
|
8335
8754
|
}
|
|
8336
8755
|
finalizeDragSequence() {
|
|
8337
8756
|
this._mediator.execute(new EmitSelectionChangeEventRequest());
|
|
8338
|
-
this.
|
|
8757
|
+
this._result.clear();
|
|
8339
8758
|
}
|
|
8340
8759
|
ngOnDestroy() {
|
|
8341
8760
|
this._mediator.execute(new RemoveDndFromStoreRequest());
|
|
8342
8761
|
super.unsubscribe();
|
|
8343
8762
|
}
|
|
8344
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FDraggableDirective, deps: [
|
|
8763
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FDraggableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8345
8764
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: FDraggableDirective, selector: "f-flow[fDraggable]", inputs: { disabled: { classPropertyName: "disabled", publicName: "fDraggableDisabled", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, fMultiSelectTrigger: { classPropertyName: "fMultiSelectTrigger", publicName: "fMultiSelectTrigger", isSignal: false, isRequired: false, transformFunction: null }, fReassignConnectionTrigger: { classPropertyName: "fReassignConnectionTrigger", publicName: "fReassignConnectionTrigger", isSignal: false, isRequired: false, transformFunction: null }, fCreateConnectionTrigger: { classPropertyName: "fCreateConnectionTrigger", publicName: "fCreateConnectionTrigger", isSignal: false, isRequired: false, transformFunction: null }, fNodeResizeTrigger: { classPropertyName: "fNodeResizeTrigger", publicName: "fNodeResizeTrigger", isSignal: false, isRequired: false, transformFunction: null }, fNodeRotateTrigger: { classPropertyName: "fNodeRotateTrigger", publicName: "fNodeRotateTrigger", isSignal: false, isRequired: false, transformFunction: null }, fNodeMoveTrigger: { classPropertyName: "fNodeMoveTrigger", publicName: "fNodeMoveTrigger", isSignal: false, isRequired: false, transformFunction: null }, fCanvasMoveTrigger: { classPropertyName: "fCanvasMoveTrigger", publicName: "fCanvasMoveTrigger", isSignal: false, isRequired: false, transformFunction: null }, fExternalItemTrigger: { classPropertyName: "fExternalItemTrigger", publicName: "fExternalItemTrigger", isSignal: false, isRequired: false, transformFunction: null }, fEmitOnNodeIntersect: { classPropertyName: "fEmitOnNodeIntersect", publicName: "fEmitOnNodeIntersect", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, vCellSize: { classPropertyName: "vCellSize", publicName: "vCellSize", isSignal: true, isRequired: false, transformFunction: null }, hCellSize: { classPropertyName: "hCellSize", publicName: "hCellSize", isSignal: true, isRequired: false, transformFunction: null }, fCellSizeWhileDragging: { classPropertyName: "fCellSizeWhileDragging", publicName: "fCellSizeWhileDragging", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fSelectionChange: "fSelectionChange", fNodeIntersectedWithConnections: "fNodeIntersectedWithConnections", fCreateNode: "fCreateNode", fMoveNodes: "fMoveNodes", fReassignConnection: "fReassignConnection", fCreateConnection: "fCreateConnection", fDropToGroup: "fDropToGroup", fDragStarted: "fDragStarted", fDragEnded: "fDragEnded" }, providers: [FDragHandlerResult], queries: [{ propertyName: "_beforePlugins", predicate: F_BEFORE_MAIN_PLUGIN, descendants: true }, { propertyName: "_afterPlugins", predicate: F_AFTER_MAIN_PLUGIN, descendants: true }], exportAs: ["fDraggable"], usesInheritance: true, ngImport: i0 });
|
|
8346
8765
|
}
|
|
8347
8766
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FDraggableDirective, decorators: [{
|
|
@@ -8351,12 +8770,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
8351
8770
|
exportAs: 'fDraggable',
|
|
8352
8771
|
providers: [FDragHandlerResult],
|
|
8353
8772
|
}]
|
|
8354
|
-
}], ctorParameters: () => [
|
|
8355
|
-
type: Inject,
|
|
8356
|
-
args: [NgZone]
|
|
8357
|
-
}, {
|
|
8358
|
-
type: Optional
|
|
8359
|
-
}] }], propDecorators: { disabled: [{
|
|
8773
|
+
}], ctorParameters: () => [], propDecorators: { disabled: [{
|
|
8360
8774
|
type: Input,
|
|
8361
8775
|
args: [{ transform: booleanAttribute, alias: 'fDraggableDisabled' }]
|
|
8362
8776
|
}], fMultiSelectTrigger: [{
|
|
@@ -9827,14 +10241,14 @@ class GetFlowStateConnectionsRequest {
|
|
|
9827
10241
|
*/
|
|
9828
10242
|
let GetFlowStateConnectionsExecution = class GetFlowStateConnectionsExecution {
|
|
9829
10243
|
_store = inject(FComponentsStore);
|
|
9830
|
-
handle(
|
|
10244
|
+
handle(_request) {
|
|
9831
10245
|
return this._store.fConnections.map(this._mapToConnectionState);
|
|
9832
10246
|
}
|
|
9833
10247
|
_mapToConnectionState(x) {
|
|
9834
10248
|
return {
|
|
9835
10249
|
id: x.fId(),
|
|
9836
|
-
fOutputId: x.fOutputId,
|
|
9837
|
-
fInputId: x.fInputId,
|
|
10250
|
+
fOutputId: x.fOutputId(),
|
|
10251
|
+
fInputId: x.fInputId(),
|
|
9838
10252
|
fType: x.fType,
|
|
9839
10253
|
fBehavior: x.fBehavior,
|
|
9840
10254
|
isSelected: x.isSelected(),
|
|
@@ -9864,7 +10278,9 @@ class GetFlowStateNodesRequest {
|
|
|
9864
10278
|
let GetFlowStateNodesExecution = class GetFlowStateNodesExecution {
|
|
9865
10279
|
_store = inject(FComponentsStore);
|
|
9866
10280
|
handle(request) {
|
|
9867
|
-
return this._store.fNodes
|
|
10281
|
+
return this._store.fNodes
|
|
10282
|
+
.filter((x) => x instanceof request.type)
|
|
10283
|
+
.map((x) => {
|
|
9868
10284
|
return {
|
|
9869
10285
|
id: x.fId(),
|
|
9870
10286
|
parent: x.fParentId(),
|
|
@@ -9878,17 +10294,21 @@ let GetFlowStateNodesExecution = class GetFlowStateNodesExecution {
|
|
|
9878
10294
|
});
|
|
9879
10295
|
}
|
|
9880
10296
|
_getOutputs(hostElement) {
|
|
9881
|
-
return this._store.fOutputs
|
|
10297
|
+
return this._store.fOutputs
|
|
10298
|
+
.filter((x) => hostElement.contains(x.hostElement))
|
|
10299
|
+
.map((x) => {
|
|
9882
10300
|
return {
|
|
9883
|
-
id: x.fId,
|
|
10301
|
+
id: x.fId(),
|
|
9884
10302
|
fConnectableSide: x.fConnectableSide,
|
|
9885
10303
|
};
|
|
9886
10304
|
});
|
|
9887
10305
|
}
|
|
9888
10306
|
_getInputs(hostElement) {
|
|
9889
|
-
return this._store.fInputs
|
|
10307
|
+
return this._store.fInputs
|
|
10308
|
+
.filter((x) => hostElement.contains(x.hostElement))
|
|
10309
|
+
.map((x) => {
|
|
9890
10310
|
return {
|
|
9891
|
-
id: x.fId,
|
|
10311
|
+
id: x.fId(),
|
|
9892
10312
|
fConnectableSide: x.fConnectableSide,
|
|
9893
10313
|
};
|
|
9894
10314
|
});
|
|
@@ -10080,13 +10500,10 @@ let CalculateInputConnections = class CalculateInputConnections {
|
|
|
10080
10500
|
return this._calculateConnections(new Set(this._calculateConnectors(request.fNode)));
|
|
10081
10501
|
}
|
|
10082
10502
|
_calculateConnectors(fNode) {
|
|
10083
|
-
return this._store.fInputs
|
|
10084
|
-
.filter((x) => fNode.isContains(x.hostElement))
|
|
10085
|
-
.map((x) => x.fId);
|
|
10503
|
+
return this._store.fInputs.filter((x) => fNode.isContains(x.hostElement)).map((x) => x.fId());
|
|
10086
10504
|
}
|
|
10087
10505
|
_calculateConnections(ids) {
|
|
10088
|
-
return this._store.fConnections
|
|
10089
|
-
.filter((x) => ids.has(x.fInputId));
|
|
10506
|
+
return this._store.fConnections.filter((x) => ids.has(x.fInputId()));
|
|
10090
10507
|
}
|
|
10091
10508
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateInputConnections, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10092
10509
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateInputConnections });
|
|
@@ -10180,13 +10597,10 @@ let CalculateOutputConnections = class CalculateOutputConnections {
|
|
|
10180
10597
|
return this._calculateConnections(new Set(this._calculateConnectors(request.fNode)));
|
|
10181
10598
|
}
|
|
10182
10599
|
_calculateConnectors(fNode) {
|
|
10183
|
-
return this._store.fOutputs
|
|
10184
|
-
.filter((x) => fNode.isContains(x.hostElement))
|
|
10185
|
-
.map((x) => x.fId);
|
|
10600
|
+
return this._store.fOutputs.filter((x) => fNode.isContains(x.hostElement)).map((x) => x.fId());
|
|
10186
10601
|
}
|
|
10187
10602
|
_calculateConnections(ids) {
|
|
10188
|
-
return this._store.fConnections
|
|
10189
|
-
.filter((x) => ids.has(x.fOutputId));
|
|
10603
|
+
return this._store.fConnections.filter((x) => ids.has(x.fOutputId()));
|
|
10190
10604
|
}
|
|
10191
10605
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateOutputConnections, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
10192
10606
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateOutputConnections });
|
|
@@ -11798,5 +12212,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
11798
12212
|
* Generated bundle index. Do not edit.
|
|
11799
12213
|
*/
|
|
11800
12214
|
|
|
11801
|
-
export { AddBackgroundToStoreExecution, AddBackgroundToStoreRequest, AddCanvasToStoreExecution, AddCanvasToStoreRequest, AddConnectionForCreateToStoreExecution, AddConnectionForCreateToStoreRequest, AddConnectionMarkerToStoreExecution, AddConnectionMarkerToStoreRequest, AddConnectionToStoreExecution, AddConnectionToStoreRequest, AddDndToStoreExecution, AddDndToStoreRequest, AddFlowToStoreExecution, AddFlowToStoreRequest, AddInputToStoreExecution, AddInputToStoreRequest, AddLineAlignmentToStoreExecution, AddLineAlignmentToStoreRequest, AddNodeToStore, AddNodeToStoreRequest, AddOutletToStoreExecution, AddOutletToStoreRequest, AddOutputToStoreExecution, AddOutputToStoreRequest, AddPatternToBackgroundExecution, AddPatternToBackgroundRequest, AddSnapConnectionToStoreExecution, AddSnapConnectionToStoreRequest, AddZoomToStoreExecution, AddZoomToStoreRequest, ApplyChildResizeConstraints, ApplyChildResizeConstraintsRequest, ApplyParentResizeConstraints, ApplyParentResizeConstraintsRequest, BaseConnectionDragHandler, BuildDragHierarchy, BuildDragHierarchyRequest, BuildDragHierarchyResponse, CANVAS_PROVIDERS, COMMON_PROVIDERS, CONNECTIONS_PROVIDERS, CONNECTION_GRADIENT, CONNECTION_PATH, CONNECTION_TEXT, CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS, CalculateCenterBetweenPointsHandler, CalculateCenterBetweenPointsRequest, CalculateChangedRectFromDifference, CalculateChangedRectFromDifferenceRequest, CalculateConnectionCenterHandler, CalculateConnectionCenterRequest, CalculateConnectionLineByBehaviorExecution, CalculateConnectionLineByBehaviorRequest, CalculateDirectChildrenUnionRect, CalculateDirectChildrenUnionRectRequest, CalculateDragLimits, CalculateDragLimitsRequest, CalculateFlowPointFromMinimapPointExecution, CalculateFlowPointFromMinimapPointRequest, CalculateInputConnections, CalculateInputConnectionsRequest, CalculateNodesBoundingBox, CalculateNodesBoundingBoxNormalizedPosition, CalculateNodesBoundingBoxNormalizedPositionRequest, CalculateNodesBoundingBoxRequest, CalculateOutputConnections, CalculateOutputConnectionsRequest, CalculateResizeLimits, CalculateResizeLimitsRequest, CenterGroupOrNodeExecution, CenterGroupOrNodeRequest, ClearSelectionExecution, ClearSelectionRequest, CreateConnectionMarkersExecution, CreateConnectionMarkersRequest, CreateDragModelFromSelection, CreateDragModelFromSelectionRequest, CreateInputConnectionHandlerAndSetToNodeHandler, CreateInputConnectionHandlerAndSetToNodeHandlerRequest, CreateOutputConnectionHandlerAndSetToNodeHandler, CreateOutputConnectionHandlerAndSetToNodeHandlerRequest, CreateSnapLines, CreateSnapLinesRequest, CreateSummaryDragHandler, CreateSummaryDragHandlerRequest, DRAG_AND_DROP_COMMON_PROVIDERS, Deprecated, DragAndDropBase, DragConstraintPipeline, DropToGroupFinalize, DropToGroupFinalizeRequest, DropToGroupPreparation, DropToGroupPreparationRequest, EFConnectableSide, EFConnectionBehavior, EFConnectionType, EFMarkerType, EFResizeHandleType, EFZoomDirection, EmitSelectionChangeEventExecution, EmitSelectionChangeEventRequest, EndDragSequenceExecution, EndDragSequenceRequest, EventExtensions, ExternalRectConstraint, FBackgroundBase, FBackgroundComponent, FBezierPathBuilder, FCanvasBase, FCanvasChangeEvent, FCanvasComponent, FCanvasDragHandler, FCanvasMoveFinalizeExecution, FCanvasMoveFinalizeRequest, FCanvasMovePreparationExecution, FCanvasMovePreparationRequest, FChannel, FChannelHub, FCirclePatternComponent, FComponentsStore, FConnectionBase, FConnectionCenterDirective, FConnectionComponent, FConnectionDragHandleEndComponent, FConnectionDragHandleStartComponent, FConnectionFactory, FConnectionForCreateComponent, FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent, FConnectionTextComponent, FConnectionTextPathDirective, FConnectorBase, FCreateConnectionDragHandler, FCreateConnectionDragHandlerPreparationExecution, FCreateConnectionDragHandlerPreparationRequest, FCreateConnectionEvent, FCreateConnectionFinalizeExecution, FCreateConnectionFinalizeRequest, FCreateConnectionFromOutletPreparationExecution, FCreateConnectionFromOutletPreparationRequest, FCreateConnectionFromOutputPreparationExecution, FCreateConnectionFromOutputPreparationRequest, FCreateConnectionPreparationExecution, FCreateConnectionPreparationRequest, FCreateNodeEvent, FDragBlockerDirective, FDragHandleDirective, FDragHandlerResult, FDragStartedEvent, FDraggableBase, FDraggableDataContext, FDraggableDirective, FDropToGroupEvent, FExternalItemBase, FExternalItemCreatePlaceholderExecution, FExternalItemCreatePlaceholderRequest, FExternalItemCreatePreviewExecution, FExternalItemCreatePreviewRequest, FExternalItemDirective, FExternalItemDragHandler, FExternalItemFinalizeExecution, FExternalItemFinalizeRequest, FExternalItemPlaceholderDirective, FExternalItemPreparationExecution, FExternalItemPreparationRequest, FExternalItemPreviewDirective, FExternalItemService, FFlowBase, FFlowComponent, FFlowModule, FGroupDirective, FLineAlignmentBase, FLineAlignmentComponent, FMarkerBase, FMarkerDirective, FMinimapCanvasDirective, FMinimapComponent, FMinimapData, FMinimapDragHandler, FMinimapFlowDirective, FMinimapViewDirective, FMoveNodesEvent, FNodeBase, FNodeDirective, FNodeDropToGroupDragHandler, FNodeInputBase, FNodeInputDirective, FNodeIntersectedWithConnections, FNodeMoveFinalizeExecution, FNodeMoveFinalizeRequest, FNodeMovePreparationExecution, FNodeMovePreparationRequest, FNodeOutletBase, FNodeOutletDirective, FNodeOutputBase, FNodeOutputDirective, FNodeRotateDragHandler, FNodeRotateFinalizeExecution, FNodeRotateFinalizeRequest, FNodeRotatePreparationExecution, FNodeRotatePreparationRequest, FReassignConnectionDragHandler, FReassignConnectionEvent, FReassignConnectionFinalizeExecution, FReassignConnectionFinalizeRequest, FReassignConnectionPreparationExecution, FReassignConnectionPreparationRequest, FReassignSourceDragHandler, FReassignTargetDragHandler, FRectPatternComponent, FResizeChannel, FResizeHandleDirective, FRotateHandleDirective, FSegmentPathBuilder, FSelectionAreaBase, FSelectionAreaComponent, FSelectionChangeEvent, FSingleSelectExecution, FSingleSelectRequest, FSnapConnectionComponent, FStraightPathBuilder, FZoomBase, FZoomDirective, F_AFTER_MAIN_PLUGIN, F_BACKGROUND, F_BACKGROUND_FEATURES, F_BACKGROUND_PATTERN, F_BACKGROUND_PROVIDERS, F_BEFORE_MAIN_PLUGIN, F_CANVAS, F_CANVAS_FEATURES, F_CANVAS_PROVIDERS, F_CONNECTION_BUILDERS, F_CONNECTION_FEATURES, F_CONNECTION_IDENTIFIERS, F_CONNECTION_PROVIDERS, F_CONNECTORS_FEATURES, F_CONNECTORS_PROVIDERS, F_CSS_CLASS, F_DRAGGABLE_FEATURES, F_DRAGGABLE_PROVIDERS, F_EXTERNAL_ITEM, F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS, F_EXTERNAL_ITEM_PROVIDERS, F_FLOW, F_FLOW_FEATURES, F_FLOW_PROVIDERS, F_LINE_ALIGNMENT, F_LINE_ALIGNMENT_FEATURES, F_LINE_ALIGNMENT_PROVIDERS, F_MARKER, F_MINIMAP_DRAG_AND_DROP_PROVIDERS, F_MINIMAP_PROVIDERS, F_NODE, F_NODE_FEATURES, F_NODE_INPUT, F_NODE_OUTLET, F_NODE_OUTPUT, F_NODE_PROVIDERS, F_SELECTED_CLASS, F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS, F_SELECTION_AREA_PROVIDERS, F_SELECTION_FEATURES, F_STORAGE_PROVIDERS, F_ZOOM, F_ZOOM_FEATURES, F_ZOOM_PROVIDERS, F_ZOOM_TAG, FindClosestConnectorExecution, FindClosestConnectorRequest, FindConnectableConnectorUsingPriorityAndPositionExecution, FindConnectableConnectorUsingPriorityAndPositionRequest, FitToChildNodesAndGroups, FitToChildNodesAndGroupsRequest, FitToFlowExecution, FitToFlowRequest, GET_FLOW_STATE_PROVIDERS, GetAllCanBeConnectedInputsAndRectsExecution, GetAllCanBeConnectedInputsAndRectsRequest, GetAllCanBeConnectedSourceConnectorsAndRectsExecution, GetAllCanBeConnectedSourceConnectorsAndRectsRequest, GetCanBeSelectedItemsExecution, GetCanBeSelectedItemsRequest, GetCanvasExecution, GetCanvasRequest, GetChildNodeIds, GetChildNodeIdsRequest, GetConnectorAndRectExecution, GetConnectorAndRectRequest, GetCurrentSelectionExecution, GetCurrentSelectionRequest, GetDeepChildrenNodesAndGroupsExecution, GetDeepChildrenNodesAndGroupsRequest, GetElementRoundedRectExecution, GetElementRoundedRectRequest, GetFirstConnectableOutputExecution, GetFirstConnectableOutputRequest, GetFlowExecution, GetFlowHostElementExecution, GetFlowHostElementRequest, GetFlowRequest, GetFlowStateConnectionsExecution, GetFlowStateConnectionsRequest, GetFlowStateExecution, GetFlowStateNodesExecution, GetFlowStateNodesRequest, GetFlowStateRequest, GetNodeBoundingIncludePaddings, GetNodeBoundingIncludePaddingsRequest, GetNodeBoundingIncludePaddingsResponse, GetNodePadding, GetNodePaddingRequest, GetNodes, GetNodesRequest, GetNormalizedConnectorRectExecution, GetNormalizedConnectorRectRequest, GetNormalizedElementRectExecution, GetNormalizedElementRectRequest, GetNormalizedParentNodeRectExecution, GetNormalizedParentNodeRectRequest, GetNormalizedPointExecution, GetNormalizedPointRequest, GetParentNodes, GetParentNodesRequest, IMouseEvent, IPointerEvent, IPointerUpEvent, ITouchDownEvent, ITouchMoveEvent, InitializeDragSequenceExecution, InitializeDragSequenceRequest, InputCanvasPositionExecution, InputCanvasPositionRequest, InputCanvasScaleExecution, InputCanvasScaleRequest, IsArrayHasParentNodeExecution, IsArrayHasParentNodeRequest, IsConnectionUnderNodeExecution, IsConnectionUnderNodeRequest, IsDragStarted, IsDragStartedRequest, ListenCountChangesExecution, ListenCountChangesRequest, ListenDataChangesExecution, ListenDataChangesRequest, ListenTransformChangesExecution, ListenTransformChangesRequest, LogExecutionTime, MINIMAP_DRAG_FINALIZE_PROVIDERS, MINIMAP_DRAG_PREPARATION_PROVIDERS, MOUSE_EVENT_IGNORE_TIME, MarkConnectableConnectorsExecution, MarkConnectableConnectorsRequest, MinimapCalculateSvgScaleAndViewBoxExecution, MinimapCalculateSvgScaleAndViewBoxRequest, MinimapCalculateViewBoxExecution, MinimapCalculateViewBoxRequest, MinimapDragFinalizeExecution, MinimapDragFinalizeRequest, MinimapDragPreparationExecution, MinimapDragPreparationRequest, MinimapDrawNodesExecution, MinimapDrawNodesRequest, MoveDragHandler, MoveFrontElementsBeforeTargetElementExecution, MoveFrontElementsBeforeTargetElementRequest, MoveSummaryDragHandler, NODE_DROP_TO_GROUP_PROVIDERS, NODE_PROVIDERS, NODE_RESIZE_PROVIDERS, NODE_ROTATE_PROVIDERS, NodeResizeDragHandler, NodeResizeFinalize, NodeResizeFinalizeRequest, NodeResizePreparation, NodeResizePreparationRequest, NotifyDataChangedExecution, NotifyDataChangedRequest, NotifyTransformChangedExecution, NotifyTransformChangedRequest, OnPointerMoveExecution, OnPointerMoveRequest, PrepareDragSequenceExecution, PrepareDragSequenceRequest, PreventDefaultIsExternalItemExecution, PreventDefaultIsExternalItemRequest, RESIZE_DIRECTIONS, RectConstraint, RedrawCanvasWithAnimationExecution, RedrawCanvasWithAnimationRequest, RedrawConnectionsExecution, RedrawConnectionsRequest, RemoveBackgroundFromStoreExecution, RemoveBackgroundFromStoreRequest, RemoveCanvasFromStoreExecution, RemoveCanvasFromStoreRequest, RemoveConnectionForCreateFromStoreExecution, RemoveConnectionForCreateFromStoreRequest, RemoveConnectionFromStoreExecution, RemoveConnectionFromStoreRequest, RemoveConnectionMarkerFromStoreExecution, RemoveConnectionMarkerFromStoreRequest, RemoveDndFromStoreExecution, RemoveDndFromStoreRequest, RemoveFlowFromStoreExecution, RemoveFlowFromStoreRequest, RemoveInputFromStoreExecution, RemoveInputFromStoreRequest, RemoveLineAlignmentFromStoreExecution, RemoveLineAlignmentFromStoreRequest, RemoveNodeFromStore, RemoveNodeFromStoreRequest, RemoveOutletFromStoreExecution, RemoveOutletFromStoreRequest, RemoveOutputFromStoreExecution, RemoveOutputFromStoreRequest, RemoveSnapConnectionFromStoreExecution, RemoveSnapConnectionFromStoreRequest, RemoveZoomFromStoreExecution, RemoveZoomFromStoreRequest, ResetScaleAndCenterExecution, ResetScaleAndCenterRequest, ResetScaleExecution, ResetScaleRequest, ResetZoomExecution, ResetZoomRequest, SINGLE_SELECT_PROVIDERS, SelectAllExecution, SelectAllRequest, SelectAndUpdateNodeLayerExecution, SelectAndUpdateNodeLayerRequest, SelectExecution, SelectRequest, SelectionAreaDragHandle, SelectionAreaFinalizeExecution, SelectionAreaFinalizeRequest, SelectionAreaPreparationExecution, SelectionAreaPreparationRequest, SetBackgroundTransformExecution, SetBackgroundTransformRequest, SetZoomExecution, SetZoomRequest, SnapLineElement, SnapLineService, SnapLinesDragHandler, SnapToGrid, SortContainersForDropByLayer, SortContainersForDropByLayerRequest, SortItemLayersExecution, SortItemLayersRequest, SortItemsByParentExecution, SortItemsByParentRequest, SortNodeLayersExecution, SortNodeLayersRequest, SourceConnectionDragHandler, SourceTargetConnectionDragHandler, StartDragSequenceExecution, StartDragSequenceRequest, TargetConnectionDragHandler, UnmarkConnectableConnectorsExecution, UnmarkConnectableConnectorsRequest, UpdateItemAndChildrenLayersExecution, UpdateItemAndChildrenLayersRequest, UpdateNodeWhenStateOrSizeChanged, UpdateNodeWhenStateOrSizeChangedRequest, UpdateScaleExecution, UpdateScaleRequest, createSVGElement, debounceTime, defaultEventTrigger, expandRectFromBaseline, fixedCenterBehavior, fixedOutboundBehavior, floatingBehavior, getExternalItem, getMarkerEndId, getMarkerSelectedEndId, getMarkerSelectedStartId, getMarkerStartId, infinityMinMax, isClosestConnectorInsideSnapThreshold, isDragBlocker, isDragHandleEnd, isDragHandleStart, isExternalItem, isMobile, isNode, isNodeOutlet, isNodeOutput, isPointerInsideStartOrEndDragHandles, isRotateHandle, isValidEventTrigger, mixinChangeSelection, mixinChangeVisibility, notifyOnStart, roundedRectFromPoint, transitionEnd };
|
|
12215
|
+
export { AddBackgroundToStoreExecution, AddBackgroundToStoreRequest, AddCanvasToStoreExecution, AddCanvasToStoreRequest, AddConnectionForCreateToStoreExecution, AddConnectionForCreateToStoreRequest, AddConnectionMarkerToStoreExecution, AddConnectionMarkerToStoreRequest, AddConnectionToStoreExecution, AddConnectionToStoreRequest, AddDndToStoreExecution, AddDndToStoreRequest, AddFlowToStoreExecution, AddFlowToStoreRequest, AddInputToStore, AddInputToStoreRequest, AddLineAlignmentToStoreExecution, AddLineAlignmentToStoreRequest, AddNodeToStore, AddNodeToStoreRequest, AddOutletToStore, AddOutletToStoreRequest, AddOutputToStore, AddOutputToStoreRequest, AddPatternToBackgroundExecution, AddPatternToBackgroundRequest, AddSnapConnectionToStoreExecution, AddSnapConnectionToStoreRequest, AddZoomToStoreExecution, AddZoomToStoreRequest, ApplyChildResizeConstraints, ApplyChildResizeConstraintsRequest, ApplyParentResizeConstraints, ApplyParentResizeConstraintsRequest, BaseConnectionDragHandler, BuildDragHierarchy, BuildDragHierarchyRequest, BuildDragHierarchyResponse, CANVAS_PROVIDERS, COMMON_PROVIDERS, CONNECTIONS_PROVIDERS, CONNECTION_GRADIENT, CONNECTION_PATH, CONNECTION_TEXT, CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS, CalculateCenterBetweenPointsHandler, CalculateCenterBetweenPointsRequest, CalculateChangedRectFromDifference, CalculateChangedRectFromDifferenceRequest, CalculateClosestConnector, CalculateClosestConnectorRequest, CalculateConnectionCenterHandler, CalculateConnectionCenterRequest, CalculateConnectionLineByBehavior, CalculateConnectionLineByBehaviorRequest, CalculateDirectChildrenUnionRect, CalculateDirectChildrenUnionRectRequest, CalculateDragLimits, CalculateDragLimitsRequest, CalculateFlowPointFromMinimapPointExecution, CalculateFlowPointFromMinimapPointRequest, CalculateInputConnections, CalculateInputConnectionsRequest, CalculateNodesBoundingBox, CalculateNodesBoundingBoxNormalizedPosition, CalculateNodesBoundingBoxNormalizedPositionRequest, CalculateNodesBoundingBoxRequest, CalculateOutputConnections, CalculateOutputConnectionsRequest, CalculateResizeLimits, CalculateResizeLimitsRequest, CenterGroupOrNodeExecution, CenterGroupOrNodeRequest, ClearSelectionExecution, ClearSelectionRequest, ConnectionContentLayoutEngine, CreateConnectionMarkersExecution, CreateConnectionMarkersRequest, CreateDragModelFromSelection, CreateDragModelFromSelectionRequest, CreateInputConnectionHandlerAndSetToNodeHandler, CreateInputConnectionHandlerAndSetToNodeHandlerRequest, CreateOutputConnectionHandlerAndSetToNodeHandler, CreateOutputConnectionHandlerAndSetToNodeHandlerRequest, CreateSnapLines, CreateSnapLinesRequest, CreateSummaryDragHandler, CreateSummaryDragHandlerRequest, DRAG_AND_DROP_COMMON_PROVIDERS, Deprecated, DragAndDropBase, DragConstraintPipeline, DropToGroupFinalize, DropToGroupFinalizeRequest, DropToGroupPreparation, DropToGroupPreparationRequest, EFConnectableSide, EFConnectionBehavior, EFConnectionType, EFMarkerType, EFResizeHandleType, EFZoomDirection, EmitSelectionChangeEventExecution, EmitSelectionChangeEventRequest, EndDragSequenceExecution, EndDragSequenceRequest, EventExtensions, ExternalRectConstraint, FBackgroundBase, FBackgroundComponent, FBezierPathBuilder, FCanvasBase, FCanvasChangeEvent, FCanvasComponent, FCanvasDragHandler, FCanvasMoveFinalizeExecution, FCanvasMoveFinalizeRequest, FCanvasMovePreparationExecution, FCanvasMovePreparationRequest, FChannel, FChannelHub, FCirclePatternComponent, FComponentsStore, FConnectionBase, FConnectionCenterDirective, FConnectionComponent, FConnectionContent, FConnectionDragHandleEndComponent, FConnectionDragHandleStartComponent, FConnectionFactory, FConnectionForCreateComponent, FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent, FConnectionTextComponent, FConnectionTextPathDirective, FConnectorBase, FCreateConnectionDragHandler, FCreateConnectionDragHandlerPreparationExecution, FCreateConnectionDragHandlerPreparationRequest, FCreateConnectionEvent, FCreateConnectionFinalizeExecution, FCreateConnectionFinalizeRequest, FCreateConnectionFromOutletPreparationExecution, FCreateConnectionFromOutletPreparationRequest, FCreateConnectionFromOutputPreparationExecution, FCreateConnectionFromOutputPreparationRequest, FCreateConnectionPreparationExecution, FCreateConnectionPreparationRequest, FCreateNodeEvent, FDragBlockerDirective, FDragHandleDirective, FDragHandlerResult, FDragStartedEvent, FDraggableBase, FDraggableDataContext, FDraggableDirective, FDropToGroupEvent, FExternalItemBase, FExternalItemCreatePlaceholderExecution, FExternalItemCreatePlaceholderRequest, FExternalItemCreatePreviewExecution, FExternalItemCreatePreviewRequest, FExternalItemDirective, FExternalItemDragHandler, FExternalItemFinalizeExecution, FExternalItemFinalizeRequest, FExternalItemPlaceholderDirective, FExternalItemPreparationExecution, FExternalItemPreparationRequest, FExternalItemPreviewDirective, FExternalItemService, FFlowBase, FFlowComponent, FFlowModule, FGroupDirective, FLineAlignmentBase, FLineAlignmentComponent, FMarkerBase, FMarkerDirective, FMinimapCanvasDirective, FMinimapComponent, FMinimapData, FMinimapDragHandler, FMinimapFlowDirective, FMinimapViewDirective, FMoveNodesEvent, FNodeBase, FNodeDirective, FNodeDropToGroupDragHandler, FNodeInputBase, FNodeInputDirective, FNodeIntersectedWithConnections, FNodeMoveFinalizeExecution, FNodeMoveFinalizeRequest, FNodeMovePreparationExecution, FNodeMovePreparationRequest, FNodeOutletBase, FNodeOutletDirective, FNodeOutputBase, FNodeOutputDirective, FNodeRotateDragHandler, FNodeRotateFinalizeExecution, FNodeRotateFinalizeRequest, FNodeRotatePreparationExecution, FNodeRotatePreparationRequest, FReassignConnectionDragHandler, FReassignConnectionEvent, FReassignConnectionFinalizeExecution, FReassignConnectionFinalizeRequest, FReassignConnectionPreparationExecution, FReassignConnectionPreparationRequest, FReassignSourceDragHandler, FReassignTargetDragHandler, FRectPatternComponent, FResizeChannel, FResizeHandleDirective, FRotateHandleDirective, FSegmentPathBuilder, FSelectionAreaBase, FSelectionAreaComponent, FSelectionChangeEvent, FSingleSelectExecution, FSingleSelectRequest, FSnapConnectionComponent, FSourceConnectorBase, FStraightPathBuilder, FZoomBase, FZoomDirective, F_AFTER_MAIN_PLUGIN, F_BACKGROUND, F_BACKGROUND_FEATURES, F_BACKGROUND_PATTERN, F_BACKGROUND_PROVIDERS, F_BEFORE_MAIN_PLUGIN, F_CANVAS, F_CANVAS_FEATURES, F_CANVAS_PROVIDERS, F_CONNECTION_BUILDERS, F_CONNECTION_FEATURES, F_CONNECTION_IDENTIFIERS, F_CONNECTION_PROVIDERS, F_CONNECTORS_FEATURES, F_CONNECTORS_PROVIDERS, F_CSS_CLASS, F_DRAGGABLE_FEATURES, F_DRAGGABLE_PROVIDERS, F_EXTERNAL_ITEM, F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS, F_EXTERNAL_ITEM_PROVIDERS, F_FLOW, F_FLOW_FEATURES, F_FLOW_PROVIDERS, F_LINE_ALIGNMENT, F_LINE_ALIGNMENT_FEATURES, F_LINE_ALIGNMENT_PROVIDERS, F_MARKER, F_MINIMAP_DRAG_AND_DROP_PROVIDERS, F_MINIMAP_PROVIDERS, F_NODE, F_NODE_FEATURES, F_NODE_INPUT, F_NODE_OUTLET, F_NODE_OUTPUT, F_NODE_PROVIDERS, F_SELECTED_CLASS, F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS, F_SELECTION_AREA_PROVIDERS, F_SELECTION_FEATURES, F_STORAGE_PROVIDERS, F_ZOOM, F_ZOOM_FEATURES, F_ZOOM_PROVIDERS, F_ZOOM_TAG, FindConnectableConnectorUsingPriorityAndPositionExecution, FindConnectableConnectorUsingPriorityAndPositionRequest, FitToChildNodesAndGroups, FitToChildNodesAndGroupsRequest, FitToFlowExecution, FitToFlowRequest, GET_FLOW_STATE_PROVIDERS, GetAllCanBeConnectedInputsAndRectsExecution, GetAllCanBeConnectedInputsAndRectsRequest, GetAllCanBeConnectedSourceConnectorsAndRectsExecution, GetAllCanBeConnectedSourceConnectorsAndRectsRequest, GetCanBeSelectedItemsExecution, GetCanBeSelectedItemsRequest, GetCanvasExecution, GetCanvasRequest, GetChildNodeIds, GetChildNodeIdsRequest, GetConnectorAndRect, GetConnectorAndRectRequest, GetCurrentSelectionExecution, GetCurrentSelectionRequest, GetDeepChildrenNodesAndGroupsExecution, GetDeepChildrenNodesAndGroupsRequest, GetElementRoundedRectExecution, GetElementRoundedRectRequest, GetFirstConnectableOutputExecution, GetFirstConnectableOutputRequest, GetFlowExecution, GetFlowHostElementExecution, GetFlowHostElementRequest, GetFlowRequest, GetFlowStateConnectionsExecution, GetFlowStateConnectionsRequest, GetFlowStateExecution, GetFlowStateNodesExecution, GetFlowStateNodesRequest, GetFlowStateRequest, GetNodeBoundingIncludePaddings, GetNodeBoundingIncludePaddingsRequest, GetNodeBoundingIncludePaddingsResponse, GetNodePadding, GetNodePaddingRequest, GetNodes, GetNodesRequest, GetNormalizedConnectorRectExecution, GetNormalizedConnectorRectRequest, GetNormalizedElementRectExecution, GetNormalizedElementRectRequest, GetNormalizedParentNodeRectExecution, GetNormalizedParentNodeRectRequest, GetNormalizedPointExecution, GetNormalizedPointRequest, GetParentNodes, GetParentNodesRequest, IMouseEvent, IPointerEvent, IPointerUpEvent, ITouchDownEvent, ITouchMoveEvent, InitializeDragSequenceExecution, InitializeDragSequenceRequest, InputCanvasPositionExecution, InputCanvasPositionRequest, InputCanvasScaleExecution, InputCanvasScaleRequest, IsArrayHasParentNodeExecution, IsArrayHasParentNodeRequest, IsConnectionUnderNodeExecution, IsConnectionUnderNodeRequest, IsDragStarted, IsDragStartedRequest, ListenCountChangesExecution, ListenCountChangesRequest, ListenDataChangesExecution, ListenDataChangesRequest, ListenTransformChangesExecution, ListenTransformChangesRequest, LogExecutionTime, MINIMAP_DRAG_FINALIZE_PROVIDERS, MINIMAP_DRAG_PREPARATION_PROVIDERS, MOUSE_EVENT_IGNORE_TIME, MarkConnectableConnectors, MarkConnectableConnectorsRequest, MinimapCalculateSvgScaleAndViewBoxExecution, MinimapCalculateSvgScaleAndViewBoxRequest, MinimapCalculateViewBoxExecution, MinimapCalculateViewBoxRequest, MinimapDragFinalizeExecution, MinimapDragFinalizeRequest, MinimapDragPreparationExecution, MinimapDragPreparationRequest, MinimapDrawNodesExecution, MinimapDrawNodesRequest, MoveDragHandler, MoveFrontElementsBeforeTargetElementExecution, MoveFrontElementsBeforeTargetElementRequest, MoveSummaryDragHandler, NODE_DROP_TO_GROUP_PROVIDERS, NODE_PROVIDERS, NODE_RESIZE_PROVIDERS, NODE_ROTATE_PROVIDERS, NodeResizeDragHandler, NodeResizeFinalize, NodeResizeFinalizeRequest, NodeResizePreparation, NodeResizePreparationRequest, NotifyDataChangedExecution, NotifyDataChangedRequest, NotifyTransformChangedExecution, NotifyTransformChangedRequest, OnPointerMoveExecution, OnPointerMoveRequest, Polyline, PolylineContentAlign, PolylineContentPlace, PolylineSampler, PrepareDragSequenceExecution, PrepareDragSequenceRequest, PreventDefaultIsExternalItemExecution, PreventDefaultIsExternalItemRequest, RESIZE_DIRECTIONS, RectConstraint, RedrawCanvasWithAnimationExecution, RedrawCanvasWithAnimationRequest, RedrawConnectionsExecution, RedrawConnectionsRequest, RemoveBackgroundFromStoreExecution, RemoveBackgroundFromStoreRequest, RemoveCanvasFromStoreExecution, RemoveCanvasFromStoreRequest, RemoveConnectionForCreateFromStoreExecution, RemoveConnectionForCreateFromStoreRequest, RemoveConnectionFromStoreExecution, RemoveConnectionFromStoreRequest, RemoveConnectionMarkerFromStoreExecution, RemoveConnectionMarkerFromStoreRequest, RemoveDndFromStoreExecution, RemoveDndFromStoreRequest, RemoveFlowFromStoreExecution, RemoveFlowFromStoreRequest, RemoveInputFromStore, RemoveInputFromStoreRequest, RemoveLineAlignmentFromStoreExecution, RemoveLineAlignmentFromStoreRequest, RemoveNodeFromStore, RemoveNodeFromStoreRequest, RemoveOutletFromStoreExecution, RemoveOutletFromStoreRequest, RemoveOutputFromStoreExecution, RemoveOutputFromStoreRequest, RemoveSnapConnectionFromStoreExecution, RemoveSnapConnectionFromStoreRequest, RemoveZoomFromStoreExecution, RemoveZoomFromStoreRequest, ResetScaleAndCenterExecution, ResetScaleAndCenterRequest, ResetScaleExecution, ResetScaleRequest, ResetZoomExecution, ResetZoomRequest, SINGLE_SELECT_PROVIDERS, SelectAllExecution, SelectAllRequest, SelectAndUpdateNodeLayerExecution, SelectAndUpdateNodeLayerRequest, SelectExecution, SelectRequest, SelectionAreaDragHandle, SelectionAreaFinalizeExecution, SelectionAreaFinalizeRequest, SelectionAreaPreparationExecution, SelectionAreaPreparationRequest, SetBackgroundTransformExecution, SetBackgroundTransformRequest, SetZoomExecution, SetZoomRequest, SnapLineElement, SnapLineService, SnapLinesDragHandler, SnapToGrid, SortContainersForDropByLayer, SortContainersForDropByLayerRequest, SortItemLayersExecution, SortItemLayersRequest, SortItemsByParentExecution, SortItemsByParentRequest, SortNodeLayersExecution, SortNodeLayersRequest, SourceConnectionDragHandler, SourceTargetConnectionDragHandler, StartDragSequenceExecution, StartDragSequenceRequest, TargetConnectionDragHandler, UnmarkConnectableConnectors, UnmarkConnectableConnectorsRequest, UpdateItemAndChildrenLayersExecution, UpdateItemAndChildrenLayersRequest, UpdateNodeWhenStateOrSizeChanged, UpdateNodeWhenStateOrSizeChangedRequest, UpdateScaleExecution, UpdateScaleRequest, createSVGElement, debounceTime, defaultEventTrigger, expandRectFromBaseline, fixedCenterBehavior, fixedOutboundBehavior, floatingBehavior, getExternalItem, getMarkerEndId, getMarkerSelectedEndId, getMarkerSelectedStartId, getMarkerStartId, infinityMinMax, isClosestConnectorInsideSnapThreshold, isDragBlocker, isDragHandleEnd, isDragHandleStart, isExternalItem, isMobile, isNode, isNodeOutlet, isNodeOutput, isPointerInsideStartOrEndDragHandles, isRotateHandle, isValidEventTrigger, mixinChangeSelection, mixinChangeVisibility, notifyOnStart, roundedRectFromPoint, stringAttribute, transitionEnd };
|
|
11802
12216
|
//# sourceMappingURL=foblex-flow.mjs.map
|