@foblex/flow 12.6.9 → 12.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"foblex-flow.umd.js","sources":["../../../projects/f-flow/src/f-backgroud/domain/i-f-background-pattern.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../projects/f-flow/src/domain/create-connection-markers/create-connection-markers-request.ts","../../../projects/f-flow/src/f-storage/f-components-store.ts","../../../projects/f-flow/src/f-storage/f-transform-store.ts","../../../projects/f-flow/src/domain/create-connection-markers/create-connection-markers.execution.ts","../../../projects/f-flow/src/domain/create-rounded-rect-from-element/create-rounded-rect-from-element-request.ts","../../../projects/f-flow/src/domain/create-rounded-rect-from-element/create-rounded-rect-from-element.execution.ts","../../../projects/f-flow/src/domain/emit-transform-changes/emit-transform-changes.request.ts","../../../projects/f-flow/src/domain/emit-transform-changes/emit-transform-changes.execution.ts","../../../projects/f-flow/src/domain/f-background/add-pattern-to-background/add-pattern-to-background.request.ts","../../../projects/f-flow/src/domain/f-background/add-pattern-to-background/add-pattern-to-background.execution.ts","../../../projects/f-flow/src/domain/f-background/providers.ts","../../../projects/f-flow/src/domain/f-canvas/center-group-or-node/center-group-or-node-request.ts","../../../projects/f-flow/src/domain/f-canvas/center-group-or-node/center-group-or-node.execution.ts","../../../projects/f-flow/src/domain/f-canvas/fit-to-flow/fit-to-flow-request.ts","../../../projects/f-flow/src/domain/f-canvas/fit-to-flow/fit-to-flow.execution.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-position/input-canvas-position-request.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-position/input-canvas-position.execution.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-scale/input-canvas-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-scale/input-canvas-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale/reset-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale/reset-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale-and-center/reset-scale-and-center-request.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale-and-center/reset-scale-and-center.execution.ts","../../../projects/f-flow/src/domain/f-canvas/update-scale/update-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/update-scale/update-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/providers.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-to-store/add-connection-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-to-store/add-connection-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.ts","../../../projects/f-flow/src/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.ts","../../../projects/f-flow/src/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.ts","../../../projects/f-flow/src/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.ts","../../../projects/f-flow/src/domain/get-element-rect-in-flow/get-element-rect-in-flow-request.ts","../../../projects/f-flow/src/domain/get-element-rect-in-flow/get-element-rect-in-flow.execution.ts","../../../projects/f-flow/src/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.ts","../../../projects/f-flow/src/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-from-store/remove-connection-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-from-store/remove-connection-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/providers.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.request.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-draggable-data-context.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas.drag-handler.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/canvas/providers.ts","../../../projects/f-flow/src/f-connectors/e-f-connectable-side.ts","../../../projects/f-flow/src/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.ts","../../../projects/f-flow/src/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.ts","../../../projects/f-flow/src/f-connectors/f-connector-base.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input-base.ts","../../../projects/f-flow/src/f-node/domain/is-group.ts","../../../projects/f-flow/src/f-node/domain/is-node.ts","../../../projects/f-flow/src/f-node/f-drag-handle/f-drag-handle.directive.ts","../../../projects/f-flow/src/f-node/f-resize-handle/e-f-resize-handle-type.ts","../../../projects/f-flow/src/f-node/f-resize-handle/f-resize-handle.directive.ts","../../../projects/f-flow/src/f-node/f-rotate-handle/f-rotate-handle.directive.ts","../../../projects/f-flow/src/mixins/change-selection/change-selection.ts","../../../projects/f-flow/src/mixins/change-visibility/change-visibility.ts","../../../projects/f-flow/src/f-node/f-node-base.ts","../../../projects/f-flow/src/f-node/f-resize-observer.ts","../../../projects/f-flow/src/f-node/f-group.directive.ts","../../../projects/f-flow/src/f-node/f-node.directive.ts","../../../projects/f-flow/src/f-node/providers.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input.directive.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/f-node-outlet-base.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/is-node-outlet.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/f-node-outlet.directive.ts","../../../projects/f-flow/src/f-connectors/f-node-output/f-node-output-base.ts","../../../projects/f-flow/src/f-connectors/f-node-output/is-node-output.ts","../../../projects/f-flow/src/f-connectors/f-node-output/f-node-output.directive.ts","../../../projects/f-flow/src/f-connectors/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.request.ts","../../../projects/f-flow/src/errors/create-error-class.ts","../../../projects/f-flow/src/errors/not-found-error.ts","../../../projects/f-flow/src/errors/conflict-error.ts","../../../projects/f-flow/src/errors/errors.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/f-create-connection.event.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.request.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/f-reassign-connection.event.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points.handler.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.ts","../../../projects/f-flow/src/f-connection/common/domain/f-bezier.path-builder.ts","../../../projects/f-flow/src/f-connection/common/domain/f-segment.path-builder.ts","../../../projects/f-flow/src/f-connection/common/domain/f-straight.path-builder.ts","../../../projects/f-flow/src/f-connection/common/f-connection-identifiers.ts","../../../projects/f-flow/src/f-connection/common/f-connection.injection-token.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text-path.directive.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/i-connection-text.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text.component.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text.component.html","../../../projects/f-flow/src/f-connection/common/f-drag-handle/f-connection-drag-handle.component.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/i-connection-gradient.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/f-connection-gradient.component.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/f-connection-gradient.component.html","../../../projects/f-flow/src/f-connection/common/f-path/i-connection-path.ts","../../../projects/f-flow/src/f-connection/common/f-path/get-path-marker-id.ts","../../../projects/f-flow/src/f-connection/common/f-path/f-connection-path.component.ts","../../../projects/f-flow/src/f-connection/common/f-selection/f-connection-selection.component.ts","../../../projects/f-flow/src/f-connection/f-connection-builder/f-connection-builders.ts","../../../projects/f-flow/src/f-connection/f-connection-builder/f-connection-factory.ts","../../../projects/f-flow/src/f-connection/common/f-connection-base.ts","../../../projects/f-flow/src/f-connection/common/e-f-connection-behavior.ts","../../../projects/f-flow/src/f-connection/common/e-f-connection-type.ts","../../../projects/f-flow/src/f-connection/f-connection-center/f-connection-center.directive.ts","../../../projects/f-flow/src/f-connection/f-connection-for-create/f-connection-for-create.component.ts","../../../projects/f-flow/src/f-connection/f-connection-for-create/f-connection-for-create.component.html","../../../projects/f-flow/src/f-connection/f-connection/f-connection.component.ts","../../../projects/f-flow/src/f-connection/f-connection/f-connection.component.html","../../../projects/f-flow/src/f-connection/f-marker/e-f-marker-type.ts","../../../projects/f-flow/src/f-connection/f-marker/f-marker-base.ts","../../../projects/f-flow/src/f-connection/f-marker/f-marker.directive.ts","../../../projects/f-flow/src/f-connection/f-snap-connection/f-snap-connection.component.ts","../../../projects/f-flow/src/f-connection/f-snap-connection/f-snap-connection.component.html","../../../projects/f-flow/src/f-connection/providers.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/providers.ts","../../../projects/f-flow/src/f-draggable/domain/get-node-padding/get-node-padding.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-node-padding/get-node-padding.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-parent-nodes/get-parent-nodes.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.ts","../../../projects/f-flow/src/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.ts","../../../projects/f-flow/src/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.ts","../../../projects/f-flow/src/f-draggable/domain/providers.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.request.ts","../../../projects/f-flow/src/f-draggable/node/connection-base-drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection-target.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.request.ts","../../../projects/f-flow/src/f-draggable/node/connection-source.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.ts","../../../projects/f-flow/src/f-draggable/node/node.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/node-resize-by-child.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.request.ts","../../../projects/f-flow/src/domain/is-connection-under-node/is-connection-under-node.request.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/node/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/resize-direction.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/providers.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.request.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.execution.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.validator.ts","../../../projects/f-flow/src/f-draggable/single-select/providers.ts","../../../projects/f-flow/src/f-draggable/f-draggable-base.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.request.ts","../../../projects/f-flow/src/f-external-item/domain/f-create-node.event.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.execution.ts","../../../projects/f-flow/src/f-external-item/domain/external-item.drag-handler.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.validator.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/providers.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.request.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.execution.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.validator.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/providers.ts","../../../projects/f-flow/src/f-external-item/domain/providers.ts","../../../projects/f-flow/src/f-external-item/f-external-item-base.ts","../../../projects/f-flow/src/f-external-item/is-external-item.ts","../../../projects/f-flow/src/f-external-item/f-external-item.service.ts","../../../projects/f-flow/src/f-external-item/f-external-item.directive.ts","../../../projects/f-flow/src/f-external-item/providers.ts","../../../projects/f-flow/src/f-draggable/i-f-drag-and-drop-plugin.ts","../../../projects/f-flow/src/f-draggable/f-draggable.directive.ts","../../../projects/f-flow/src/f-draggable/f-selection-change-event.ts","../../../projects/f-flow/src/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.ts","../../../projects/f-flow/src/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap.drag-handler.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/providers.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/providers.ts","../../../projects/f-flow/src/f-minimap/domain/check-rect-is-finite.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap-data.ts","../../../projects/f-flow/src/f-minimap/domain/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.ts","../../../projects/f-flow/src/domain/get-can-be-selected-items/get-can-be-selected-items-request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area.drag-handle.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/providers.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area-base.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area.component.ts","../../../projects/f-flow/src/f-selection-area/providers.ts","../../../projects/f-flow/src/f-draggable/providers.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/get-selection/get-selection.request.ts","../../../projects/f-flow/src/domain/f-selection/get-selection/get-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/select/select.request.ts","../../../projects/f-flow/src/domain/f-selection/select/select.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.request.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.execution.ts","../../../projects/f-flow/src/domain/f-selection/providers.ts","../../../projects/f-flow/src/domain/get-can-be-selected-items/get-can-be-selected-items.execution.ts","../../../projects/f-flow/src/domain/get-connection-line/get-connection-line.request.ts","../../../projects/f-flow/src/domain/get-connection-line/get-connection-line.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state.request.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/providers.ts","../../../projects/f-flow/src/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.request.ts","../../../projects/f-flow/src/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.execution.ts","../../../projects/f-flow/src/domain/get-nodes-rect/get-nodes-rect.request.ts","../../../projects/f-flow/src/domain/get-nodes-rect/get-nodes-rect.execution.ts","../../../projects/f-flow/src/domain/get-position-in-flow/get-position-in-flow-request.ts","../../../projects/f-flow/src/domain/get-position-in-flow/get-position-in-flow.execution.ts","../../../projects/f-flow/src/domain/is-connection-under-node/is-connection-under-node.execution.ts","../../../projects/f-flow/src/domain/redraw-connections/redraw-connections-request.ts","../../../projects/f-flow/src/domain/redraw-connections/redraw-connections.execution.ts","../../../projects/f-flow/src/domain/show-connections-after-calculations/show-connections-after-calculations-request.ts","../../../projects/f-flow/src/domain/show-connections-after-calculations/show-connections-after-calculations.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-item-layers.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-item-layers.execution.ts","../../../projects/f-flow/src/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.request.ts","../../../projects/f-flow/src/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.execution.ts","../../../projects/f-flow/src/domain/constants.ts","../../../projects/f-flow/src/domain/create-dom-element.ts","../../../projects/f-flow/src/domain/providers.ts","../../../projects/f-flow/src/f-backgroud/f-rect-pattern/f-rect-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-circle-pattern/f-circle-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-background-base.ts","../../../projects/f-flow/src/f-backgroud/f-background.component.ts","../../../projects/f-flow/src/f-backgroud/providers.ts","../../../projects/f-flow/src/f-canvas/domain/f-canvas-change.event.ts","../../../projects/f-flow/src/f-canvas/f-canvas-base.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.html","../../../projects/f-flow/src/f-canvas/providers.ts","../../../projects/f-flow/src/f-line-alignment/domain/line-element.ts","../../../projects/f-flow/src/f-line-alignment/domain/line-service.ts","../../../projects/f-flow/src/f-line-alignment/domain/nearest-coordinate.ts","../../../projects/f-flow/src/f-line-alignment/f-line-alignment-base.ts","../../../projects/f-flow/src/f-line-alignment/f-line-alignment.component.ts","../../../projects/f-flow/src/f-line-alignment/providers.ts","../../../projects/f-flow/src/f-minimap/f-minimap-flow.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap-canvas.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap-view.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap.component.ts","../../../projects/f-flow/src/f-minimap/f-minimap.component.html","../../../projects/f-flow/src/f-minimap/providers.ts","../../../projects/f-flow/src/f-flow/f-flow-base.ts","../../../projects/f-flow/src/f-flow/f-flow.component.ts","../../../projects/f-flow/src/f-flow/f-flow.component.html","../../../projects/f-flow/src/f-flow/providers.ts","../../../projects/f-flow/src/f-zoom/f-zoom-base.ts","../../../projects/f-flow/src/f-zoom/f-zoom.directive.ts","../../../projects/f-flow/src/f-zoom/providers.ts","../../../projects/f-flow/src/f-flow.module.ts","../../../projects/f-flow/src/foblex-flow.ts"],"sourcesContent":["import { ITransformModel } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_BACKGROUND_PATTERN = new InjectionToken<IFBackgroundPattern>('F_BACKGROUND_PATTERN');\n\nexport interface IFBackgroundPattern {\n\n hostElement: HTMLElement | SVGElement;\n\n setTransform(transform: ITransformModel): void;\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { FConnectionBase } from '../../f-connection';\n\nexport class CreateConnectionMarkersRequest {\n constructor(\n public fConnection: FConnectionBase,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { ITransformModel } from '@foblex/2d';\nimport { FConnectionBase, FMarkerBase } from '../f-connection';\nimport { FFlowBase } from '../f-flow';\nimport { FCanvasBase } from '../f-canvas';\nimport { FBackgroundBase } from '../f-backgroud';\nimport { FNodeBase } from '../f-node';\nimport { FConnectorBase } from '../f-connectors';\nimport { FDraggableBase } from '../f-draggable';\n\n@Injectable()\nexport class FComponentsStore {\n\n private readonly componentsDataChanges: Subject<void> = new Subject<void>();\n public get componentsData$(): Observable<void> {\n return this.componentsDataChanges.asObservable();\n }\n\n private readonly componentsCountChanges: Subject<void> = new Subject<void>();\n public get componentsCount$(): Observable<void> {\n return this.componentsCountChanges.asObservable();\n }\n\n public get flowHost(): HTMLElement {\n return this.fFlow?.hostElement!;\n }\n\n public get transform(): ITransformModel {\n return this.fCanvas?.transform!;\n }\n\n public fFlow: FFlowBase | undefined;\n\n public fCanvas: FCanvasBase | undefined;\n\n public fBackground: FBackgroundBase | undefined;\n\n public fNodes: FNodeBase[] = [];\n\n public fConnections: FConnectionBase[] = [];\n\n public fTempConnection: FConnectionBase | undefined;\n\n public fSnapConnection: FConnectionBase | undefined;\n\n public fMarkers: FMarkerBase[] = [];\n\n public fOutputs: FConnectorBase[] = [];\n\n public fInputs: FConnectorBase[] = [];\n\n public fOutlets: FConnectorBase[] = [];\n\n public fDraggable: FDraggableBase | undefined;\n\n public findNode(element: HTMLElement | SVGElement): FNodeBase | undefined {\n return this.fNodes.find(n => n.isContains(element));\n }\n\n public addComponent<T>(collection: T[], component: T): void {\n collection.push(component);\n this.componentsCountChanges.next();\n }\n\n public removeComponent<T>(collection: T[], component: T): void {\n const index = collection.indexOf(component);\n if (index > -1) {\n collection.splice(index, 1);\n this.componentsCountChanges.next();\n }\n }\n\n public componentDataChanged(): void {\n this.componentsDataChanges.next();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class FTransformStore {\n\n public readonly changes: Subject<void> = new Subject<void>();\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionMarkersRequest } from './create-connection-markers-request';\nimport { FConnectionBase, FMarkerBase } from '../../f-connection';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { normalizeDomElementId } from '@foblex/utils';\nimport { FComponentsStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionMarkersRequest)\nexport class CreateConnectionMarkersExecution implements IExecution<CreateConnectionMarkersRequest, void> {\n\n constructor(\n private fBrowser: BrowserService,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: CreateConnectionMarkersRequest): void {\n const element: SVGDefsElement = createSVGElement('defs', this.fBrowser);\n const fConnection = request.fConnection;\n\n this.getMarkers(fConnection).forEach((marker) => {\n\n const markerElement = this.createMarkerElement(marker, fConnection.fId);\n\n const clone = marker.hostElement.cloneNode(true) as HTMLElement;\n clone.setAttribute('height', `${ marker.height }`);\n clone.setAttribute('width', `${ marker.width }`);\n clone.removeAttribute('markerUnits');\n clone.style.display = 'unset';\n markerElement.append(clone);\n\n element.append(markerElement);\n });\n\n fConnection.fDefs.nativeElement.innerHTML = element.innerHTML;\n\n this.makeSafariCompatible(fConnection);\n }\n\n public getMarkers(fConnection: FConnectionBase): FMarkerBase[] {\n return this.fComponentsStore.fMarkers.filter((x) => fConnection.hostElement.contains(x.hostElement));\n }\n\n // Safari does not support markers on path elements if markers are defined after the path element\n private makeSafariCompatible(fConnection: FConnectionBase): void {\n fConnection.fPath.hostElement.replaceWith(fConnection.fPath.hostElement);\n }\n\n private createMarkerElement(marker: FMarkerBase, fConnectionId: string): SVGElement {\n const markerElement = createSVGElement('marker', this.fBrowser);\n\n markerElement.setAttribute('id', normalizeDomElementId(marker.type + '-' + fConnectionId));\n\n markerElement.setAttribute('markerHeight', `${ marker.height }`);\n markerElement.setAttribute('markerWidth', `${ marker.width }`);\n markerElement.setAttribute('orient', `${ marker.orient }`);\n markerElement.setAttribute('refX', `${ marker.refX }`);\n markerElement.setAttribute('refY', `${ marker.refY }`);\n markerElement.setAttribute('markerUnits', `${ marker.markerUnits }`);\n\n return markerElement;\n }\n}\n\nfunction createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","export class CreateRoundedRectFromElementRequest {\n constructor(\n public element: HTMLElement | SVGElement,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateRoundedRectFromElementRequest } from './create-rounded-rect-from-element-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { RoundedRect, RectExtensions } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(CreateRoundedRectFromElementRequest)\nexport class CreateRoundedRectFromElementExecution implements IExecution<CreateRoundedRectFromElementRequest, RoundedRect> {\n\n constructor(\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: CreateRoundedRectFromElementRequest): RoundedRect {\n return this.setRadiusFromElement(RoundedRect.fromRect(RectExtensions.fromElement(request.element)), request.element);\n }\n\n private setRadiusFromElement(rect: RoundedRect, element: HTMLElement | SVGElement): RoundedRect {\n const styles = this.getComputedStyle(element);\n rect.radius1 = this.toPixels(styles.borderTopLeftRadius, element, styles.fontSize);\n rect.radius2 = this.toPixels(styles.borderTopRightRadius, element, styles.fontSize);\n rect.radius3 = this.toPixels(styles.borderBottomRightRadius, element, styles.fontSize);\n rect.radius4 = this.toPixels(styles.borderBottomLeftRadius, element, styles.fontSize);\n return rect;\n }\n\n private getComputedStyle(element: HTMLElement | SVGElement): CSSStyleDeclaration {\n return this.fBrowser.window.getComputedStyle(element);\n }\n\n private toPixels(value: string, element: HTMLElement | SVGElement, fontSize: string): number {\n return this.fBrowser.toPixels(value, element.clientWidth, element.clientHeight, fontSize) || 0\n }\n}\n","export class EmitTransformChangesRequest {\n\n}\n","import { EmitTransformChangesRequest } from './emit-transform-changes.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FTransformStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(EmitTransformChangesRequest)\nexport class EmitTransformChangesExecution\n implements IExecution<EmitTransformChangesRequest, void> {\n\n constructor(\n private fTransformStore: FTransformStore,\n ) {\n }\n\n public handle(request: EmitTransformChangesRequest): void {\n this.fTransformStore.changes.next();\n }\n}\n","import { IFBackgroundPattern } from '../../../f-backgroud';\n\nexport class AddPatternToBackgroundRequest {\n constructor(\n public fPattern: IFBackgroundPattern | undefined\n ) {\n }\n}\n","import { TransformModelExtensions } from '@foblex/2d';\nimport { AddPatternToBackgroundRequest } from './add-pattern-to-background.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { createSVGElement } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { FBackgroundBase } from '../../../f-backgroud';\n\nlet uniqueId: number = 0;\n\n@Injectable()\n@FExecutionRegister(AddPatternToBackgroundRequest)\nexport class AddPatternToBackgroundExecution implements IExecution<AddPatternToBackgroundRequest, void> {\n\n private get fBackground(): FBackgroundBase {\n return this.fComponentsStore.fBackground!;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: AddPatternToBackgroundRequest): void {\n const children = request.fPattern?.hostElement.getElementsByTagName('pattern') || [];\n const pattern = children.length ? children[ 0 ] : undefined;\n if (pattern) {\n const defs = createSVGElement('defs', this.fBrowser);\n pattern.id = 'f-background-pattern-' + uniqueId++;\n request.fPattern?.hostElement.remove();\n defs.appendChild(pattern);\n this.fBackground.hostElement?.firstChild?.appendChild(defs);\n const rect = createSVGElement('rect', this.fBrowser);\n rect.setAttribute('fill', 'url(#' + pattern.id + ')');\n rect.setAttribute('width', '100%');\n rect.setAttribute('height', '100%');\n this.fBackground.hostElement.firstChild?.appendChild(rect);\n const transform = this.fComponentsStore.fCanvas?.transform || TransformModelExtensions.default();\n request.fPattern?.setTransform(transform);\n }\n }\n}\n","import { AddPatternToBackgroundExecution } from './add-pattern-to-background';\n\nexport const F_BACKGROUND_FEATURES = [\n\n AddPatternToBackgroundExecution\n];\n","export class CenterGroupOrNodeRequest {\n\n constructor(\n public id: string,\n public animated: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CenterGroupOrNodeRequest } from './center-group-or-node-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { F_CANVAS_ANIMATION_DURATION } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(CenterGroupOrNodeRequest)\nexport class CenterGroupOrNodeExecution implements IExecution<CenterGroupOrNodeRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: CenterGroupOrNodeRequest): void {\n const fNode = this.getNode(request.id);\n if (!fNode) {\n return;\n }\n\n this.toCenter(this.getNodeRect(fNode), this.getFlowRect(), fNode.position);\n\n request.animated ? this.fComponentsStore.fCanvas!.redrawWithAnimation() : this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);\n }\n\n public toCenter(fNodeRect: IRect, fFlowRect: IRect, position: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = PointExtensions.initialize(\n (fFlowRect.width - fNodeRect.width) / 2 - position.x * this.transform.scale,\n (fFlowRect.height - fNodeRect.height) / 2 - position.y * this.transform.scale\n );\n }\n\n private getNode(id: string): FNodeBase | undefined {\n return this.fComponentsStore.fNodes.find((x) => x.fId === id);\n }\n\n private getNodeRect(fNode: FNodeBase): IRect {\n return RectExtensions.fromElement(fNode.hostElement);\n }\n\n private getFlowRect(): IRect {\n return RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FitToFlowRequest {\n\n constructor(\n public toCenter: IPoint,\n public animated: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FitToFlowRequest } from './fit-to-flow-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { F_CANVAS_ANIMATION_DURATION, GetNodesRectRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(FitToFlowRequest)\nexport class FitToFlowExecution implements IExecution<FitToFlowRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: FitToFlowRequest): void {\n const fNodesRect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n\n this.fitToParent(\n fNodesRect,\n RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement),\n this.fComponentsStore.fNodes.map((x) => x.position),\n request.toCenter\n );\n request.animated ? this.fComponentsStore.fCanvas!.redrawWithAnimation() : this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);\n }\n\n public fitToParent(rect: IRect, parentRect: IRect, points: IPoint[], toCenter: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n const itemsContainerWidth = (rect.width / this.transform.scale) + toCenter.x;\n const itemsContainerHeight = (rect.height / this.transform.scale) + toCenter.y;\n if (\n (itemsContainerWidth > parentRect.width || itemsContainerHeight > parentRect.height) ||\n itemsContainerWidth < parentRect.width && itemsContainerHeight < parentRect.height\n ) {\n this.transform.scale = Math.min(parentRect.width / itemsContainerWidth, parentRect.height / itemsContainerHeight);\n }\n\n const newX = (parentRect.width - itemsContainerWidth * this.transform.scale) / 2 - this.transform.position.x * this.transform.scale;\n const newY = (parentRect.height - itemsContainerHeight * this.transform.scale) / 2 - this.transform.position.y * this.transform.scale;\n\n this.transform.position = PointExtensions.initialize(newX + (toCenter.x / 2) * this.transform.scale, newY + (toCenter.y / 2) * this.transform.scale)\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","import { IPoint, ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasPositionRequest {\n\n constructor(\n public transform: ITransformModel,\n public position: IPoint | undefined\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InputCanvasPositionRequest } from './input-canvas-position-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasPositionRequest)\nexport class InputCanvasPositionExecution implements IExecution<InputCanvasPositionRequest, void> {\n\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: InputCanvasPositionRequest): void {\n if (!request.position) {\n return;\n }\n const position = PointExtensions.sum(request.transform.position, request.transform.scaledPosition);\n if (!PointExtensions.isEqual(position, request.position)) {\n request.transform.position = request.position;\n request.transform.scaledPosition = PointExtensions.initialize();\n this.fComponentsStore.fCanvas?.redraw();\n }\n }\n}\n","import { ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasScaleRequest {\n\n constructor(\n public transform: ITransformModel,\n public scale: number | undefined\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InputCanvasScaleRequest } from './input-canvas-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasScaleRequest)\nexport class InputCanvasScaleExecution implements IExecution<InputCanvasScaleRequest, void> {\n\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: InputCanvasScaleRequest): void {\n if (!request.scale) {\n return;\n }\n request.transform.scale = request.scale;\n this.fComponentsStore.fCanvas?.redraw();\n }\n}\n","export class ResetScaleRequest {\n}\n","import { Injectable } from '@angular/core';\nimport { ResetScaleRequest } from './reset-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n\n@Injectable()\n@FExecutionRegister(ResetScaleRequest)\nexport class ResetScaleExecution implements IExecution<ResetScaleRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: ResetScaleRequest): void {\n this.transform.scale = 1;\n this.transform.scaledPosition = PointExtensions.initialize();\n }\n}\n","export class ResetScaleAndCenterRequest {\n\n constructor(\n public animated: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ResetScaleAndCenterRequest } from './reset-scale-and-center-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { F_CANVAS_ANIMATION_DURATION, GetNodesRectRequest } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\n\n\n@Injectable()\n@FExecutionRegister(ResetScaleAndCenterRequest)\nexport class ResetScaleAndCenterExecution implements IExecution<ResetScaleAndCenterRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: ResetScaleAndCenterRequest): void {\n const fNodesRect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n this.oneToOneCentering(\n fNodesRect,\n RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement),\n this.fComponentsStore.fNodes.map((x) => x.position)\n );\n\n request.animated ? this.fComponentsStore.fCanvas!.redrawWithAnimation() : this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);\n }\n\n public oneToOneCentering(rect: IRect, parentRect: IRect, points: IPoint[]): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n\n const newX = (parentRect.width - rect.width / this.transform.scale) / 2 - this.transform.position.x;\n const newY = (parentRect.height - rect.height / this.transform.scale) / 2 - this.transform.position.y;\n\n this.transform.scale = 1;\n this.transform.position = PointExtensions.initialize(newX, newY);\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class UpdateScaleRequest {\n\n constructor(\n public scale: number,\n public toPosition: IPoint\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UpdateScaleRequest } from './update-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n\n@Injectable()\n@FExecutionRegister(UpdateScaleRequest)\nexport class UpdateScaleExecution implements IExecution<UpdateScaleRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: UpdateScaleRequest): void {\n if (request.scale !== this.transform.scale) {\n\n const summaryPosition = PointExtensions.sum(this.transform.scaledPosition, this.transform.position);\n\n const newX = request.toPosition.x - (request.toPosition.x - summaryPosition.x) * request.scale / this.transform.scale;\n const newY = request.toPosition.y - (request.toPosition.y - summaryPosition.y) * request.scale / this.transform.scale;\n\n this.transform.scale = request.scale;\n this.transform.scaledPosition = PointExtensions.sub(PointExtensions.initialize(newX, newY), this.transform.position);\n }\n }\n}\n","import { CenterGroupOrNodeExecution } from './center-group-or-node';\nimport { FitToFlowExecution } from './fit-to-flow';\nimport { ResetScaleAndCenterExecution } from './reset-scale-and-center';\nimport { ResetScaleExecution } from './reset-scale';\nimport { UpdateScaleExecution } from './update-scale';\nimport { InputCanvasPositionExecution } from './input-canvas-position';\nimport { InputCanvasScaleExecution } from './input-canvas-scale';\n\nexport const F_CANVAS_FEATURES = [\n\n CenterGroupOrNodeExecution,\n\n FitToFlowExecution,\n\n InputCanvasPositionExecution,\n\n InputCanvasScaleExecution,\n\n ResetScaleExecution,\n\n ResetScaleAndCenterExecution,\n\n UpdateScaleExecution\n];\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class AddConnectionToStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddConnectionToStoreRequest } from './add-connection-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddConnectionToStoreRequest)\nexport class AddConnectionToStoreExecution implements IExecution<AddConnectionToStoreRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: AddConnectionToStoreRequest): void {\n this.fComponentsStore.fConnections.push(request.fConnection);\n this.fComponentsStore.componentDataChanged();\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { IConnectorWithRect } from '../get-connector-with-rect';\n\nexport class FindClosestInputUsingSnapThresholdRequest {\n\n constructor(\n public position: IPoint,\n public canBeConnectedInputs: IConnectorWithRect[],\n public snapThreshold: number\n ) {\n }\n}\n","import { FindClosestInputUsingSnapThresholdRequest } from './find-closest-input-using-snap-threshold.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { IConnectorWithRect } from '../get-connector-with-rect';\n\n@Injectable()\n@FExecutionRegister(FindClosestInputUsingSnapThresholdRequest)\nexport class FindClosestInputUsingSnapThresholdExecution\n implements IExecution<FindClosestInputUsingSnapThresholdRequest, IConnectorWithRect | undefined> {\n\n\n public handle(payload: FindClosestInputUsingSnapThresholdRequest): IConnectorWithRect | undefined {\n let result: IConnectorWithRect | undefined;\n let minDistance = Infinity;\n\n for (const element of payload.canBeConnectedInputs) {\n const distance = this.distanceToRectangle(payload.position, element);\n\n if (distance < minDistance) {\n minDistance = distance;\n result = element;\n }\n }\n\n return minDistance < payload.snapThreshold ? result : undefined;\n }\n\n private distanceToRectangle(point: IPoint, inputWithRect: IConnectorWithRect): number {\n const closestX = this.clamp(point.x, inputWithRect.fRect.x, inputWithRect.fRect.x + inputWithRect.fRect.width);\n const closestY = this.clamp(point.y, inputWithRect.fRect.y, inputWithRect.fRect.y + inputWithRect.fRect.height);\n\n const dx = point.x - closestX;\n const dy = point.y - closestY;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n private clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n }\n}\n","export class GetAllCanBeConnectedInputPositionsRequest {\n\n constructor(\n public fOutputId: string,\n ) {\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class GetConnectorWithRectRequest {\n\n constructor(\n public connector: FConnectorBase\n ) {\n }\n}\n","export class GetElementRectInFlowRequest {\n constructor(\n public element: HTMLElement | SVGElement\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetElementRectInFlowRequest } from './get-element-rect-in-flow-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport { IRoundedRect, RoundedRect, IPoint, ISize, Point, SizeExtensions, ITransformModel } from '@foblex/2d';\nimport { CreateRoundedRectFromElementRequest } from '../create-rounded-rect-from-element';\n\n@Injectable()\n@FExecutionRegister(GetElementRectInFlowRequest)\nexport class GetElementRectInFlowExecution implements IExecution<GetElementRectInFlowRequest, IRoundedRect> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetElementRectInFlowRequest): IRoundedRect {\n const systemRect = this.fMediator.send<IRoundedRect>(new CreateRoundedRectFromElementRequest(request.element));\n const position = this.transformElementPositionInFlow(systemRect);\n const size = this.transformElementSizeInFlow(systemRect);\n\n return new RoundedRect(\n position.x, position.y, size.width, size.height,\n systemRect.radius1, systemRect.radius2, systemRect.radius3, systemRect.radius4\n );\n }\n\n private transformElementPositionInFlow(rect: IRoundedRect): IPoint {\n return Point.fromPoint(rect).elementTransform(this.flowHost).sub(this.transform.scaledPosition).sub(this.transform.position).div(this.transform.scale);\n }\n\n private transformElementSizeInFlow(rect: IRoundedRect): ISize {\n return SizeExtensions.initialize(rect.width / this.transform.scale, rect.height / this.transform.scale);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetConnectorWithRectRequest } from './get-connector-with-rect-request';\nimport { IRoundedRect } from '@foblex/2d';\nimport { IConnectorWithRect } from './i-connector-with-rect';\nimport { GetElementRectInFlowRequest } from '../../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(GetConnectorWithRectRequest)\nexport class GetConnectorWithRectExecution implements IExecution<GetConnectorWithRectRequest, IConnectorWithRect> {\n\n constructor(\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: GetConnectorWithRectRequest): IConnectorWithRect {\n return {\n fConnector: request.connector,\n fRect: this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(request.connector.hostElement))\n }\n }\n}\n","import { GetAllCanBeConnectedInputPositionsRequest } from './get-all-can-be-connected-input-positions.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetConnectorWithRectRequest, IConnectorWithRect } from '../get-connector-with-rect';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetAllCanBeConnectedInputPositionsRequest)\nexport class GetAllCanBeConnectedInputPositionsExecution\n implements IExecution<GetAllCanBeConnectedInputPositionsRequest, IConnectorWithRect[]> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fInputs(): FConnectorBase[] {\n return this.fComponentsStore.fInputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(payload: GetAllCanBeConnectedInputPositionsRequest): IConnectorWithRect[] {\n return this.getCanBeConnectedInputs(this.getOutput(payload.fOutputId)!).map((x) => {\n return this.fMediator.send(new GetConnectorWithRectRequest(x));\n });\n }\n\n private getOutput(fId: string): FConnectorBase | undefined {\n return this.findOutputById(fId) || this.findOutletById(fId);\n }\n\n private findOutputById(fId: string): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === fId);\n }\n\n private findOutletById(fId: string): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === fId);\n }\n\n private getCanBeConnectedInputs(output: FConnectorBase): FConnectorBase[] {\n return output.isSelfConnectable ?\n this.fInputs.filter((x) => x.canBeConnected) :\n this.filterSelfConnectable(this.fInputs.filter((x) => x.canBeConnected), output);\n }\n\n private filterSelfConnectable(inputs: FConnectorBase[], output: FConnectorBase): FConnectorBase[] {\n return inputs.filter((x) => this.getNodeOfConnector(output)?.hostElement !== this.getNodeOfConnector(x)?.hostElement);\n }\n\n private getNodeOfConnector(connector: FConnectorBase): FNodeBase | undefined {\n return this.fNodes.find((x) => x.isContains(connector.hostElement));\n }\n}\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class RemoveConnectionFromStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveConnectionFromStoreRequest } from './remove-connection-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveConnectionFromStoreRequest)\nexport class RemoveConnectionFromStoreExecution implements IExecution<RemoveConnectionFromStoreRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: RemoveConnectionFromStoreRequest): void {\n const index = this.fComponentsStore.fConnections.indexOf(request.fConnection);\n if (index === -1) {\n throw new Error(`Connection not found in store`);\n }\n this.fComponentsStore.fConnections.splice(index, 1);\n this.fComponentsStore.componentDataChanged();\n }\n}\n","import { FindClosestInputUsingSnapThresholdExecution } from './find-closest-input-using-snap-threshold';\nimport { GetAllCanBeConnectedInputPositionsExecution } from './get-all-can-be-connected-input-positions';\nimport { GetConnectorWithRectExecution } from './get-connector-with-rect';\nimport { AddConnectionToStoreExecution } from './add-connection-to-store';\nimport { RemoveConnectionFromStoreExecution } from './remove-connection-from-store';\n\nexport const F_CONNECTION_FEATURES = [\n\n AddConnectionToStoreExecution,\n\n FindClosestInputUsingSnapThresholdExecution,\n\n GetAllCanBeConnectedInputPositionsExecution,\n\n GetConnectorWithRectExecution,\n\n RemoveConnectionFromStoreExecution\n];\n","export class ClearSelectionRequest {\n\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CanvasMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Point } from '@foblex/2d';\nimport { IDraggableItem } from './i-draggable-item';\nimport { FLineAlignmentBase } from '../f-line-alignment';\nimport { ICanChangeSelection } from '../mixins';\n\n@Injectable()\nexport class FDraggableDataContext {\n\n public selectedItems: ICanChangeSelection[] = [];\n\n public isSelectedChanged: boolean = false;\n\n public onPointerDownScale: number = 1;\n\n public onPointerDownPosition: Point = new Point(0, 0);\n\n public draggableItems: IDraggableItem[] = [];\n\n public fLineAlignment: FLineAlignmentBase | undefined;\n\n public reset(): void {\n this.draggableItems = [];\n this.onPointerDownScale = 1;\n this.onPointerDownPosition = new Point(0, 0);\n }\n\n public markSelectionAsChanged(): void {\n this.isSelectedChanged = true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMoveFinalizeRequest } from './canvas-move-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\n\n@Injectable()\n@FExecutionRegister(CanvasMoveFinalizeRequest)\nexport class CanvasMoveFinalizeExecution implements IExecution<CanvasMoveFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: CanvasMoveFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => x.complete?.());\n }\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class CanvasDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public initialize(): void {\n this.onPointerDownPosition = this.fComponentsStore.fCanvas!.transform.position;\n }\n\n public move(difference: IPoint): void {\n this.fComponentsStore.fCanvas!.setPosition(Point.fromPoint(this.onPointerDownPosition).add(difference));\n this.fComponentsStore.fCanvas!.redraw();\n }\n\n public complete(): void {\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMoveFinalizeRequest } from './canvas-move-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CanvasDragHandler } from '../canvas.drag-handler';\n\n@Injectable()\n@FValidatorRegister(CanvasMoveFinalizeRequest)\nexport class CanvasMoveFinalizeValidator implements IValidator<CanvasMoveFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CanvasMoveFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CanvasDragHandler\n );\n }\n}\n","import { CanvasMoveFinalizeExecution } from './canvas-move-finalize.execution';\nimport { CanvasMoveFinalizeValidator } from './canvas-move-finalize.validator';\n\nexport const CANVAS_MOVE_FINALIZE_PROVIDERS = [\n\n CanvasMoveFinalizeExecution,\n\n CanvasMoveFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CanvasMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMovePreparationRequest } from './canvas-move-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CanvasDragHandler } from '../canvas.drag-handler';\n\n@Injectable()\n@FExecutionRegister(CanvasMovePreparationRequest)\nexport class CanvasMovePreparationExecution implements IExecution<CanvasMovePreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: CanvasMovePreparationRequest): void {\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost);\n this.fDraggableDataContext.draggableItems = [\n new CanvasDragHandler(this.fComponentsStore)\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMovePreparationRequest } from './canvas-move-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FValidatorRegister(CanvasMovePreparationRequest)\nexport class CanvasMovePreparationValidator implements IValidator<CanvasMovePreparationRequest> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CanvasMovePreparationRequest): boolean {\n return !this.fDraggableDataContext.draggableItems.length &&\n (this.isBackgroundElement(request.event.targetElement) || this.isDragOnHost(request.event.targetElement));\n }\n\n private isBackgroundElement(targetElement: HTMLElement): boolean | undefined {\n return this.fComponentsStore.fBackground?.isBackgroundElement(targetElement);\n }\n\n private isDragOnHost(targetElement: HTMLElement): boolean {\n return this.flowHost.contains(targetElement) && !this.getNode(targetElement);\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n let result = this.fComponentsStore.findNode(targetElement);\n if (result && result.fDraggingDisabled) {\n result = undefined;\n }\n return result;\n }\n}\n","import { CanvasMovePreparationExecution } from './canvas-move-preparation.execution';\nimport { CanvasMovePreparationValidator } from './canvas-move-preparation.validator';\n\nexport const CANVAS_MOVE_PREPARATION_PROVIDERS = [\n\n CanvasMovePreparationExecution,\n\n CanvasMovePreparationValidator,\n];\n","import { CANVAS_MOVE_PREPARATION_PROVIDERS } from './canvas-move-preparation';\nimport { CANVAS_MOVE_FINALIZE_PROVIDERS } from './canvas-move-finalize';\n\nexport const CANVAS_PROVIDERS = [\n\n ...CANVAS_MOVE_FINALIZE_PROVIDERS,\n\n ...CANVAS_MOVE_PREPARATION_PROVIDERS,\n];\n","export enum EFConnectableSide {\n\n LEFT = 'left',\n\n TOP = 'top',\n\n RIGHT = 'right',\n\n BOTTOM = 'bottom',\n\n AUTO = 'auto',\n}\n","import { RectExtensions } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { CalculateConnectorConnectableSideRequest } from './calculate-connector-connectable-side-request';\nimport { EFConnectableSide } from '../../e-f-connectable-side';\n\nexport class CalculateConnectorConnectableSideHandler\n implements IHandler<CalculateConnectorConnectableSideRequest, EFConnectableSide> {\n\n public handle(request: CalculateConnectorConnectableSideRequest): EFConnectableSide {\n let result: EFConnectableSide;\n\n if (request.fConnector._fConnectableSide === EFConnectableSide.AUTO) {\n result = this.getSideByDelta(request.fConnector.hostElement, request.fNodeHost);\n } else {\n result = request.fConnector._fConnectableSide;\n }\n return result;\n }\n\n private getSideByDelta(fConnectorHost: HTMLElement | SVGElement, fNodeHost: HTMLElement | SVGElement): EFConnectableSide {\n let result: EFConnectableSide;\n\n const childRect = RectExtensions.fromElement(fConnectorHost);\n const parentRect = fNodeHost.getBoundingClientRect();\n\n const deltaLeft = childRect.gravityCenter.x - parentRect.left;\n const deltaRight = parentRect.right - childRect.gravityCenter.x;\n const deltaTop = childRect.gravityCenter.y - parentRect.top;\n const deltaBottom = parentRect.bottom - childRect.gravityCenter.y;\n\n const minDelta = Math.min(deltaLeft, deltaRight, deltaTop, deltaBottom);\n\n if (minDelta === deltaLeft) {\n result = EFConnectableSide.LEFT;\n } else if (minDelta === deltaRight) {\n result = EFConnectableSide.RIGHT;\n } else if (minDelta === deltaTop) {\n result = EFConnectableSide.TOP;\n } else {\n result = EFConnectableSide.BOTTOM;\n }\n\n return result;\n }\n}\n","import { FConnectorBase } from '../../f-connector-base';\n\nexport class CalculateConnectorConnectableSideRequest {\n\n constructor(\n public fConnector: FConnectorBase,\n public fNodeHost: HTMLElement | SVGElement\n ) {\n }\n}\n","import { Subject } from 'rxjs';\nimport { EFConnectableSide } from './e-f-connectable-side';\nimport { IHasStateChanges } from '../i-has-state-changes';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport abstract class FConnectorBase implements IHasStateChanges, IHasHostElement {\n\n public abstract id: string;\n\n public abstract disabled: boolean;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract canBeConnected: boolean;\n\n public abstract isConnected: boolean;\n\n public isSelfConnectable: boolean = true;\n\n public fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_INPUT = new InjectionToken<FNodeInputBase>('F_NODE_INPUT');\n\n@Directive()\nexport abstract class FNodeInputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public isConnected: boolean = false;\n\n public get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export function isGroup(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fGroup]');\n}\n\n","export function isNode(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNode]');\n}\n\n","import {\n Directive, ElementRef, InjectionToken\n} from \"@angular/core\";\nimport { IHasHostElement } from '../../i-has-host-element';\n\nexport const F_DRAG_HANDLE: InjectionToken<FDragHandleDirective> = new InjectionToken<FDragHandleDirective>('F_DRAG_HANDLE');\n\n@Directive({\n selector: \"[fDragHandle]\",\n host: {\n class: \"f-drag-handle f-component\"\n },\n providers: [ { provide: F_DRAG_HANDLE, useExisting: FDragHandleDirective } ],\n})\nexport class FDragHandleDirective implements IHasHostElement {\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","export enum EFResizeHandleType {\n\n LEFT_TOP = 'left-top',\n\n RIGHT_TOP = 'right-top',\n\n LEFT_BOTTOM = 'left-bottom',\n\n RIGHT_BOTTOM = 'right-bottom',\n}\n","import {\n Directive, ElementRef, HostBinding, InjectionToken, Input\n} from \"@angular/core\";\nimport { EFResizeHandleType } from './e-f-resize-handle-type';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { castToEnum } from '@foblex/utils';\n\nexport const F_RESIZE_HANDLE: InjectionToken<FResizeHandleDirective> = new InjectionToken<FResizeHandleDirective>('F_RESIZE_HANDLE');\n\n@Directive({\n selector: \"[fResizeHandle]\",\n host: {\n class: `f-resize-handle f-component`,\n '[attr.data-f-resize-handle-type]': 'type',\n },\n providers: [ { provide: F_RESIZE_HANDLE, useExisting: FResizeHandleDirective } ],\n})\nexport class FResizeHandleDirective implements IHasHostElement {\n\n public _type: EFResizeHandleType = EFResizeHandleType.LEFT_TOP;\n @Input('fResizeHandleType')\n public set type(type: EFResizeHandleType) {\n this._type = castToEnum(type, 'fResizeHandleType', EFResizeHandleType);\n }\n public get type(): EFResizeHandleType {\n return this._type;\n }\n\n @HostBinding('class')\n public get typeClass(): string {\n return `f-resize-handle-${ EFResizeHandleType[ this.type.toUpperCase() as keyof typeof EFResizeHandleType ] }`;\n }\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","import {\n Directive, ElementRef, InjectionToken, Input\n} from \"@angular/core\";\nimport { IHasHostElement } from '../../i-has-host-element';\n\n// export const F_ROTATE_HANDLE: InjectionToken<FRotateHandleDirective> = new InjectionToken<FRotateHandleDirective>('F_ROTATE_HANDLE');\n//\n// @Directive({\n// selector: \"[fRotateHandle]\",\n// host: {\n// class: `f-rotate-handle f-component`,\n// '[class.f-rotate-handle-disabled]': 'disabled',\n// },\n// providers: [ { provide: F_ROTATE_HANDLE, useExisting: FRotateHandleDirective } ],\n// })\nexport class FRotateHandleDirective implements IHasHostElement {\n\n private isDisabled: boolean = false;\n // @Input('fRotateHandleDisabled')\n // public set disabled(isDisabled: boolean | undefined | string) {\n // this.isDisabled = BooleanExtensions.castToBoolean(isDisabled);\n // }\n public get disabled(): boolean {\n return this.isDisabled;\n }\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { ICanChangeSelection } from './i-can-change-selection';\n\nexport const F_SELECTED_CLASS = 'f-selected';\n\ntype CanChangeSelectionConstructor = Constructor<ICanChangeSelection> & AbstractConstructor<ICanChangeSelection>;\n\nexport function mixinChangeSelection<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeSelectionConstructor & T;\nexport function mixinChangeSelection<T extends Constructor<IHasHostElement>>(base: T): CanChangeSelectionConstructor & T {\n return class extends base {\n\n public fId: string = '';\n\n public fSelectionDisabled: boolean = false;\n\n public deselect(): void {\n this.deselectChild?.();\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.selectChild?.();\n if (!this.isSelected()) {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n\n public selectChild(): void {\n }\n\n public deselectChild(): void {\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { ICanChangeVisibility } from './i-can-change-visibility';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { AbstractConstructor, Constructor } from '../constructor';\n\ntype CanChangeVisibilityConstructor = Constructor<ICanChangeVisibility> & AbstractConstructor<ICanChangeVisibility>;\n\nexport function mixinChangeVisibility<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T;\nexport function mixinChangeVisibility<T extends Constructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T {\n return class extends base {\n\n public show(): void {\n this.hostElement.style.display = \"unset\";\n }\n\n public hide(): void {\n this.hostElement.style.display = \"none\";\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport { IHasStateChanges } from '../i-has-state-changes';\nimport { FConnectorBase } from '../f-connectors';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { ICanChangeSelection, mixinChangeSelection } from '../mixins';\n\nexport const F_NODE = new InjectionToken<FNodeBase>('F_NODE');\n\nconst MIXIN_BASE = mixinChangeSelection(\n class {\n constructor(\n public hostElement: HTMLElement\n ) {\n }\n });\n\nexport abstract class FNodeBase extends MIXIN_BASE implements IHasStateChanges, ICanChangeSelection, IHasHostElement {\n\n public abstract override fId: string;\n\n public abstract fParentId: string | null | undefined;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n\n public abstract positionChange: EventEmitter<IPoint>;\n\n public abstract position: IPoint;\n\n protected _position: IPoint = PointExtensions.initialize();\n\n\n public abstract sizeChange: EventEmitter<IRect>;\n\n public abstract size: ISize;\n\n protected _size: ISize | undefined;\n\n\n public abstract fDraggingDisabled: boolean;\n\n public abstract override fSelectionDisabled: boolean;\n\n public abstract fConnectOnNode: boolean;\n\n public fCanBeResizedByChild: boolean = true;\n\n public abstract fIncludePadding: boolean;\n\n public abstract refresh(): void;\n\n public abstract connectors: FConnectorBase[];\n\n public abstract addConnector(connector: FConnectorBase): void;\n\n public abstract removeConnector(connector: FConnectorBase): void;\n\n protected abstract setStyle(name: string, value: string): void;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public redraw(): void {\n if (this.size) {\n this.setStyle('width', '' + this.size.width + 'px');\n this.setStyle('height', '' + this.size.height + 'px');\n }\n\n this.setStyle('transform', `translate(${ this.position.x }px,${ this.position.y }px)`);\n }\n\n public updatePosition(position: IPoint): void {\n this._position = position;\n }\n\n public updateSize(value: ISize): void {\n this._size = value;\n }\n}\n","import { Observable } from 'rxjs';\n\nexport class FResizeObserver extends Observable<ResizeObserverEntry[]> {\n\n constructor(element: HTMLElement) {\n super(subscriber => {\n const observer = new ResizeObserver(entries => {\n subscriber.next(entries);\n });\n\n observer.observe(element);\n\n return function unsubscribe() {\n observer.unobserve(element);\n observer.disconnect();\n }\n });\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { merge, Subscription } from 'rxjs';\nimport { startWith, debounceTime } from 'rxjs/operators';\nimport { FResizeObserver } from './f-resize-observer';\nimport { FComponentsStore } from '../f-storage';\nimport {\n CalculateConnectorConnectableSideHandler,\n CalculateConnectorConnectableSideRequest,\n FConnectorBase\n} from '../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { EmitTransformChangesRequest } from '../domain';\nimport { BrowserService } from '@foblex/platform';\nimport { IHasHostElement } from '../i-has-host-element';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fGroup]\",\n exportAs: \"fComponent\",\n host: {\n '[attr.data-f-group-id]': 'fId',\n class: \"f-group f-component\",\n '[class.f-group-dragging-disabled]': 'fDraggingDisabled',\n '[class.f-group-selection-disabled]': 'fSelectionDisabled',\n },\n providers: [\n { provide: F_NODE, useExisting: FGroupDirective }\n ],\n})\nexport class FGroupDirective extends FNodeBase\n implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input('fGroupId')\n public override fId: string = `f-group-${ uniqueId++ }`;\n\n @Input('fGroupParentId')\n public override fParentId: string | null | undefined = null;\n\n @Input('fGroupPosition')\n public override set position(value: IPoint) {\n this._position = PointExtensions.castToPoint(value);\n this.refresh();\n }\n public override get position(): IPoint {\n return this._position;\n }\n @Output('fGroupPositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n @Input('fGroupSize')\n public override set size(value: ISize) {\n this._size = value;\n this.refresh();\n }\n public override get size(): ISize {\n return this._size!;\n }\n @Output('fGroupSizeChange')\n public override sizeChange: EventEmitter<IRect> = new EventEmitter<IRect>();\n\n @Input('fGroupDraggingDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input('fGroupSelectionDisabled')\n public override fSelectionDisabled: boolean = false;\n\n @Input()\n public override fIncludePadding: boolean = true;\n\n @Input()\n public override fConnectOnNode: boolean = true;\n\n public override connectors: FConnectorBase[] = [];\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n super(elementReference.nativeElement);\n }\n\n public ngOnInit(): void {\n this.setStyle('position', 'absolute');\n this.setStyle('transform-origin', 'center');\n this.setStyle('user-select', 'none');\n this.setStyle('pointer-events', 'all');\n this.setStyle('left', '0');\n this.setStyle('top', '0');\n super.redraw();\n this.fComponentsStore.addComponent(this.fComponentsStore.fNodes, this);\n }\n\n protected override setStyle(styleName: string, value: string) {\n this.renderer.setStyle(this.hostElement, styleName, value);\n }\n\n public override redraw(): void {\n super.redraw();\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n return merge(new FResizeObserver(this.hostElement as HTMLElement), this.stateChanges).pipe(\n debounceTime(10), startWith(null)\n ).subscribe(() => {\n this.connectors.forEach((fConnector: FConnectorBase) => {\n fConnector.fConnectableSide = new CalculateConnectorConnectableSideHandler().handle(\n new CalculateConnectorConnectableSideRequest(fConnector, this.hostElement)\n );\n });\n this.fComponentsStore.componentDataChanged();\n });\n }\n\n public override addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.stateChanges.next();\n }\n\n public override removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.stateChanges.next();\n }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fNodes, this);\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\nimport { merge, Subscription } from 'rxjs';\nimport { startWith, debounceTime } from 'rxjs/operators';\nimport { FResizeObserver } from './f-resize-observer';\nimport { FComponentsStore } from '../f-storage';\nimport {\n CalculateConnectorConnectableSideHandler,\n CalculateConnectorConnectableSideRequest,\n FConnectorBase\n} from '../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { EmitTransformChangesRequest } from '../domain';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { IHasHostElement } from '../i-has-host-element';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNode]\",\n exportAs: \"fComponent\",\n host: {\n '[attr.data-f-node-id]': 'fId',\n class: \"f-node f-component\",\n '[class.f-node-dragging-disabled]': 'fDraggingDisabled',\n '[class.f-node-selection-disabled]': 'fSelectionDisabled',\n },\n providers: [\n { provide: F_NODE, useExisting: FNodeDirective }\n ],\n})\nexport class FNodeDirective extends FNodeBase implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input('fNodeId')\n public override fId: string = `f-node-${ uniqueId++ }`;\n\n @Input('fNodeParentId')\n public override fParentId: string | null | undefined = null;\n\n @Input('fNodePosition')\n public override set position(value: IPoint) {\n this._position = PointExtensions.castToPoint(value);\n this.refresh();\n }\n\n public override get position(): IPoint {\n return this._position;\n }\n\n @Output('fNodePositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n @Input('fNodeSize')\n public override set size(value: ISize) {\n this._size = value;\n this.refresh();\n }\n\n public override get size(): ISize {\n return this._size!;\n }\n\n @Output('fNodeSizeChange')\n public override sizeChange: EventEmitter<IRect> = new EventEmitter<IRect>();\n\n @Input('fNodeDraggingDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input('fNodeSelectionDisabled')\n public override fSelectionDisabled: boolean = false;\n\n @Input()\n public override fIncludePadding: boolean = true;\n\n //TODO: Add ability to connect to first connectable input if node is under pointer\n @Input()\n public override fConnectOnNode: boolean = true;\n\n public override connectors: FConnectorBase[] = [];\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n super(elementReference.nativeElement);\n }\n\n public ngOnInit(): void {\n this.setStyle('position', 'absolute');\n this.setStyle('transform-origin', 'center');\n this.setStyle('user-select', 'none');\n this.setStyle('pointer-events', 'all');\n this.setStyle('left', '0');\n this.setStyle('top', '0');\n super.redraw();\n this.fComponentsStore.addComponent(this.fComponentsStore.fNodes, this);\n }\n\n protected override setStyle(styleName: string, value: string) {\n this.renderer.setStyle(this.hostElement, styleName, value);\n }\n\n public override redraw(): void {\n super.redraw();\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n return merge(new FResizeObserver(this.hostElement as HTMLElement), this.stateChanges).pipe(\n debounceTime(10), startWith(null)\n ).subscribe(() => {\n this.connectors.forEach((fConnector: FConnectorBase) => {\n fConnector.fConnectableSide = new CalculateConnectorConnectableSideHandler().handle(\n new CalculateConnectorConnectableSideRequest(fConnector, this.hostElement)\n );\n });\n this.fComponentsStore.componentDataChanged();\n });\n }\n\n public override addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.stateChanges.next();\n }\n\n public override removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.stateChanges.next();\n }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fNodes, this);\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","import { FNodeDirective } from './f-node.directive';\nimport { FDragHandleDirective } from './f-drag-handle';\nimport { FResizeHandleDirective } from './f-resize-handle';\nimport { FGroupDirective } from './f-group.directive';\n\nexport const F_NODE_PROVIDERS = [\n\n FGroupDirective,\n\n FNodeDirective,\n\n FDragHandleDirective,\n\n FResizeHandleDirective,\n];\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { F_NODE_INPUT, FNodeInputBase } from './f-node-input-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { FNodeBase, F_NODE } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\nimport { castToBoolean, castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeInput]\",\n exportAs: 'fNodeInput',\n host: {\n '[attr.data-f-input-id]': 'id',\n class: \"f-component f-node-input\",\n '[class.f-node-input-multiple]': 'multiple',\n '[class.f-node-input-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_INPUT, useExisting: FNodeInputDirective } ],\n})\nexport class FNodeInputDirective extends FNodeInputBase implements OnInit, OnDestroy {\n\n @Input('fInputId')\n public override id: any = `f-node-input-${ uniqueId++ }`;\n\n @Input('fInputMultiple')\n public override multiple: boolean = true;\n\n @Input('fInputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n @Input('fInputConnectableSide')\n public set _fSide(value: EFConnectableSide | string) {\n this._fConnectableSide = castToEnum(value, 'fInputConnectableSide', EFConnectableSide);\n this.fNode.refresh();\n }\n\n public get _fSide(): EFConnectableSide {\n return this._fConnectableSide;\n }\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override isConnected: boolean = false;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n this.fComponentsStore.addComponent(this.fComponentsStore.fInputs, this);\n this.fNode.addConnector(this);\n }\n\n public override setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n this.hostElement.classList.toggle('f-node-input-connected', isConnected);\n this.hostElement.classList.toggle('f-node-input-not-connectable', !this.canBeConnected);\n }\n\n public ngOnDestroy(): void {\n this.fNode.removeConnector(this);\n this.fComponentsStore.removeComponent(this.fComponentsStore.fInputs, this);\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_OUTLET = new InjectionToken<FNodeOutletBase>('F_NODE_OUTLET');\n\n@Directive()\nexport abstract class FNodeOutletBase extends FConnectorBase {\n\n public abstract isConnectionFromOutlet: boolean;\n\n public override isConnected: boolean = false;\n\n private outputs: FConnectorBase[] = [];\n\n public get canBeConnected(): boolean {\n return !this.disabled && this.outputs.some((output) => output.canBeConnected);\n }\n\n public setOutputs(outputs: FConnectorBase[]): void {\n this.outputs = outputs;\n }\n}\n","export function isNodeOutlet(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutlet]');\n}\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { F_NODE_OUTLET, FNodeOutletBase } from './f-node-outlet-base';\nimport { F_NODE, FNodeBase } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { castToBoolean } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutlet]\",\n exportAs: 'fNodeOutlet',\n host: {\n '[attr.data-f-outlet-id]': 'id',\n class: \"f-component f-node-outlet\",\n '[class.f-node-outlet-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective } ],\n})\nexport class FNodeOutletDirective extends FNodeOutletBase implements OnInit, OnDestroy {\n\n @Input('fOutletId')\n public override id: string = `f-node-outlet-${ uniqueId++ }`;\n\n @Input('fOutletDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n public override fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n @Input()\n public override isConnectionFromOutlet: boolean = false\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n if (!this.fNode) {\n throw new Error('fNodeOutlet must be inside fNode Directive');\n }\n this.fComponentsStore.addComponent(this.fComponentsStore.fOutlets, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fOutlets, this);\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_OUTPUT = new InjectionToken<FNodeOutputBase>('F_NODE_OUTPUT');\n\n@Directive()\nexport abstract class FNodeOutputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public isConnected: boolean = false;\n\n public override get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export function isNodeOutput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutput]');\n}\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FNodeOutputBase, F_NODE_OUTPUT } from './f-node-output-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { F_NODE, FNodeBase } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\nimport { castToBoolean, castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutput]\",\n exportAs: 'fNodeOutput',\n host: {\n '[attr.data-f-output-id]': 'id',\n class: \"f-component f-node-output\",\n '[class.f-node-output-multiple]': 'multiple',\n '[class.f-node-output-disabled]': 'disabled',\n '[class.f-node-output-self-connectable]': 'isSelfConnectable',\n },\n providers: [ { provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective } ],\n})\nexport class FNodeOutputDirective extends FNodeOutputBase implements OnInit, OnDestroy {\n\n @Input('fOutputId')\n public override id: string = `f-node-output-${ uniqueId++ }`;\n\n @Input('fOutputMultiple')\n public override multiple: boolean = false;\n\n @Input('fOutputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n @Input('fOutputConnectableSide')\n public set _fSide(value: EFConnectableSide | string) {\n this._fConnectableSide = castToEnum(value, 'fOutputConnectableSide', EFConnectableSide);\n this.fNode.refresh();\n }\n\n public get _fSide(): EFConnectableSide {\n return this._fConnectableSide;\n }\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override isConnected: boolean = false;\n\n @Input()\n public override isSelfConnectable: boolean = true;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n if (!this.fNode) {\n throw new Error('fNodeOutput must be inside fNode Directive');\n }\n this.fComponentsStore.addComponent(this.fComponentsStore.fOutputs, this);\n this.fNode.addConnector(this);\n }\n\n public override setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n this.hostElement.classList.toggle('f-node-output-connected', isConnected);\n this.hostElement.classList.toggle('f-node-output-not-connectable', !this.canBeConnected);\n }\n\n public ngOnDestroy(): void {\n this.fNode.removeConnector(this);\n this.fComponentsStore.removeComponent(this.fComponentsStore.fOutputs, this);\n }\n}\n","import { FNodeInputDirective } from './f-node-input';\nimport { FNodeOutletDirective } from './f-node-outlet';\nimport { FNodeOutputDirective } from './f-node-output';\n\nexport const F_CONNECTORS_PROVIDERS = [\n\n FNodeInputDirective,\n\n FNodeOutletDirective,\n\n FNodeOutputDirective\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export function createErrorClass<T>(impl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n };\n\n const constructor = impl(_super);\n constructor.prototype = Object.create(Error.prototype);\n constructor.prototype.constructor = constructor;\n return constructor;\n}\n","import { createErrorClass } from './create-error-class';\n\nexport interface NotFoundError extends Error {\n}\n\nexport interface NotFoundCtor {\n\n new(message?: string): NotFoundError;\n}\n\nexport const NotFoundError: NotFoundCtor = createErrorClass(\n (_super) =>\n function error(this: any, message: string) {\n _super(this);\n this.message = message || 'The requested resource was not found.';\n this.code = 404;\n }\n);\n","import { createErrorClass } from './create-error-class';\n\nexport interface ConflictError extends Error {\n}\n\nexport interface ConflictErrorCtor {\n\n new(message?: string): ConflictError;\n}\n\nexport const ConflictError: ConflictErrorCtor = createErrorClass(\n (_super) =>\n function error(this: any, message: string) {\n _super(this);\n this.message = message || 'Conflict error occurred.';\n this.code = 409;\n }\n);\n","import { NotFoundError } from './not-found-error';\nimport { ConflictError } from './conflict-error';\n\nexport function OutputNotFound(id: string): Error {\n return new NotFoundError(`Output with fOutputId ${ id } not found. Make sure there is no f-connection to a non-existent fOutput.`);\n}\n\nexport function InputNotFound(id: string): Error {\n return new NotFoundError(`Input with fInputId ${ id } not found. Make sure there is no f-connection to a non-existent fInput.`);\n}\n\nexport function RequiredOutput(): Error {\n return new ConflictError(`The fNode must contain at least one fOutput if there is an fOutlet`);\n}\n","import { FNodeOutletBase } from '../../../../f-connectors';\n\nexport class GetCanBeConnectedOutputByOutletRequest {\n\n constructor(\n public outlet: FNodeOutletBase\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { GetCanBeConnectedOutputByOutletRequest } from './get-can-be-connected-output-by-outlet.request';\nimport { RequiredOutput } from '../../../../errors';\nimport { FExecutionRegister } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetCanBeConnectedOutputByOutletRequest)\nexport class GetCanBeConnectedOutputByOutletExecution\n implements IHandler<GetCanBeConnectedOutputByOutletRequest, FConnectorBase | undefined> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fOutputs(): FConnectorBase[] {\n return this.fComponentsStore.fOutputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetCanBeConnectedOutputByOutletRequest): FConnectorBase | undefined {\n const outputs = this.getConnectableOutputs(this.getNode(request.outlet));\n if (!outputs.length) {\n throw RequiredOutput();\n }\n return outputs.length > 0 ? outputs[ 0 ] : undefined;\n }\n\n private getConnectableOutputs(node: FNodeBase): FConnectorBase[] {\n return this.fOutputs.filter((x) => {\n return node.isContains(x.hostElement) && x.canBeConnected;\n });\n }\n\n private getNode(outlet: FNodeOutletBase): FNodeBase {\n return this.fNodes.find((x) => x.isContains(outlet.hostElement))!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetCanBeConnectedOutputByOutletRequest } from './get-can-be-connected-output-by-outlet.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../f-node';\nimport { FComponentsStore } from '../../../../f-storage';\n\n@Injectable()\n@FValidatorRegister(GetCanBeConnectedOutputByOutletRequest)\nexport class GetCanBeConnectedOutputByOutletValidator implements IValidator<GetCanBeConnectedOutputByOutletRequest> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetCanBeConnectedOutputByOutletRequest): boolean {\n return !!this.fNodes.find((x) => x.isContains(request.outlet.hostElement));\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FCreateConnectionEvent {\n\n constructor(\n public fOutputId: string,\n public fInputId: string | undefined,\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\n\nexport class GetInputUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler\n ) {\n }\n}\n","import { IPoint, Point } from '@foblex/2d';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { Injectable } from '@angular/core';\nimport { BrowserService } from '@foblex/platform';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\n\n\n@Injectable()\n@FExecutionRegister(GetInputUnderPointerRequest)\nexport class GetInputUnderPointerExecution\n implements IExecution<GetInputUnderPointerRequest, FConnectorBase | undefined> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fInputs(): FConnectorBase[] {\n return this.fComponentsStore.fInputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(payload: GetInputUnderPointerRequest): FConnectorBase | undefined {\n const output = (this.getOutput(payload.dragHandler) || this.getOutlet(payload.dragHandler))!;\n const inputsUnderPointer = this.getInputsUnderPointer(payload.event.getPosition(), payload.dragHandler);\n\n const connectors = output.isSelfConnectable ?\n inputsUnderPointer :\n this.filterSelfConnectable(inputsUnderPointer, output);\n return connectors.length > 0 ? connectors[0] : undefined;\n }\n\n private getOutput(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n\n private getInputsUnderPointer(position: IPoint, dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase[] {\n const result = this.getInputsInPosition(position);\n const closestInput = dragHandler.getClosetInput(this.getDifference(position));\n if (closestInput) {\n result.push(closestInput.fConnector);\n }\n const input = this.getFirstConnectableInputOfNodeInPosition(position);\n if (input) {\n result.push(input);\n }\n return result;\n }\n\n private getDifference(position: IPoint): IPoint {\n return Point.fromPoint(position).elementTransform(this.fComponentsStore.flowHost)\n .div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n }\n\n private getInputsInPosition(position: IPoint): FConnectorBase[] {\n return this.getElementsFromPoint(position).map((element) =>\n this.fInputs.find(x => x.isContains(element) && x.canBeConnected)\n ).filter((x) => !!x) as FConnectorBase[];\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n private getFirstConnectableInputOfNodeInPosition(position: IPoint): FConnectorBase | undefined {\n return this.getNodesInPosition(position).map((x) => {\n return this.fInputs.find((i) => x.isContains(i.hostElement) && i.canBeConnected);\n }).find((x) => !!x);\n }\n\n private getNodesInPosition(position: IPoint): FNodeBase[] {\n return this.getElementsFromPoint(position).map((element) => {\n return this.fNodes.find((x) => x.isContains(element) && x.fConnectOnNode)\n }).filter((x) => !!x) as FNodeBase[];\n }\n\n private filterSelfConnectable(inputs: FConnectorBase[], connector: FConnectorBase): FConnectorBase[] {\n return inputs.filter((x) => {\n const targetNode = this.fNodes.find((k) => k.isContains(x.hostElement));\n const sourceNode = this.fNodes.find((k) => k.isContains(connector!.hostElement));\n return sourceNode?.hostElement !== targetNode?.hostElement;\n })\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { OutputNotFound } from '../../../errors';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\nimport { FConnectorBase } from '../../../f-connectors';\n\n@Injectable()\n@FValidatorRegister(GetInputUnderPointerRequest)\nexport class GetInputUnderPointerValidator implements IValidator<GetInputUnderPointerRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetInputUnderPointerRequest): boolean {\n let output = this.getOutput(request.dragHandler) || this.getOutlet(request.dragHandler);\n if (!output) {\n throw OutputNotFound(request.dragHandler.fConnection.fOutputId);\n }\n return true;\n }\n\n private getOutput(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase, isNodeOutlet } from '../../../../f-connectors';\nimport { CreateConnectionFinalizeRequest } from './create-connection-finalize.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { OutputNotFound } from '../../../../errors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../get-can-be-connected-output-by-outlet';\nimport { FCreateConnectionEvent } from '../f-create-connection.event';\nimport { CreateConnectionDragHandler } from '../create-connection.drag-handler';\nimport { GetInputUnderPointerRequest } from '../../get-input-under-pointer';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFinalizeRequest)\nexport class CreateConnectionFinalizeExecution\n implements IHandler<CreateConnectionFinalizeRequest, void> {\n\n private get dragHandler(): CreateConnectionDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as CreateConnectionDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFinalizeRequest): void {\n this.emitEvent(request.event);\n this.dragHandler.complete();\n }\n\n private getTargetOutput(output: FConnectorBase | undefined): FConnectorBase {\n if (!output) {\n throw OutputNotFound(this.dragHandler.fConnection.fOutputId);\n }\n return isNodeOutlet(output.hostElement) ? this.fMediator.send<FNodeOutputBase>(\n new GetCanBeConnectedOutputByOutletRequest(output as FNodeOutletBase)\n ) : output;\n }\n\n private getOutput(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === this.dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === this.dragHandler.fConnection.fOutputId);\n }\n\n private emitEvent(event: IPointerEvent): void {\n this.fComponentsStore.fDraggable?.fCreateConnection.emit(\n new FCreateConnectionEvent(\n this.getTargetOutput(this.getOutput() || this.getOutlet()).id,\n this.getInputUnderPointer(event)?.id,\n event.getPosition()\n )\n );\n }\n\n private getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this.fMediator.send<FConnectorBase | undefined>(new GetInputUnderPointerRequest(event, this.dragHandler));\n }\n}\n","import { IDraggableItem } from '../../i-draggable-item';\nimport {\n FindClosestInputUsingSnapThresholdRequest,\n GetAllCanBeConnectedInputPositionsRequest,\n GetConnectionLineRequest,\n GetConnectorWithRectRequest,\n IConnectorWithRect\n} from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport { EFConnectableSide, FConnectorBase } from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { RoundedRect, ILine, IPoint, PointExtensions, RectExtensions, Point, } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\nexport class CreateConnectionDragHandler implements IDraggableItem {\n\n private toConnectorRect: RoundedRect = new RoundedRect();\n\n public get fConnection(): FConnectionBase {\n return this.fComponentsStore.fTempConnection!;\n }\n\n private get fSnapConnection(): FSnapConnectionComponent | undefined {\n return this.fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private fOutputWithRect!: IConnectorWithRect;\n\n private canBeConnectedInputs: IConnectorWithRect[] = [];\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n private fOutput: FConnectorBase,\n private onPointerDownPosition: IPoint,\n ) {\n }\n\n public initialize(): void {\n if (this.fSnapConnection) {\n this.fSnapConnection.fOutputId = this.fOutput.id;\n this.fSnapConnection.initialize();\n this.canBeConnectedInputs = this.fMediator.send<IConnectorWithRect[]>(\n new GetAllCanBeConnectedInputPositionsRequest(this.fOutput.id)\n );\n }\n this.fConnection.fOutputId = this.fOutput.id;\n this.fConnection.initialize();\n\n\n this.fOutputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.fOutput));\n\n this.toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.onPointerDownPosition.x, this.onPointerDownPosition.y)\n );\n\n this.fConnection.show();\n this.move(PointExtensions.initialize());\n }\n\n public move(difference: IPoint): void {\n this.drawTempConnection(this.toConnectorRect.addPoint(difference));\n if (this.fSnapConnection) {\n this.drawSnapConnection(this.getClosetInput(difference));\n }\n }\n\n private drawTempConnection(fInputRect: RoundedRect): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputRect,\n this.fConnection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n EFConnectableSide.TOP,\n )\n );\n\n this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, EFConnectableSide.TOP);\n this.fConnection.redraw();\n }\n\n private drawSnapConnection(fInputWithRect: IConnectorWithRect | undefined): void {\n if (fInputWithRect) {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputWithRect.fRect,\n this.fSnapConnection!.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fInputWithRect.fConnector.fConnectableSide\n )\n );\n this.fSnapConnection!.show();\n this.fSnapConnection!.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);\n this.fSnapConnection!.redraw();\n } else {\n this.fSnapConnection?.hide();\n }\n }\n\n public getClosetInput(difference: IPoint): IConnectorWithRect | undefined {\n if (!this.fSnapConnection) {\n return undefined;\n }\n return this.fMediator.send<IConnectorWithRect | undefined>(\n new FindClosestInputUsingSnapThresholdRequest(\n Point.fromPoint(this.toConnectorRect).add(difference),\n this.canBeConnectedInputs,\n this.fSnapConnection!.fSnapThreshold\n )\n );\n }\n\n public complete(): void {\n this.fConnection.redraw();\n this.fConnection.hide();\n this.fSnapConnection?.hide();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionFinalizeRequest } from './create-connection-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../create-connection.drag-handler';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionFinalizeRequest)\nexport class CreateConnectionFinalizeValidator implements IValidator<CreateConnectionFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CreateConnectionFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CreateConnectionDragHandler\n );\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { FConnectorBase } from '../../../../../f-connectors';\n\nexport class CreateConnectionDragHandlerRequest {\n\n constructor(\n public onPointerDownPosition: IPoint,\n public connector: FConnectorBase\n ) {\n }\n}\n","import { ITransformModel, Point } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionDragHandlerRequest } from './create-connection-drag-handler.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../../create-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionDragHandlerRequest)\nexport class CreateConnectionDragHandlerExecution\n implements IHandler<CreateConnectionDragHandlerRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionDragHandlerRequest): void {\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n const positionRelativeToFlowComponent = Point.fromPoint(request.onPointerDownPosition)\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.onPointerDownPosition = positionRelativeToFlowComponent;\n\n const positionRelativeToCanvasComponent = Point.fromPoint(positionRelativeToFlowComponent).mult(this.transform.scale)\n .sub(this.transform.position).sub(this.transform.scaledPosition).div(this.transform.scale);\n\n this.fDraggableDataContext.draggableItems = [\n new CreateConnectionDragHandler(this.fMediator, this.fComponentsStore, request.connector, positionRelativeToCanvasComponent)\n ];\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFromOutletPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutletPreparationRequest } from './create-connection-from-outlet-preparation.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase } from '../../../../../f-connectors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../../get-can-be-connected-output-by-outlet';\nimport { RequiredOutput } from '../../../../../errors';\nimport { CreateConnectionDragHandlerRequest } from '../create-connection-drag-handler';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFromOutletPreparationRequest)\nexport class CreateConnectionFromOutletPreparationExecution\n implements IHandler<CreateConnectionFromOutletPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFromOutletPreparationRequest): void {\n const { event } = request;\n const node = this.fComponentsStore.findNode(event.targetElement)!;\n\n const outlet = this.fComponentsStore.fOutlets.find((x) => {\n return x.hostElement.contains(event.targetElement);\n });\n if (!outlet) {\n throw new Error('Outlet not found');\n }\n const nodeOutputs = this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n (outlet as FNodeOutletBase).setOutputs(nodeOutputs);\n\n if (outlet.canBeConnected) {\n\n if ((outlet as FNodeOutletBase).isConnectionFromOutlet) {\n\n this.createDragHandler(event.getPosition(), outlet);\n } else {\n const output = this.fMediator.send<FNodeOutputBase>(\n new GetCanBeConnectedOutputByOutletRequest(outlet as FNodeOutletBase)\n );\n if (!output) {\n throw RequiredOutput();\n }\n this.createDragHandler(event.getPosition(), output);\n }\n }\n }\n\n private createDragHandler(position: IPoint, output: FConnectorBase): void {\n this.fMediator.send(new CreateConnectionDragHandlerRequest(position, output));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFromOutputPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation.request';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { CreateConnectionDragHandlerRequest } from '../create-connection-drag-handler';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFromOutputPreparationRequest)\nexport class CreateConnectionFromOutputPreparationExecution\n implements IHandler<CreateConnectionFromOutputPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFromOutputPreparationRequest): void {\n const { event } = request;\n\n const output = this.fComponentsStore.fOutputs.find((x) => {\n return x.hostElement.contains(event.targetElement);\n });\n if (!output) {\n throw new Error('Output not found');\n }\n if (output.canBeConnected) {\n this.createDragHandler(event.getPosition(), output);\n }\n }\n\n private createDragHandler(position: IPoint, output: FConnectorBase): void {\n this.fMediator.send(new CreateConnectionDragHandlerRequest(position, output));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation.request';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FNodeBase } from '../../../../../f-node';\nimport { FConnectorBase, isNodeOutput } from '../../../../../f-connectors';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionFromOutputPreparationRequest)\nexport class CreateConnectionFromOutputPreparationValidator implements IValidator<CreateConnectionFromOutputPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: CreateConnectionFromOutputPreparationRequest): boolean {\n return this.isNodeOutput(request.event.targetElement, this.getNode(request.event));\n }\n\n private getNode(event: IPointerEvent): FNodeBase {\n return this.fComponentsStore.findNode(event.targetElement)!;\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n return isNodeOutput(targetElement) && !this.getOutlets(node).length;\n }\n\n private getOutlets(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, isNodeOutlet, isNodeOutput } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { CreateConnectionPreparationRequest } from './create-connection-preparation.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { CreateConnectionFromOutletPreparationRequest } from './create-connection-from-outlet-preparation';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionPreparationRequest)\nexport class CreateConnectionPreparationExecution\n implements IHandler<CreateConnectionPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionPreparationRequest): void {\n if (isNodeOutlet(request.event.targetElement)) {\n this.fMediator.send<void>(new CreateConnectionFromOutletPreparationRequest(request.event));\n } else if (this.isNodeOutput(request.event.targetElement, this.getNode(request.event))) {\n this.fMediator.send<void>(new CreateConnectionFromOutputPreparationRequest(request.event));\n }\n }\n\n private getNode(event: IPointerEvent): FNodeBase {\n return this.fComponentsStore.findNode(event.targetElement)!;\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n return isNodeOutput(targetElement) && !this.getOutlets(node).length;\n }\n\n private getOutlets(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionPreparationRequest } from './create-connection-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../f-node';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionPreparationRequest)\nexport class CreateConnectionPreparationValidator implements IValidator<CreateConnectionPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CreateConnectionPreparationRequest): boolean {\n return !!this.getNode(request.event) && this.isValidConditions();\n }\n\n private getNode(event: IPointerEvent): FNodeBase | undefined {\n return this.fComponentsStore.findNode(event.targetElement);\n }\n\n private isValidConditions(): boolean {\n return !this.fDraggableDataContext.draggableItems.length && !!this.fComponentsStore.fTempConnection;\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ReassignConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export class FReassignConnectionEvent {\n\n constructor(\n public fConnectionId: string,\n public fOutputId: string,\n public oldFInputId: string,\n public newFInputId: string | undefined\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionFinalizeRequest } from './reassign-connection-finalize.request';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\nimport { FDraggableBase } from '../../../f-draggable-base';\nimport { FReassignConnectionEvent } from '../f-reassign-connection.event';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FConnectorBase } from '../../../../f-connectors';\nimport { GetInputUnderPointerRequest } from '../../get-input-under-pointer';\n\n@Injectable()\n@FExecutionRegister(ReassignConnectionFinalizeRequest)\nexport class ReassignConnectionFinalizeExecution implements IExecution<ReassignConnectionFinalizeRequest, void> {\n\n private get fDraggable(): FDraggableBase {\n return this.fComponentsStore.fDraggable!;\n }\n\n private get dragHandler(): ReassignConnectionDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as ReassignConnectionDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: ReassignConnectionFinalizeRequest): void {\n this.emitEvent(request.event);\n this.dragHandler.complete();\n }\n\n private emitEvent(event: IPointerEvent): void {\n const input = this.getInputUnderPointer(event);\n if (\n !input || !this.isReassignToDifferentInput(input)\n ) {\n return;\n }\n this.fDraggable.fReassignConnection.emit(\n new FReassignConnectionEvent(\n this.dragHandler.fConnection.fId,\n this.dragHandler.fConnection.fOutputId,\n this.dragHandler.fConnection.fInputId,\n input.id\n )\n );\n }\n\n private getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this.fMediator.send<FConnectorBase | undefined>(new GetInputUnderPointerRequest(event, this.dragHandler));\n }\n\n private isReassignToDifferentInput(inputsUnderPointer: FConnectorBase): boolean {\n return this.dragHandler.fConnection.fInputId !== inputsUnderPointer.id;\n }\n}\n","import { IDraggableItem } from '../../i-draggable-item';\nimport {\n FindClosestInputUsingSnapThresholdRequest,\n GetAllCanBeConnectedInputPositionsRequest,\n GetConnectionLineRequest, GetConnectorWithRectRequest,\n IConnectorWithRect\n} from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { ILine, IPoint, Point, RectExtensions, RoundedRect } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\nexport class ReassignConnectionDragHandler implements IDraggableItem {\n\n public toConnectorRect: RoundedRect = new RoundedRect();\n\n private get fSnapConnection(): FSnapConnectionComponent | undefined {\n return this.fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private fOutputWithRect!: IConnectorWithRect;\n private fInputWithRect!: IConnectorWithRect;\n\n private canBeConnectedInputs: IConnectorWithRect[] = [];\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n public fConnection: FConnectionBase,\n ) {\n }\n\n public initialize(): void {\n if (this.fSnapConnection) {\n this.fSnapConnection.fOutputId = this.fConnection.fOutputId;\n this.fSnapConnection.initialize();\n this.canBeConnectedInputs = this.fMediator.send<IConnectorWithRect[]>(\n new GetAllCanBeConnectedInputPositionsRequest(this.fConnection.fOutputId)\n );\n }\n\n this.fOutputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getOutput()));\n this.fInputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getInput()));\n this.toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.fConnection.line.point2.x, this.fConnection.line.point2.y)\n );\n }\n\n private getOutput(): FConnectorBase {\n return this.fComponentsStore.fOutputs.find((x) => x.id === this.fConnection.fOutputId)!;\n }\n\n private getInput(): FConnectorBase {\n return this.fComponentsStore.fInputs.find((x) => x.id === this.fConnection.fInputId)!\n }\n\n public move(difference: IPoint): void {\n this.drawConnection({\n fRect: this.toConnectorRect.addPoint(difference),\n fConnector: this.fInputWithRect.fConnector\n });\n if (this.fSnapConnection) {\n this.drawSnapConnection(this.getClosetInput(difference));\n }\n }\n\n private drawConnection(fInputWithRect: IConnectorWithRect): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputWithRect.fRect,\n this.fConnection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fInputWithRect.fConnector.fConnectableSide\n )\n );\n\n this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);\n this.fConnection.redraw();\n }\n\n private drawSnapConnection(fInputWithRect: IConnectorWithRect | undefined): void {\n if (fInputWithRect) {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputWithRect.fRect,\n this.fSnapConnection!.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fInputWithRect.fConnector.fConnectableSide\n )\n );\n this.fSnapConnection!.show();\n this.fSnapConnection!.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);\n this.fSnapConnection!.redraw();\n } else {\n this.fSnapConnection?.hide();\n }\n }\n\n public getClosetInput(difference: IPoint): IConnectorWithRect | undefined {\n if (!this.fSnapConnection) {\n return undefined;\n }\n return this.fMediator.send<IConnectorWithRect | undefined>(\n new FindClosestInputUsingSnapThresholdRequest(\n Point.fromPoint(this.toConnectorRect).add(difference),\n this.canBeConnectedInputs,\n this.fSnapConnection!.fSnapThreshold\n )\n );\n }\n\n public complete(): void {\n this.drawConnection(this.fInputWithRect);\n this.fSnapConnection?.hide();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionFinalizeRequest } from './reassign-connection-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\n\n@Injectable()\n@FValidatorRegister(ReassignConnectionFinalizeRequest)\nexport class ReassignConnectionFinalizeValidator implements IValidator<ReassignConnectionFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: ReassignConnectionFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ReassignConnectionDragHandler\n );\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ReassignConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint, PointExtensions } from '@foblex/2d';\nimport { CalculateCenterBetweenPointsRequest } from './calculate-center-between-points-request';\n\nexport class CalculateCenterBetweenPointsHandler\n implements IHandler<CalculateCenterBetweenPointsRequest, IPoint> {\n\n public handle(request: CalculateCenterBetweenPointsRequest): IPoint {\n const { source, target } = request;\n\n const offsetX = Math.abs(target.x - source.x) / 2;\n const centerX = (target.x < source.x) ? target.x + offsetX : target.x - offsetX;\n\n const offsetY = Math.abs(target.y - source.y) / 2;\n const centerY = (target.y < source.y) ? target.y + offsetY : target.y - offsetY;\n\n return PointExtensions.initialize(centerX, centerY);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class CalculateCenterBetweenPointsRequest {\n\n constructor(\n public source: IPoint,\n public target: IPoint,\n ) {\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { CalculateConnectionCenterRequest } from './calculate-connection-center-request';\n\nexport class CalculateConnectionCenterHandler\n implements IHandler<CalculateConnectionCenterRequest, IPoint> {\n\n public handle(request: CalculateConnectionCenterRequest): IPoint {\n\n const { points } = request;\n let totalDistance = 0;\n let distances: number[] = [];\n\n for (let i = 0; i < points.length - 1; i++) {\n const distance = this.calculateDistance(points[ i ], points[ i + 1 ]);\n distances.push(distance);\n totalDistance += distance;\n }\n\n let accumulatedDistance = 0;\n let centerIndex = 0;\n const halfTotalDistance = totalDistance / 2;\n for (let i = 0; i < distances.length; i++) {\n accumulatedDistance += distances[ i ];\n if (accumulatedDistance >= halfTotalDistance) {\n centerIndex = i;\n break;\n }\n }\n\n const remainingDistanceToCenter = halfTotalDistance - (accumulatedDistance - distances[ centerIndex ]);\n\n return this.findPointAtDistance(points[ centerIndex ], points[ centerIndex + 1 ], remainingDistanceToCenter);\n }\n\n private calculateDistance(pointA: IPoint, pointB: IPoint): number {\n return Math.sqrt(Math.pow(pointB.x - pointA.x, 2) + Math.pow(pointB.y - pointA.y, 2));\n }\n\n private findPointAtDistance(startPoint: IPoint, endPoint: IPoint, distance: number): IPoint {\n const totalDistance = this.calculateDistance(startPoint, endPoint);\n const ratio = distance / totalDistance;\n const x = (1 - ratio) * startPoint.x + ratio * endPoint.x;\n const y = (1 - ratio) * startPoint.y + ratio * endPoint.y;\n return { x, y };\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class CalculateConnectionCenterRequest {\n\n constructor(\n public points: IPoint[],\n ) {\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\n\nexport class FBezierPathBuilder implements IFConnectionBuilder {\n\n private static getConnectorOffset(distance: number, offset: number): number {\n if (distance >= offset) {\n return distance;\n }\n return offset * Math.sqrt(offset - distance);\n }\n\n private static getAnglePoint(side: EFConnectableSide, source: IPoint, target: IPoint, offset: number): IPoint {\n\n let result: IPoint = { x: source.x, y: source.y };\n\n switch (side) {\n case EFConnectableSide.LEFT:\n result.x -= FBezierPathBuilder.getConnectorOffset(source.x - target.x, offset);\n break;\n case EFConnectableSide.RIGHT:\n result.x += FBezierPathBuilder.getConnectorOffset(target.x - source.x, offset);\n break;\n case EFConnectableSide.TOP:\n result.y -= FBezierPathBuilder.getConnectorOffset(source.y - target.y, offset);\n break;\n case EFConnectableSide.BOTTOM:\n result.y += FBezierPathBuilder.getConnectorOffset(target.y - source.y, offset);\n break;\n }\n\n return result;\n }\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, sourceSide, target, targetSide, offset } = request;\n\n const sourceAnglePoint = FBezierPathBuilder.getAnglePoint(sourceSide, source, target, offset);\n\n const targetAnglePoint = FBezierPathBuilder.getAnglePoint(targetSide, target, source, offset);\n\n const path = `M ${ source.x } ${ source.y } C ${ sourceAnglePoint.x } ${ sourceAnglePoint.y }, ${ targetAnglePoint.x } ${ targetAnglePoint.y }, ${ target.x + 0.0002 } ${ target.y + 0.0002 }`;\n\n const connectionCenter = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest([ source, sourceAnglePoint, targetAnglePoint, target ])\n );\n\n return { path, connectionCenter, penultimatePoint: targetAnglePoint };\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/2d';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport {\n CalculateCenterBetweenPointsHandler,\n CalculateCenterBetweenPointsRequest\n} from './calculate-center-between-points';\nimport { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\nimport { IMap } from '../../../domain';\n\nconst CONNECTOR_SIDE_POINT: IMap<IPoint> = {\n\n [ EFConnectableSide.LEFT ]: PointExtensions.initialize(-1, 0),\n\n [ EFConnectableSide.RIGHT ]: PointExtensions.initialize(1, 0),\n\n [ EFConnectableSide.TOP ]: PointExtensions.initialize(0, -1),\n\n [ EFConnectableSide.BOTTOM ]: PointExtensions.initialize(0, 1),\n\n [ EFConnectableSide.AUTO ]: PointExtensions.initialize(0, 0),\n};\n\nexport class FSegmentPathBuilder implements IFConnectionBuilder {\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, sourceSide, target, targetSide } = request;\n\n const { points, center } = this.getPathPoints(\n source,\n sourceSide,\n target,\n targetSide,\n request.offset\n );\n\n const path = this.buildPath(points, request.radius);\n\n const penultimatePoint = points.length > 1 ? points[ points.length - 2 ] : source;\n\n return { path, connectionCenter: center, penultimatePoint };\n }\n\n private getPathPoints(\n source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide, offset: number\n ): { points: IPoint[], center: IPoint } {\n\n const sourceDirection = CONNECTOR_SIDE_POINT[ sourceSide ];\n const targetDirection = CONNECTOR_SIDE_POINT[ targetSide ];\n\n const sourceGap: IPoint = { x: source.x + sourceDirection.x * offset, y: source.y + sourceDirection.y * offset };\n const targetGap: IPoint = { x: target.x + targetDirection.x * offset, y: target.y + targetDirection.y * offset };\n\n const direction = this.getDirection(sourceGap, sourceSide, targetGap);\n const directionAccessor = direction.x !== 0 ? 'x' : 'y';\n const currentDirection = direction[ directionAccessor ];\n\n let points: IPoint[] = [];\n const sourceGapOffset = PointExtensions.initialize();\n const targetGapOffset = PointExtensions.initialize();\n\n const centerBetweenPoints = new CalculateCenterBetweenPointsHandler().handle(\n new CalculateCenterBetweenPointsRequest(source, target)\n );\n\n if (sourceDirection[ directionAccessor ] * targetDirection[ directionAccessor ] === -1) {\n const verticalSplit: IPoint[] = [\n { x: centerBetweenPoints.x, y: sourceGap.y },\n { x: centerBetweenPoints.x, y: targetGap.y },\n ];\n const horizontalSplit: IPoint[] = [\n { x: sourceGap.x, y: centerBetweenPoints.y },\n { x: targetGap.x, y: centerBetweenPoints.y },\n ];\n\n if (sourceDirection[ directionAccessor ] === currentDirection) {\n points = directionAccessor === 'x' ? verticalSplit : horizontalSplit;\n } else {\n points = directionAccessor === 'x' ? horizontalSplit : verticalSplit;\n }\n } else {\n const sourceTarget: IPoint[] = [ { x: sourceGap.x, y: targetGap.y } ];\n const targetSource: IPoint[] = [ { x: targetGap.x, y: sourceGap.y } ];\n\n if (directionAccessor === 'x') {\n points = sourceDirection.x === currentDirection ? targetSource : sourceTarget;\n } else {\n points = sourceDirection.y === currentDirection ? sourceTarget : targetSource;\n }\n\n if (sourceSide === targetSide) {\n const diff = Math.abs(source[ directionAccessor ] - target[ directionAccessor ]);\n\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDirection[ directionAccessor ] === currentDirection) {\n sourceGapOffset[ directionAccessor ] = (sourceGap[ directionAccessor ] > source[ directionAccessor ] ? -1 : 1) * gapOffset;\n } else {\n targetGapOffset[ directionAccessor ] = (targetGap[ directionAccessor ] > target[ directionAccessor ] ? -1 : 1) * gapOffset;\n }\n }\n }\n\n if (sourceSide !== targetSide) {\n const dirAccessorOpposite = directionAccessor === 'x' ? 'y' : 'x';\n const isSameDir = sourceDirection[ directionAccessor ] === targetDirection[ dirAccessorOpposite ];\n const sourceGtTargetOppo = sourceGap[ dirAccessorOpposite ] > targetGap[ dirAccessorOpposite ];\n const sourceLtTargetOppo = sourceGap[ dirAccessorOpposite ] < targetGap[ dirAccessorOpposite ];\n const flipSourceTarget =\n (sourceDirection[ directionAccessor ] === 1 &&\n ((!isSameDir && sourceGtTargetOppo) || (isSameDir && sourceLtTargetOppo))) ||\n (sourceDirection[ directionAccessor ] !== 1 &&\n ((!isSameDir && sourceLtTargetOppo) || (isSameDir && sourceGtTargetOppo)));\n\n if (flipSourceTarget) {\n points = directionAccessor === 'x' ? sourceTarget : targetSource;\n }\n }\n }\n\n const pathPoints = [\n source,\n { x: sourceGap.x + sourceGapOffset.x, y: sourceGap.y + sourceGapOffset.y },\n ...points,\n { x: targetGap.x + targetGapOffset.x, y: targetGap.y + targetGapOffset.y },\n target,\n ];\n\n const center = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest(pathPoints)\n );\n\n return { points: pathPoints, center: center };\n }\n\n private getDirection(source: IPoint, sourceSide: EFConnectableSide, target: IPoint): IPoint {\n if (sourceSide === EFConnectableSide.LEFT || sourceSide === EFConnectableSide.RIGHT) {\n return source.x < target.x ? PointExtensions.initialize(1, 0) : PointExtensions.initialize(-1, 0);\n }\n return source.y < target.y ? PointExtensions.initialize(0, 1) : PointExtensions.initialize(0, -1);\n }\n\n private distance(a: IPoint, b: IPoint): number {\n return Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));\n }\n\n private buildPath(points: IPoint[], borderRadius: number): string {\n let path = '';\n for (let i = 0; i < points.length; i++) {\n const p = points[ i ];\n let segment = '';\n\n if (i > 0 && i < points.length - 1) {\n segment = this.getBend(points[ i - 1 ], p, points[ i + 1 ], borderRadius);\n } else if (i === points.length - 1) {\n segment = this.buildLastLineSegment(i, p);\n } else {\n segment = this.buildMoveOrLineSegment(i, p);\n }\n path += segment;\n }\n\n return path;\n }\n\n private getBend(a: IPoint, b: IPoint, c: IPoint, size: number): string {\n const bendSize = Math.min(this.distance(a, b) / 2, this.distance(b, c) / 2, size);\n const { x, y } = b;\n\n if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {\n return `L${ x } ${ y }`;\n }\n\n if (a.y === y) {\n const xDir = a.x < c.x ? -1 : 1;\n const yDir = a.y < c.y ? 1 : -1;\n return `L ${ x + bendSize * xDir },${ y }Q ${ x },${ y } ${ x },${ y + bendSize * yDir }`;\n }\n\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${ x },${ y + bendSize * yDir }Q ${ x },${ y } ${ x + bendSize * xDir },${ y }`;\n }\n\n private buildMoveOrLineSegment(index: number, point: IPoint): string {\n return `${ index === 0 ? 'M' : 'L' }${ point.x } ${ point.y }`;\n }\n\n private buildLastLineSegment(index: number, point: IPoint): string {\n return `L${ point.x + 0.0002 } ${ point.y + 0.0002 }`;\n }\n}\n","import { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\n\nexport class FStraightPathBuilder implements IFConnectionBuilder {\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, target } = request;\n const path = `M ${ source.x } ${ source.y } L ${ target.x + 0.0002 } ${ target.y + 0.0002 }`;\n\n const connectionCenter = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest([source, target])\n );\n\n return { path, connectionCenter, penultimatePoint: source };\n }\n}\n","import { normalizeDomElementId } from '@foblex/utils';\n\nexport const F_CONNECTION_IDENTIFIERS = {\n\n textId(connectionId: string): string {\n return normalizeDomElementId('connection_text_' + connectionId);\n },\n connectionForSelectionId(connectionId: string): string {\n return normalizeDomElementId('connection_for_selection_' + connectionId);\n },\n connectionId(connectionId: string): string {\n return normalizeDomElementId('connection_' + connectionId);\n },\n gradientId(connectionId: string): string {\n return normalizeDomElementId('connection_gradient_' + connectionId);\n },\n linkToGradient(connectionId: string): string {\n return `url(#${ F_CONNECTION_IDENTIFIERS.gradientId(connectionId) })`;\n },\n linkToConnection(connectionId: string): string {\n return `#${ F_CONNECTION_IDENTIFIERS.connectionId(connectionId) }`;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const F_CONNECTION = new InjectionToken('F_CONNECTION');\n","import { Directive, ElementRef, Inject, OnInit } from '@angular/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { IHasConnectionText } from '../i-has-connection-text';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { BrowserService } from '@foblex/platform';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\n@Directive({\n selector: 'textPath[f-connection-text-path]',\n host: {\n '[attr.href]': 'linkToConnection'\n }\n})\nexport class FConnectionTextPathDirective implements IHasHostElement, OnInit {\n\n public get linkToConnection(): string {\n return F_CONNECTION_IDENTIFIERS.linkToConnection(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGTextPathElement {\n return this.elementReference.nativeElement;\n }\n\n public symbolWidth: number = 8;\n public fontSize: string = '12px';\n\n constructor(\n private elementReference: ElementRef<SVGTextPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionText & IHasConnectionFromTo,\n private fBrowser: BrowserService\n ) {\n }\n\n public ngOnInit(): void {\n this.hostElement.setAttribute('startOffset', '50%');\n this.hostElement.setAttribute('text-anchor', `middle`);\n this.symbolWidth = this.getSymbolWidth(this.base.fText || '');\n }\n\n public getBBox(): DOMRect {\n return this.hostElement.getBBox();\n }\n\n private getFontStyles(element: SVGTextPathElement): { fontSize: string, fontFamily: string } {\n const computedStyles = this.fBrowser.window.getComputedStyle(element);\n return {\n fontSize: computedStyles.fontSize,\n fontFamily: computedStyles.fontFamily\n };\n }\n\n private getSymbolWidth(name: string): number {\n const text = name || 'connection';\n const { fontFamily, fontSize } = this.getFontStyles(this.hostElement);\n this.fontSize = fontSize;\n const canvas = this.fBrowser.document.createElement('canvas');\n let context;\n\n try {\n context = canvas.getContext('2d');\n } catch (e) {\n context = null;\n }\n if (!context) {\n return 0;\n }\n\n context.font = `${ fontSize } ${ fontFamily }`;\n\n const metrics = context.measureText(text);\n const symbolWidth = metrics.width / text.length;\n return symbolWidth;\n }\n}\n\n","import { ILine } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_TEXT = new InjectionToken<IConnectionText>('CONNECTION_TEXT');\n\nexport interface IConnectionText extends IHasHostElement {\n\n redraw(line: ILine): void;\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject, ViewChild\n} from \"@angular/core\";\nimport { ILine, PointExtensions } from '@foblex/2d';\nimport { FConnectionTextPathDirective } from './f-connection-text-path.directive';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionText } from '../i-has-connection-text';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_TEXT, IConnectionText } from './i-connection-text';\n\n@Component({\n selector: \"text[f-connection-text]\",\n templateUrl: \"./f-connection-text.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-text\",\n '[attr.id]': 'textId',\n },\n providers: [ { provide: CONNECTION_TEXT, useExisting: FConnectionTextComponent } ],\n})\nexport class FConnectionTextComponent implements IConnectionText {\n\n public get textId(): string {\n return F_CONNECTION_IDENTIFIERS.textId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGTextElement {\n return this.elementReference.nativeElement;\n }\n\n public get text(): string {\n return this.base.fText || '';\n }\n\n @ViewChild(FConnectionTextPathDirective, { static: true })\n public textPathDirective!: FConnectionTextPathDirective;\n\n constructor(\n private elementReference: ElementRef<SVGTextElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionText & IHasConnectionFromTo,\n ) {\n }\n\n public redraw(line: ILine): void {\n\n const isTextReverse: boolean = FConnectionTextComponent.isTextReverse(line);\n const dyValue = this.calculateDy(this.textPathDirective.fontSize, isTextReverse);\n\n this.hostElement.setAttribute('dy', dyValue);\n\n const textRect = this.textPathDirective.getBBox();\n const textRectCenter = [ textRect.x + textRect.width / 2, textRect.y + textRect.height / 2 ];\n this.hostElement.setAttribute('transform', isTextReverse ? `rotate(180, ${ textRectCenter })` : '');\n const startOffset = FConnectionTextComponent.getTextStartOffset(line, this.base.fText || '', this.textPathDirective.symbolWidth);\n if (startOffset < 0) {\n\n this.hostElement.style.display = 'none';\n } else {\n\n this.hostElement.style.display = 'unset';\n }\n }\n\n private calculateDy(fontSize: string, isTextReverse: boolean): string {\n const fontSizeNumber = parseFloat(fontSize);\n\n const dyValue = isTextReverse ? fontSizeNumber * 1.5 : fontSizeNumber * -0.8;\n\n return dyValue.toString();\n }\n\n private static isTextReverse(line: ILine): boolean {\n return line.point1.x > line.point2.x;\n }\n\n private static getTextStartOffset(line: ILine, name: string, symbolWidth: number): number {\n const vectorLength: number = PointExtensions.hypotenuse(line.point1, line.point2);\n return vectorLength / 2 - ((name || '').length * symbolWidth) / 2;\n }\n}\n\n","<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","import {\n ChangeDetectionStrategy,\n Component, ElementRef\n} from \"@angular/core\";\nimport { IPoint } from '@foblex/2d';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const F_CONNECTION_DRAG_HANDLE_CLASS = 'f-connection-drag-handle';\n\n@Component({\n selector: \"circle[f-connection-drag-handle]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'class'\n }\n})\nexport class FConnectionDragHandleComponent implements IHasHostElement {\n\n public readonly class: string = F_CONNECTION_DRAG_HANDLE_CLASS;\n\n public get hostElement(): SVGCircleElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGCircleElement>\n ) {\n }\n\n public redraw(penultimatePoint: IPoint, endPoint: IPoint): void {\n const point = this.calculateCircleCenter(penultimatePoint, endPoint, 8);\n this.hostElement.setAttribute('cx', point.x.toString());\n this.hostElement.setAttribute('cy', point.y.toString());\n }\n\n private calculateCircleCenter(start: IPoint, end: IPoint, radius: number): IPoint {\n const direction = { x: end.x - start.x, y: end.y - start.y };\n const length = Math.sqrt(direction.x * direction.x + direction.y * direction.y) || 1;\n const unitDirection = { x: direction.x / length, y: direction.y / length };\n const scaledDirection = { x: unitDirection.x * radius, y: unitDirection.y * radius };\n return { x: end.x - scaledDirection.x, y: end.y - scaledDirection.y };\n }\n}\n\n","import { ILine } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_GRADIENT = new InjectionToken<IConnectionGradient>('CONNECTION_GRADIENT');\n\nexport interface IConnectionGradient extends IHasHostElement {\n\n initialize(): void;\n\n redraw(line: ILine): void;\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject } from \"@angular/core\";\nimport { ILine, Point } from '@foblex/2d';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { IHasConnectionColor } from '../i-has-connection-color';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_GRADIENT, IConnectionGradient } from './i-connection-gradient';\n\n@Component({\n selector: \"linearGradient[fConnectionGradient]\",\n templateUrl: \"./f-connection-gradient.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-gradient\",\n '[attr.id]': 'gradientId'\n },\n providers: [ { provide: CONNECTION_GRADIENT, useExisting: FConnectionGradientComponent } ],\n})\nexport class FConnectionGradientComponent implements IConnectionGradient {\n\n public get gradientId(): string {\n return F_CONNECTION_IDENTIFIERS.gradientId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGLinearGradientElement {\n return this.elementReference.nativeElement;\n }\n\n public get stop1Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(0) as SVGStopElement;\n }\n\n public get stop2Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(1) as SVGStopElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGLinearGradientElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionColor & IHasConnectionFromTo,\n ) {\n }\n\n public initialize(): void {\n this.stop1Element.setAttribute('offset', '0%');\n this.stop2Element.setAttribute('offset', '100%');\n }\n\n private updateGradient(): void {\n this.setFromColor(this.base.fStartColor);\n this.setToColor(this.base.fEndColor);\n }\n\n private setFromColor(color: string | undefined): void {\n this.stop1Element.setAttribute('stop-color', color || 'transparent');\n }\n\n private setToColor(color: string | undefined): void {\n this.stop2Element.setAttribute('stop-color', color || 'transparent');\n }\n\n public redraw(line: ILine): void {\n const x: number = line.point2.x - line.point1.x;\n const y: number = line.point2.y - line.point1.y;\n const distance: number = Math.sqrt(x * x + y * y) || 0.01;\n\n const from = new Point(0.5 - (0.5 * x) / distance, 0.5 - (0.5 * y) / distance);\n\n this.hostElement.setAttribute('x1', from.x.toString());\n this.hostElement.setAttribute('y1', from.y.toString());\n\n const to = new Point(0.5 + (0.5 * x) / distance, 0.5 + (0.5 * y) / distance);\n this.hostElement.setAttribute('x2', to.x.toString());\n this.hostElement.setAttribute('y2', to.y.toString());\n this.updateGradient();\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:stop/>\n <svg:stop/>\n</ng-container>\n","import { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_PATH = new InjectionToken<IConnectionPath>('CONNECTION_PATH');\n\nexport interface IConnectionPath extends IHasHostElement {\n\n initialize(): void;\n\n setPath(path: string): void;\n\n select(): void;\n\n deselect(): void;\n}\n","import { normalizeDomElementId } from '@foblex/utils';\n\nexport function getMarkerStartId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerEndId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-marker-end-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedStartId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-selected-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedEndId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-selected-marker-end-${ fConnectionId }`);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject } from \"@angular/core\";\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionColor } from '../i-has-connection-color';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_PATH, IConnectionPath } from './i-connection-path';\nimport {\n getMarkerEndId,\n getMarkerSelectedEndId,\n getMarkerSelectedStartId,\n getMarkerStartId,\n} from './get-path-marker-id';\n\n@Component({\n selector: \"path[f-connection-path]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-path\",\n '[attr.id]': 'attrConnectionId',\n '[attr.data-f-path-id]': 'fPathId',\n '[attr.stroke]': 'linkToGradient',\n },\n providers: [ { provide: CONNECTION_PATH, useExisting: FConnectionPathComponent } ],\n})\nexport class FConnectionPathComponent implements IConnectionPath {\n\n public get fPathId(): string {\n return this.base.fId;\n }\n\n public get linkToGradient(): string {\n return F_CONNECTION_IDENTIFIERS.linkToGradient(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get attrConnectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionColor & IHasConnectionFromTo\n ) {\n }\n\n public initialize(): void {\n this.deselect();\n }\n\n public setPath(path: string): void {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n\n public select(): void {\n this.hostElement.setAttribute('marker-start', `url(#${ getMarkerSelectedStartId(this.base.fId) })`);\n this.hostElement.setAttribute('marker-end', `url(#${ getMarkerSelectedEndId(this.base.fId) })`);\n }\n\n public deselect(): void {\n this.hostElement.setAttribute('marker-start', `url(#${ getMarkerStartId(this.base.fId) })`);\n this.hostElement.setAttribute('marker-end', `url(#${ getMarkerEndId(this.base.fId) })`);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject\n} from \"@angular/core\";\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\n@Component({\n selector: \"path[fConnectionSelection]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-selection\",\n '[attr.id]': 'connectionForSelectionId',\n },\n})\nexport class FConnectionSelectionComponent implements IHasHostElement {\n\n public get connectionForSelectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionForSelectionId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionFromTo,\n ) {\n }\n\n public setPath(path: string) {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n}\n\n","import { InjectionToken } from '@angular/core';\nimport { IFConnectionBuilder } from './i-f-connection-builder';\n\nexport const F_CONNECTION_BUILDERS = new InjectionToken<IFConnectionBuilders>('F_CONNECTION_BUILDERS');\n\nexport interface IFConnectionBuilders {\n [key: string]: IFConnectionBuilder;\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { IFConnectionBuilder } from './i-f-connection-builder';\nimport { EFConnectionType, FBezierPathBuilder, FSegmentPathBuilder, FStraightPathBuilder } from '../common';\nimport { F_CONNECTION_BUILDERS, IFConnectionBuilders } from './f-connection-builders';\nimport { IFConnectionFactoryRequest } from './i-f-connection-factory-request';\nimport { IFConnectionBuilderResponse } from './i-f-connection-builder-response';\nimport { IMap } from '../../domain';\n\n@Injectable()\nexport class FConnectionFactory {\n\n private readonly builders: IMap<IFConnectionBuilder> = {\n\n [ EFConnectionType.STRAIGHT ]: new FStraightPathBuilder(),\n\n [ EFConnectionType.BEZIER ]: new FBezierPathBuilder(),\n\n [ EFConnectionType.SEGMENT ]: new FSegmentPathBuilder(),\n }\n\n constructor(\n @Optional() @Inject(F_CONNECTION_BUILDERS) builders: IFConnectionBuilders\n ) {\n if (builders) {\n this.builders = { ...this.builders, ...builders };\n }\n }\n\n public handle(request: IFConnectionFactoryRequest): IFConnectionBuilderResponse {\n const builder = this.builders[ request.type ];\n if (!builder) {\n throw new Error(`FConnectionBuilder not found for type ${ request.type }`);\n }\n\n return builder.handle(request.payload);\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { ILine, IPoint, LineExtensions, PointExtensions } from '@foblex/2d';\nimport { Subject } from 'rxjs';\nimport { EFConnectionBehavior } from './e-f-connection-behavior';\nimport { EFConnectionType } from './e-f-connection-type';\nimport { IHasConnectionColor } from './i-has-connection-color';\nimport { IHasConnectionFromTo } from './i-has-connection-from-to';\nimport { IHasConnectionText } from './i-has-connection-text';\nimport { IConnectionPath } from './f-path';\nimport { IConnectionGradient } from './f-gradient';\nimport { FConnectionDragHandleComponent } from './f-drag-handle';\nimport { FConnectionSelectionComponent } from './f-selection';\nimport { IConnectionText } from './f-connection-text';\nimport { IHasStateChanges } from '../../i-has-state-changes';\nimport { FMarkerBase } from '../f-marker';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport {\n ICanChangeSelection, ICanChangeVisibility,\n mixinChangeSelection, mixinChangeVisibility\n} from '../../mixins';\n\nconst MIXIN_BASE = mixinChangeSelection(\n mixinChangeVisibility(\n class {\n constructor(\n public hostElement: HTMLElement\n ) {\n }\n }));\n\n@Directive()\nexport abstract class FConnectionBase extends MIXIN_BASE\n implements IHasHostElement, ICanChangeSelection,\n ICanChangeVisibility,\n IHasStateChanges, IHasConnectionColor,\n IHasConnectionFromTo, IHasConnectionText {\n\n public abstract override fId: string;\n\n public abstract fStartColor: string;\n\n public abstract fEndColor: string;\n\n public abstract fOutputId: string;\n\n public abstract fInputId: string;\n\n public abstract fRadius: number;\n\n public abstract fOffset: number;\n\n public path: string = '';\n\n public line: ILine = LineExtensions.initialize();\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract fDraggingDisabled: boolean;\n\n public abstract override fSelectionDisabled: boolean;\n\n public abstract boundingElement: HTMLElement | SVGElement;\n\n public abstract fBehavior: EFConnectionBehavior;\n\n public abstract fType: EFConnectionType;\n\n public abstract fDefs: ElementRef<SVGDefsElement>;\n\n public abstract fPath: IConnectionPath;\n\n public abstract fGradient: IConnectionGradient;\n\n public abstract fDragHandle: FConnectionDragHandleComponent;\n\n public abstract fSelection: FConnectionSelectionComponent;\n\n public abstract fTextComponent: IConnectionText;\n\n public abstract fText: string;\n\n public abstract fConnectionCenter: ElementRef<HTMLDivElement>;\n\n private penultimatePoint: IPoint = PointExtensions.initialize();\n\n protected constructor(\n elementReference: ElementRef<HTMLElement>,\n private cFactory: FConnectionFactory\n ) {\n super(elementReference.nativeElement);\n }\n\n public initialize(): void {\n this.fPath.initialize();\n this.fGradient.initialize();\n this.redraw();\n }\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return (this.hostElement.firstChild?.lastChild as HTMLElement).contains(element);\n }\n\n public setLine(source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide): void {\n this.line = LineExtensions.initialize(source, target);\n const pathResult = this.getPathResult(source, sourceSide, target, targetSide);\n this.path = pathResult.path;\n this.penultimatePoint = pathResult.penultimatePoint || source;\n this.fConnectionCenter?.nativeElement?.setAttribute('style', this.getTransform(pathResult.connectionCenter));\n }\n\n private getPathResult(source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide): any {\n const radius = this.fRadius > 0 ? this.fRadius : 0;\n const offset = this.fOffset > 0 ? this.fOffset : 1;\n return this.cFactory.handle(\n {\n type: this.fType,\n payload: { source, sourceSide, target, targetSide, radius, offset }\n }\n );\n }\n\n private getTransform(position: IPoint): string {\n return `position: absolute; pointerEvents: all; transform: translate(-50%, -50%); left: ${ position.x }px; top: ${ position.y }px`;\n }\n\n public override selectChild(): void {\n this.fPath.select();\n }\n\n public override deselectChild(): void {\n this.fPath.deselect();\n }\n\n public redraw(): void {\n this.fPath.setPath(this.path);\n this.fSelection.setPath(this.path);\n this.fGradient.redraw(this.line);\n this.fDragHandle.redraw(this.penultimatePoint, this.line.point2);\n this.fTextComponent.redraw(this.line);\n }\n}\n","export enum EFConnectionBehavior {\n\n FIXED = 'fixed',\n\n FIXED_CENTER = 'fixed_center',\n\n FLOATING = 'floating',\n}\n","export enum EFConnectionType {\n\n SEGMENT = 'segment',\n\n STRAIGHT = 'straight',\n\n BEZIER = 'bezier',\n}\n","import {\n Directive\n} from \"@angular/core\";\n\n@Directive({\n selector: \"[fConnectionCenter]\"\n})\nexport class FConnectionCenterDirective {\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ContentChildren, ElementRef, Input, OnDestroy, OnInit, QueryList, ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { FComponentsStore } from '../../f-storage';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection-for-create\",\n templateUrl: \"./f-connection-for-create.component.html\",\n styleUrls: [ \"./f-connection-for-create.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-connection-for-create\"\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionForCreateComponent } ],\n})\nexport class FConnectionForCreateComponent\n extends FConnectionBase implements AfterViewInit, OnInit, OnDestroy {\n\n public override fId: string = `f-connection-for-create-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n private _fRadius: number = 8;\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override set fBehavior(value: EFConnectionBehavior | string) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fType(): EFConnectionType {\n return this._type;\n }\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fTempConnection = this;\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.fTempConnection = undefined;\n }\n}\n","<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\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component, ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n OnInit, QueryList,\n ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH,\n CONNECTION_TEXT,\n FConnectionDragHandleComponent,\n FConnectionSelectionComponent,\n IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FComponentsStore } from '../../f-storage';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddConnectionToStoreRequest, RemoveConnectionFromStoreRequest } from '../../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection\",\n exportAs: 'fComponent',\n templateUrl: \"./f-connection.component.html\",\n styleUrls: [ \"./f-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'fId',\n class: \"f-component f-connection\",\n '[class.f-connection-selection-disabled]': 'fSelectionDisabled',\n '[class.f-connection-reassign-disabled]': 'fDraggingDisabled',\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionComponent } ],\n})\nexport class FConnectionComponent\n extends FConnectionBase implements OnInit, OnDestroy {\n\n @Input('fConnectionId')\n public override fId: string = `f-connection-${ uniqueId++ }`;\n\n private _fText: string = '';\n @Input()\n public override set fText(value: string) {\n this._fText = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fText(): string {\n return this._fText;\n }\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n private _fOutputId!: string;\n @Input()\n public override set fOutputId(value: string) {\n this._fOutputId = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOutputId(): string {\n return this._fOutputId;\n }\n\n private _fInputId!: string;\n @Input()\n public override set fInputId(value: string) {\n this._fInputId = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fInputId(): string {\n return this._fInputId;\n }\n\n private _fRadius: number = 8;\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n @Input()\n public override set fBehavior(value: string | EFConnectionBehavior) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = value as unknown as EFConnectionType; //castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fType(): EFConnectionType {\n return this._type;\n }\n\n @Input('fReassignDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input()\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fMediator.send(new AddConnectionToStoreRequest(this));\n }\n\n public ngOnDestroy(): void {\n this.fMediator.send(new RemoveConnectionFromStoreRequest(this));\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"overflow: visible; display: block; vertical-align: middle;\">\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 <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n","export enum EFMarkerType {\n\n START = 'f-connection-marker-start',\n\n END = 'f-connection-marker-end',\n\n SELECTED_START = 'f-connection-selected-marker-start',\n\n SELECTED_END = 'f-connection-selected-marker-end',\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../i-has-host-element';\n\nexport const F_MARKER = new InjectionToken('F_MARKER');\n\n@Directive()\nexport abstract class FMarkerBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract width: number;\n\n public abstract height: number;\n\n public abstract refX: number;\n\n public abstract refY: number;\n\n public abstract type: string;\n\n public abstract orient: 'auto' | 'auto-start-reverse' | string;\n\n public abstract markerUnits: 'strokeWidth' | 'userSpaceOnUse';\n}\n","import {\n Directive, ElementRef, Input, OnDestroy, OnInit\n} from \"@angular/core\";\nimport { F_MARKER, FMarkerBase } from './f-marker-base';\nimport { EFMarkerType } from './e-f-marker-type';\nimport { FComponentsStore } from '../../f-storage';\n\n@Directive({\n selector: \"svg[fMarker]\",\n host: {\n class: \"f-component f-marker\"\n },\n providers: [ { provide: F_MARKER, useExisting: FMarkerDirective } ],\n})\nexport class FMarkerDirective extends FMarkerBase implements OnInit, OnDestroy {\n\n @Input()\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override width: number = 0;\n\n @Input()\n public override height: number = 0;\n\n @Input()\n public override refX: number = 0;\n\n @Input()\n public override refY: number = 0;\n\n @Input()\n public override type: string = EFMarkerType.START;\n\n @Input()\n public override orient: 'auto' | 'auto-start-reverse' | 'calculated' | string = 'auto';\n\n @Input()\n public override markerUnits: 'strokeWidth' | 'userSpaceOnUse' = 'strokeWidth';\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private elementReference: ElementRef<HTMLElement>,\n ) {\n super();\n this.hostElement.style.display = 'none';\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.addComponent(this.fComponentsStore.fMarkers, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fMarkers, this);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ContentChildren, ElementRef, Input, OnDestroy, OnInit, QueryList, ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { FComponentsStore } from '../../f-storage';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-snap-connection\",\n templateUrl: \"./f-snap-connection.component.html\",\n styleUrls: [ \"./f-snap-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-snap-connection\"\n },\n providers: [ { provide: F_CONNECTION, useExisting: FSnapConnectionComponent } ],\n})\nexport class FSnapConnectionComponent\n extends FConnectionBase implements AfterViewInit, OnInit, OnDestroy {\n\n public override fId: string = `f-snap-connection-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n @Input()\n public fSnapThreshold: number = 20;\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n private _fRadius: number = 8;\n\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override set fBehavior(value: EFConnectionBehavior | string) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fType(): EFConnectionType {\n return this._type;\n }\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fSnapConnection = this;\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.fSnapConnection = undefined;\n }\n}\n","<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\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n","import {\n FConnectionDragHandleComponent,\n FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent,\n FConnectionTextComponent,\n FConnectionTextPathDirective\n} from './common';\nimport { FConnectionComponent } from './f-connection';\nimport { FConnectionCenterDirective } from './f-connection-center';\nimport { FConnectionForCreateComponent } from './f-connection-for-create';\nimport { FMarkerDirective } from './f-marker';\nimport { FSnapConnectionComponent } from './f-snap-connection';\n\nexport const F_CONNECTION_PROVIDERS = [\n\n FConnectionTextComponent,\n FConnectionTextPathDirective,\n FConnectionDragHandleComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent,\n FConnectionSelectionComponent,\n\n FConnectionComponent,\n FConnectionCenterDirective,\n FConnectionForCreateComponent,\n FMarkerDirective,\n FSnapConnectionComponent\n];\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionPreparationRequest } from './reassign-connection-preparation.request';\nimport { IPoint, ITransformModel, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { UpdateItemAndChildrenLayersRequest } from '../../../../domain';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS, FConnectionBase } from '../../../../f-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ReassignConnectionPreparationRequest)\nexport class ReassignConnectionPreparationExecution implements IExecution<ReassignConnectionPreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ReassignConnectionPreparationRequest): void {\n const connectionToReassign = this.getConnectionHandler(\n this.getDragHandleElement(request.event.getPosition())\n )!;\n if (connectionToReassign.fDraggingDisabled) {\n return;\n }\n\n this.fMediator.send<void>(\n new UpdateItemAndChildrenLayersRequest(\n connectionToReassign, this.fComponentsStore.fCanvas!.fConnectionsContainer.nativeElement\n )\n );\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n\n this.fDraggableDataContext.draggableItems = [\n new ReassignConnectionDragHandler(this.fMediator, this.fComponentsStore, connectionToReassign)\n ];\n }\n\n private getDragHandleElement(position: IPoint): HTMLElement {\n return this.getElementsFromPoint(position).filter((x) => {\n return !!this.getConnectionHandler(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\n }).find((x) => !!x)!;\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n public getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fConnections.find(c => c.isContains(element));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionPreparationRequest } from './reassign-connection-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS, FConnectionBase } from '../../../../f-connection';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IPoint } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FValidatorRegister(ReassignConnectionPreparationRequest)\nexport class ReassignConnectionPreparationValidator implements IValidator<ReassignConnectionPreparationRequest> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ReassignConnectionPreparationRequest): boolean {\n return !!this.getDragHandleElements(request.event.getPosition()).length\n && !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getDragHandleElements(position: IPoint): HTMLElement[] {\n return this.getElementsFromPoint(position).filter((x) => {\n return !!this.getConnectionHandler(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\n });\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n public getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fConnections.find(c => c.isContains(element));\n }\n}\n","import {\n CreateConnectionDragHandlerExecution,\n CreateConnectionFinalizeExecution,\n CreateConnectionFinalizeValidator,\n CreateConnectionFromOutletPreparationExecution,\n CreateConnectionFromOutputPreparationExecution,\n CreateConnectionFromOutputPreparationValidator,\n CreateConnectionPreparationExecution,\n CreateConnectionPreparationValidator,\n GetCanBeConnectedOutputByOutletExecution,\n GetCanBeConnectedOutputByOutletValidator\n} from './create-connection';\nimport {\n ReassignConnectionFinalizeExecution,\n ReassignConnectionFinalizeValidator,\n ReassignConnectionPreparationExecution, ReassignConnectionPreparationValidator,\n} from './reassign-connection';\nimport { GetInputUnderPointerExecution, GetInputUnderPointerValidator } from './get-input-under-pointer';\n\nexport const CONNECTIONS_PROVIDERS = [\n\n GetInputUnderPointerExecution,\n\n GetInputUnderPointerValidator,\n\n CreateConnectionFinalizeExecution,\n\n CreateConnectionFinalizeValidator,\n\n CreateConnectionDragHandlerExecution,\n\n CreateConnectionFromOutletPreparationExecution,\n\n GetCanBeConnectedOutputByOutletExecution,\n\n GetCanBeConnectedOutputByOutletValidator,\n\n CreateConnectionFromOutputPreparationExecution,\n\n CreateConnectionFromOutputPreparationValidator,\n\n CreateConnectionPreparationExecution,\n\n CreateConnectionPreparationValidator,\n\n ReassignConnectionFinalizeExecution,\n\n ReassignConnectionFinalizeValidator,\n\n ReassignConnectionPreparationExecution,\n\n ReassignConnectionPreparationValidator,\n];\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNodePaddingRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodePaddingRequest } from './get-node-padding.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(GetNodePaddingRequest)\nexport class GetNodePaddingExecution\n implements IExecution<GetNodePaddingRequest, [ number, number, number, number ]> {\n\n constructor(\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: GetNodePaddingRequest): [ number, number, number, number ] {\n return request.fNode.fIncludePadding ? this.getPaddingData(request.fNode, request.rect) : [ 0, 0, 0, 0 ];\n }\n\n private getPaddingData(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n const style = this.fBrowser.window.getComputedStyle(node.hostElement);\n return [\n this.fBrowser.toPixels(style.paddingLeft, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingTop, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingRight, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingBottom, rect.width, rect.height, style.fontSize)\n ];\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedNodeRectRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedNodeRectRequest } from './get-normalized-node-rect.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedNodeRectRequest)\nexport class GetNormalizedNodeRectExecution\n implements IExecution<GetNormalizedNodeRectRequest, IRect> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetNormalizedNodeRectRequest): IRect {\n return this.normalizeRect(RectExtensions.fromElement(request.fNode.hostElement), request.fNode.position);\n }\n\n private normalizeRect(scaledRect: IRect, position: IPoint): IRect {\n const rect = RectExtensions.div(scaledRect, this.fComponentsStore.fCanvas!.transform.scale);\n\n return RectExtensions.initialize(position.x, position.y, rect.width, rect.height);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedParentNodeRectRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedParentNodeRectRequest } from './get-normalized-parent-node-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { GetNormalizedNodeRectRequest } from '../get-normalized-node-rect';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { GetNodePaddingRequest } from '../get-node-padding';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedParentNodeRectRequest)\nexport class GetNormalizedParentNodeRectExecution\n implements IExecution<GetNormalizedParentNodeRectRequest, IRect> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNormalizedParentNodeRectRequest): IRect {\n let result = RectExtensions.initialize(-Infinity, -Infinity, Infinity, Infinity);\n const parentNode = this.getNode(request.fNode.fParentId);\n if (parentNode) {\n result = this.getParentRect(parentNode);\n }\n return result;\n }\n\n private getNode(fId?: string | null): FNodeBase | undefined {\n return this.fComponentsStore.fNodes.find((x) => x.fId === fId);\n }\n\n private getParentRect(node: FNodeBase): IRect {\n const rect = this.getNormalizedNodeRect(node);\n const padding = this.getNodePadding(node, rect);\n return RectExtensions.initialize(\n rect.x + padding[0],\n rect.y + padding[1],\n rect.width - padding[0] - padding[2],\n rect.height - padding[1] - padding[3]\n );\n }\n\n private getNormalizedNodeRect(node: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(node));\n }\n\n private getNodePadding(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this.fMediator.send<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetParentNodesRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetParentNodesRequest } from './get-parent-nodes.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetParentNodesRequest)\nexport class GetParentNodesExecution\n implements IExecution<GetParentNodesRequest, FNodeBase[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetParentNodesRequest): FNodeBase[] {\n return this.getParentNodes(request.fNode, new Set<string>(), []);\n }\n\n private getParentNodes(fNode: FNodeBase, visited: Set<string>, result: FNodeBase[]): FNodeBase[] {\n if (visited.has(fNode.fId)) {\n throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fNode.fId);\n }\n visited.add(fNode.fId);\n\n const parent = this.fComponentsStore.fNodes.find((x) => x.fId === fNode.fParentId);\n if (!parent) {\n return result;\n }\n\n result.push(parent);\n return this.getParentNodes(parent, visited, result);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class IsArrayHasParentNodeRequest {\n\n constructor(\n public fNode: FNodeBase,\n public fNodes: FNodeBase[]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IsArrayHasParentNodeRequest } from './is-array-has-parent-node.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { GetParentNodesRequest } from '../get-parent-nodes';\n\n@Injectable()\n@FExecutionRegister(IsArrayHasParentNodeRequest)\nexport class IsArrayHasParentNodeExecution\n implements IExecution<IsArrayHasParentNodeRequest, boolean> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: IsArrayHasParentNodeRequest): boolean {\n return this.isParentNodeInArray(this.getParentNodeIds(request.fNode), request.fNodes);\n }\n\n private getParentNodeIds(fNode: FNodeBase): string[] {\n return this.getParentNodes(fNode).map((x) => x.fId);\n }\n\n private getParentNodes(fNode: FNodeBase): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetParentNodesRequest(fNode));\n }\n\n private isParentNodeInArray(parentNodeIds: string[], fNodes: FNodeBase[]): boolean {\n return fNodes.some((x) => parentNodeIds.includes(x.fId));\n }\n}\n\n\n","import { GetNormalizedNodeRectExecution } from './get-normalized-node-rect';\nimport { GetParentNodesExecution } from './get-parent-nodes';\nimport { IsArrayHasParentNodeExecution } from './is-array-has-parent-node';\nimport { GetNormalizedParentNodeRectExecution } from './get-normalized-parent-node-rect';\nimport { GetNodePaddingExecution } from './get-node-padding';\n\nexport const DRAG_AND_DROP_COMMON_PROVIDERS = [\n\n GetNodePaddingExecution,\n\n GetNormalizedNodeRectExecution,\n\n GetNormalizedParentNodeRectExecution,\n\n GetParentNodesExecution,\n\n IsArrayHasParentNodeExecution\n];\n","import { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\n\nexport class PutInputConnectionHandlersToArrayRequest {\n\n constructor(\n public nodeDragHandler: NodeDragHandler,\n public outputIds: string[],\n public result: IDraggableItem[]\n ) {\n }\n}\n","import { IDraggableItem } from '../i-draggable-item';\nimport { FConnectionBase } from '../../f-connection';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { Directive } from '@angular/core';\nimport { INodeMoveRestrictions } from './create-move-nodes-drag-model-from-selection';\nimport { ILine, IPoint } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetConnectorWithRectRequest, IConnectorWithRect } from '../../domain';\n\n@Directive()\nexport abstract class ConnectionBaseDragHandler implements IDraggableItem {\n\n protected fOutputWithRect!: IConnectorWithRect;\n protected fInputWithRect!: IConnectorWithRect;\n\n protected constructor(\n protected fMediator: FMediator,\n protected fComponentsStore: FComponentsStore,\n public connection: FConnectionBase,\n ) {\n }\n\n public initialize(): void {\n this.fOutputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getOutput()));\n this.fInputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getInput()));\n }\n\n private getOutput(): FConnectorBase {\n return this.fComponentsStore.fOutputs.find((x) => x.id === this.connection.fOutputId)!;\n }\n\n private getInput(): FConnectorBase {\n return this.fComponentsStore.fInputs.find((x) => x.id === this.connection.fInputId)!\n }\n\n public abstract move(difference: IPoint): void;\n\n protected getDifference(difference: IPoint, restrictions: INodeMoveRestrictions): IPoint {\n return {\n x: Math.min(Math.max(difference.x, restrictions.min.x), restrictions.max.x),\n y: Math.min(Math.max(difference.y, restrictions.min.y), restrictions.max.y)\n }\n }\n\n protected redrawConnection(line: ILine): void {\n this.connection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, this.fInputWithRect.fConnector.fConnectableSide);\n this.connection.redraw();\n }\n}\n","import { ILine, IPoint, RoundedRect } from '@foblex/2d';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport {\n GetConnectionLineRequest,\n} from '../../domain';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { INodeMoveRestrictions } from './create-move-nodes-drag-model-from-selection';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionDragHandler extends ConnectionBaseDragHandler {\n\n private sourceRestrictions!: INodeMoveRestrictions;\n private targetRestrictions!: INodeMoveRestrictions;\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public setOutputRestrictions(min: IPoint, max: IPoint) {\n this.sourceRestrictions = { min, max };\n }\n\n public setInputRestrictions(min: IPoint, max: IPoint) {\n this.targetRestrictions = { min, max };\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n RoundedRect.fromRoundedRect(this.fOutputWithRect.fRect).addPoint(this.getDifference({ ...difference }, this.sourceRestrictions)),\n RoundedRect.fromRoundedRect(this.fInputWithRect.fRect).addPoint(this.getDifference({ ...difference }, this.targetRestrictions)),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { ILine, IPoint, RoundedRect } from '@foblex/2d';\nimport {\n GetConnectionLineRequest,\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionTargetDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n public minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n RoundedRect.fromRoundedRect(this.fOutputWithRect.fRect),\n RoundedRect.fromRoundedRect(this.fInputWithRect.fRect).addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PutInputConnectionHandlersToArrayRequest } from './put-input-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\nimport { ConnectionDragHandler } from '../../../connection.drag-handler';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { FConnectionBase } from '../../../../../f-connection';\nimport { ConnectionTargetDragHandler } from '../../../connection-target.drag-handler';\n\n@Injectable()\n@FExecutionRegister(PutInputConnectionHandlersToArrayRequest)\nexport class PutInputConnectionHandlersToArrayExecution\n implements IExecution<PutInputConnectionHandlersToArrayRequest, void> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: PutInputConnectionHandlersToArrayRequest): void {\n this.getInputConnections(request.nodeDragHandler.fNode).forEach((connection) => {\n const index = this.getExistingConnectionHandlerIndex(request.result, connection);\n if (index !== -1) {\n this.updateExistingConnectionHandler(request.result, index, request.nodeDragHandler);\n } else {\n request.result.push(this.createNewConnectionHandler(request.nodeDragHandler, request.outputIds, connection));\n }\n });\n }\n\n public getInputConnections(node: FNodeBase): FConnectionBase[] {\n const inputIds = new Set(this.getInputsForNode(node).map((x) => x.id));\n return this.fConnections.filter((x) => inputIds.has(x.fInputId));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getExistingConnectionHandlerIndex(result: IDraggableItem[], connection: FConnectionBase): number {\n return result.findIndex(\n (x) => x instanceof ConnectionDragHandler && x.connection.fId === connection.fId\n );\n }\n\n private createNewConnectionHandler(nodeDragHandler: NodeDragHandler, outputIds: string[], connection: FConnectionBase): IDraggableItem {\n let result: IDraggableItem;\n if (outputIds.includes(connection.fOutputId)) {\n result = this.getNewConnectionHandler(connection, nodeDragHandler);\n } else {\n result = this.getNewSourceConnectionHandler(connection, nodeDragHandler);\n }\n return result;\n }\n\n private getNewConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionDragHandler {\n const handler = new ConnectionDragHandler(this.fMediator, this.fComponentsStore, connection);\n handler.setInputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n return handler;\n }\n\n private updateExistingConnectionHandler(result: IDraggableItem[], index: number, nodeDragHandler: NodeDragHandler): void {\n (result[ index ] as ConnectionDragHandler).setInputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n\n private getNewSourceConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionTargetDragHandler {\n return new ConnectionTargetDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n}\n\n","import { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\n\nexport class PutOutputConnectionHandlersToArrayRequest {\n\n constructor(\n public nodeDragHandler: NodeDragHandler,\n public inputIds: string[],\n public result: IDraggableItem[]\n ) {\n }\n}\n","import { ILine, IPoint, RoundedRect } from '@foblex/2d';\nimport {\n GetConnectionLineRequest\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionSourceDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n public minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n RoundedRect.fromRoundedRect(this.fOutputWithRect.fRect).addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n RoundedRect.fromRoundedRect(this.fInputWithRect.fRect),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PutOutputConnectionHandlersToArrayRequest } from './put-output-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\nimport { ConnectionDragHandler } from '../../../connection.drag-handler';\nimport { ConnectionSourceDragHandler } from '../../../connection-source.drag-handler';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { FConnectionBase } from '../../../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(PutOutputConnectionHandlersToArrayRequest)\nexport class PutOutputConnectionHandlersToArrayExecution\n implements IExecution<PutOutputConnectionHandlersToArrayRequest, void> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: PutOutputConnectionHandlersToArrayRequest): void {\n this.getOutputConnections(request.nodeDragHandler.fNode).forEach((connection) => {\n const index = this.getExistingConnectionHandlerIndex(request.result, connection);\n if (index !== -1) {\n this.updateExistingConnectionHandler(request.result, index, request.nodeDragHandler);\n } else {\n request.result.push(this.createNewConnectionHandler(request.nodeDragHandler, request.inputIds, connection));\n }\n });\n }\n\n public getOutputConnections(node: FNodeBase): FConnectionBase[] {\n const outputsIds = new Set(this.getOutputsForNode(node).map((x) => x.id));\n return this.fConnections.filter((x) => outputsIds.has(x.fOutputId));\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getExistingConnectionHandlerIndex(result: IDraggableItem[], connection: FConnectionBase): number {\n return result.findIndex(\n (x) => x instanceof ConnectionDragHandler && x.connection.fId === connection.fId\n );\n }\n\n private createNewConnectionHandler(nodeDragHandler: NodeDragHandler, inputIds: string[], connection: FConnectionBase): IDraggableItem {\n let result: IDraggableItem;\n if (inputIds.includes(connection.fInputId)) {\n result = this.getNewConnectionHandler(connection, nodeDragHandler);\n } else {\n result = this.getNewSourceConnectionHandler(connection, nodeDragHandler);\n }\n return result;\n }\n\n private getNewConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionDragHandler {\n const handler = new ConnectionDragHandler(this.fMediator, this.fComponentsStore, connection);\n handler.setOutputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n return handler;\n }\n\n private updateExistingConnectionHandler(result: IDraggableItem[], index: number, nodeDragHandler: NodeDragHandler): void {\n (result[ index ] as ConnectionDragHandler).setOutputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n\n private getNewSourceConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionSourceDragHandler {\n return new ConnectionSourceDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n}\n\n","import { FNodeBase } from '../../../../../f-node';\n\nexport class GetNodeMoveRestrictionsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public hasParentNodeInSelected: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodeMoveRestrictionsRequest } from './get-node-move-restrictions.request';\nimport { IRect, PointExtensions } from '@foblex/2d';\nimport { INodeMoveRestrictions } from './i-node-move-restrictions';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNormalizedNodeRectRequest, GetNormalizedParentNodeRectRequest } from '../../../../domain';\nimport { FNodeBase } from '../../../../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetNodeMoveRestrictionsRequest)\nexport class GetNodeMoveRestrictionsExecution\n implements IExecution<GetNodeMoveRestrictionsRequest, INodeMoveRestrictions> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNodeMoveRestrictionsRequest): INodeMoveRestrictions {\n if (request.fNode.fParentId && !request.hasParentNodeInSelected) {\n const fParentNodeRect = this.getParentNodeRect(request.fNode);\n const fCurrentNodeRect = this.getCurrentNodeRect(request.fNode);\n return {\n min: PointExtensions.initialize(fParentNodeRect.x - fCurrentNodeRect.x, fParentNodeRect.y - fCurrentNodeRect.y),\n max: PointExtensions.initialize(\n (fParentNodeRect.x + fParentNodeRect.width) - (fCurrentNodeRect.x + fCurrentNodeRect.width),\n (fParentNodeRect.y + fParentNodeRect.height) - (fCurrentNodeRect.y + fCurrentNodeRect.height),\n )\n };\n }\n return { ...DEFAULT_RESTRICTIONS };\n }\n\n private getCurrentNodeRect(fNode: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(fNode));\n }\n\n private getParentNodeRect(fNode: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedParentNodeRectRequest(fNode));\n }\n}\n\nconst DEFAULT_RESTRICTIONS: INodeMoveRestrictions = {\n min: PointExtensions.initialize(-Infinity, -Infinity),\n max: PointExtensions.initialize(Infinity, Infinity)\n};\n","export class CreateMoveNodesDragModelFromSelectionRequest {\n\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { FNodeBase } from '../../f-node';\nimport {\n INodeMoveRestrictions\n} from './create-move-nodes-drag-model-from-selection';\n\nexport class NodeDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n public fNode: FNodeBase,\n public minDistance: IPoint,\n public maxDistance: IPoint,\n ) {\n this.onPointerDownPosition = { ...fNode.position };\n }\n\n public move(difference: IPoint): void {\n const restrictedDifference = this.getDifference(difference, { min: this.minDistance, max: this.maxDistance });\n\n this.redrawNode(this.getNewPosition(restrictedDifference));\n this.fDraggableDataContext.fLineAlignment?.handle(restrictedDifference);\n }\n\n private getNewPosition(difference: IPoint): IPoint {\n return Point.fromPoint(this.onPointerDownPosition).add(difference);\n }\n\n private getDifference(difference: IPoint, restrictions: INodeMoveRestrictions): IPoint {\n return {\n x: Math.min(Math.max(difference.x, restrictions.min.x), restrictions.max.x),\n y: Math.min(Math.max(difference.y, restrictions.min.y), restrictions.max.y)\n }\n }\n\n private redrawNode(position: IPoint): void {\n this.fNode.updatePosition(position);\n this.fNode.redraw();\n }\n\n public complete(): void {\n this.fNode.positionChange.emit(this.fNode.position);\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n//TODO: Implement this class\nexport class NodeResizeByChildDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n\n }\n\n\n public move(difference: IPoint): void {\n\n }\n\n public complete(): void {\n\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from './create-move-nodes-drag-model-from-selection.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { NodeDragHandler } from '../node.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { INodeWithDistanceRestrictions } from './i-node-with-distance-restrictions';\nimport { GetNodeMoveRestrictionsRequest, INodeMoveRestrictions } from './domain/get-node-move-restrictions';\nimport { PutOutputConnectionHandlersToArrayRequest } from './domain/put-output-connection-handlers-to-array';\nimport {\n PutInputConnectionHandlersToArrayRequest\n} from './domain/put-input-connection-handlers-to-array';\nimport { NodeResizeByChildDragHandler } from '../node-resize-by-child.drag-handler';\nimport { GetParentNodesRequest, IsArrayHasParentNodeRequest } from '../../domain';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../../domain';\nimport { flatMap } from '@foblex/utils';\n\n@Injectable()\n@FExecutionRegister(CreateMoveNodesDragModelFromSelectionRequest)\nexport class CreateMoveNodesDragModelFromSelectionExecution\n implements IExecution<CreateMoveNodesDragModelFromSelectionRequest, IDraggableItem[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: CreateMoveNodesDragModelFromSelectionRequest): IDraggableItem[] {\n const itemsToDrag = this.getNodesWithRestrictions(this.getSelectedNodes());\n return this.getDragHandlersWithConnections(\n this.getDragHandlersFromNodes(itemsToDrag),\n this.getAllOutputIds(itemsToDrag),\n this.getAllInputIds(itemsToDrag)\n );\n }\n\n private getSelectedNodes(): FNodeBase[] {\n return this.fDraggableDataContext.selectedItems\n .map((x) => this.fComponentsStore.findNode(x.hostElement))\n .filter((x): x is FNodeBase => !!x);\n }\n\n private getNodesWithRestrictions(selectedNodes: FNodeBase[]): INodeWithDistanceRestrictions[] {\n const result: INodeWithDistanceRestrictions[] = [];\n\n selectedNodes.forEach((x) => {\n const hasParentNodeInSelected = this.fMediator.send<boolean>(new IsArrayHasParentNodeRequest(x, selectedNodes));\n const restrictions = this.fMediator.send<INodeMoveRestrictions>(new GetNodeMoveRestrictionsRequest(x, hasParentNodeInSelected));\n const parentNodes = this.fMediator.send<FNodeBase[]>(new GetParentNodesRequest(x));\n result.push({ node: x, parentNodes, ...restrictions }, ...this.getChildrenItemsToDrag(x, restrictions));\n });\n\n return result;\n }\n\n private getChildrenItemsToDrag(node: FNodeBase, restrictions: INodeMoveRestrictions): INodeWithDistanceRestrictions[] {\n return this.getChildrenNodes(node.fId).map((x) => ({ node: x, ...restrictions }));\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private getAllOutputIds(items: INodeWithDistanceRestrictions[]): string[] {\n return flatMap(items, (item: INodeWithDistanceRestrictions) => this.getOutputsForNode(item.node).map((x) => x.id));\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getAllInputIds(items: INodeWithDistanceRestrictions[]): string[] {\n return flatMap(items, (item: INodeWithDistanceRestrictions) => this.getInputsForNode(item.node).map((x) => x.id));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getDragHandlersFromNodes(items: INodeWithDistanceRestrictions[]): IDraggableItem[] {\n let result: IDraggableItem[] = [];\n\n items.forEach((node) => {\n result.push(\n new NodeDragHandler(this.fDraggableDataContext, node.node, node.min, node.max),\n ...(node.parentNodes || []).map((parent) => new NodeResizeByChildDragHandler(this.fDraggableDataContext))\n );\n });\n return result;\n }\n\n private getDragHandlersWithConnections(\n handlers: IDraggableItem[], outputIds: string[], inputIds: string[]\n ): IDraggableItem[] {\n let result: IDraggableItem[] = handlers;\n handlers.filter((x) => x instanceof NodeDragHandler).forEach((dragHandler) => {\n this.fMediator.send(new PutOutputConnectionHandlersToArrayRequest(dragHandler as NodeDragHandler, inputIds, result));\n this.fMediator.send(new PutInputConnectionHandlersToArrayRequest(dragHandler as NodeDragHandler, outputIds, result));\n });\n return result;\n }\n}\n","import { CreateMoveNodesDragModelFromSelectionExecution } from './create-move-nodes-drag-model-from-selection.execution';\nimport { GetNodeMoveRestrictionsExecution } from './domain/get-node-move-restrictions';\nimport { PutInputConnectionHandlersToArrayExecution } from './domain/put-input-connection-handlers-to-array';\nimport { PutOutputConnectionHandlersToArrayExecution } from './domain/put-output-connection-handlers-to-array';\n\nexport const CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS = [\n\n GetNodeMoveRestrictionsExecution,\n\n PutInputConnectionHandlersToArrayExecution,\n\n PutOutputConnectionHandlersToArrayExecution,\n\n CreateMoveNodesDragModelFromSelectionExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMovePreparationRequest } from './node-move-preparation.request';\nimport { ITransformModel, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { NodeDragHandler } from '../node.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from '../create-move-nodes-drag-model-from-selection';\nimport { SelectAndUpdateNodeLayerRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(NodeMovePreparationRequest)\nexport class NodeMovePreparationExecution implements IExecution<NodeMovePreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: NodeMovePreparationRequest): void {\n this.selectAndUpdateNodeLayer(request.event.targetElement);\n\n const itemsToDrag: IDraggableItem[] = this.createDragModelFromSelection();\n\n this.initializeLineAlignment(this.filterNodesFromDraggableItems(itemsToDrag));\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.draggableItems = itemsToDrag;\n }\n\n private selectAndUpdateNodeLayer(targetElement: HTMLElement) {\n this.fMediator.send(\n new SelectAndUpdateNodeLayerRequest(this.getNode(targetElement))\n );\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase {\n return this.fComponentsStore.findNode(targetElement)!;\n }\n\n private createDragModelFromSelection(): IDraggableItem[] {\n return this.fMediator.send(new CreateMoveNodesDragModelFromSelectionRequest());\n }\n\n private initializeLineAlignment(nodesToDrag: FNodeBase[]): void {\n this.fDraggableDataContext.fLineAlignment?.initialize(\n this.fComponentsStore.fNodes,\n nodesToDrag\n );\n }\n\n private filterNodesFromDraggableItems(items: IDraggableItem[]): FNodeBase[] {\n return items.filter((x) => x instanceof NodeDragHandler).map(x => (x as NodeDragHandler).fNode);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMovePreparationRequest } from './node-move-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\nimport { isClosestElementHasClass } from '@foblex/utils';\n\n@Injectable()\n@FValidatorRegister(NodeMovePreparationRequest)\nexport class NodeMovePreparationValidator implements IValidator<NodeMovePreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeMovePreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isDragHandleElement(request.event.targetElement)\n && this.isNodeCanBeDragged(this.getNode(request.event.targetElement));\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n return this.fComponentsStore.findNode(targetElement);\n }\n\n private isNodeCanBeDragged(node: FNodeBase | undefined): boolean {\n return !!node && !node.fDraggingDisabled;\n }\n\n private isDragHandleElement(targetElement: HTMLElement): boolean {\n return isClosestElementHasClass(targetElement, '.f-drag-handle');\n }\n}\n","import { NodeMovePreparationExecution } from './node-move-preparation.execution';\nimport { NodeMovePreparationValidator } from './node-move-preparation.validator';\n\nexport const NODE_MOVE_PREPARATION_PROVIDERS = [\n\n NodeMovePreparationExecution,\n\n NodeMovePreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export class IsConnectionUnderNodeRequest {\n\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMoveFinalizeRequest } from './node-move-finalize.request';\nimport { IPoint, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n IsConnectionUnderNodeRequest\n} from '../../../domain/is-connection-under-node/is-connection-under-node.request';\n\n@Injectable()\n@FExecutionRegister(NodeMoveFinalizeRequest)\nexport class NodeMoveFinalizeExecution implements IExecution<NodeMoveFinalizeRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: NodeMoveFinalizeRequest): void {\n const difference = this.getDifferenceWithLineAlignment(\n this.getDifferenceBetweenPreparationAndFinalize(request.event.getPosition())\n );\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.move({ ...difference });\n x.complete?.();\n });\n this.fMediator.send(new IsConnectionUnderNodeRequest());\n this.fDraggableDataContext.fLineAlignment?.complete();\n }\n\n private getDifferenceBetweenPreparationAndFinalize(position: IPoint): Point {\n return Point.fromPoint(position).elementTransform(this.flowHost)\n .div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n }\n\n private getDifferenceWithLineAlignment(difference: IPoint): IPoint {\n const intersection = this.fDraggableDataContext.fLineAlignment?.findNearestCoordinate(difference);\n if (intersection) {\n difference.x = intersection.xResult.value ? (difference.x - intersection.xResult.distance!) : difference.x;\n difference.y = intersection.yResult.value ? (difference.y - intersection.yResult.distance!) : difference.y;\n }\n return difference;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMoveFinalizeRequest } from './node-move-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeDragHandler } from '../node.drag-handler';\n\n@Injectable()\n@FValidatorRegister(NodeMoveFinalizeRequest)\nexport class NodeMoveFinalizeValidator implements IValidator<NodeMoveFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeMoveFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) => x instanceof NodeDragHandler);\n }\n}\n","import { NodeMoveFinalizeExecution } from './node-move-finalize.execution';\nimport { NodeMoveFinalizeValidator } from './node-move-finalize.validator';\n\nexport const NODE_MOVE_FINALIZE_PROVIDERS = [\n\n NodeMoveFinalizeExecution,\n\n NodeMoveFinalizeValidator,\n];\n","import { CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS } from './create-move-nodes-drag-model-from-selection';\nimport { NODE_MOVE_FINALIZE_PROVIDERS } from './node-move-finalize';\nimport { NODE_MOVE_PREPARATION_PROVIDERS } from './node-move-preparation';\n\nexport const NODE_PROVIDERS = [\n\n ...CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS,\n\n ...NODE_MOVE_FINALIZE_PROVIDERS,\n\n ...NODE_MOVE_PREPARATION_PROVIDERS,\n];\n","import { IRect } from '@foblex/2d';\n\nexport class ApplyChildResizeRestrictionsRequest {\n\n constructor(\n public rect: IRect,\n public restrictionsRect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplyChildResizeRestrictionsRequest } from './apply-child-resize-restrictions.request';\nimport { IRect } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\nconst OFFSET = 0;\n\n@Injectable()\n@FExecutionRegister(ApplyChildResizeRestrictionsRequest)\nexport class ApplyChildResizeRestrictionsExecution\n implements IExecution<ApplyChildResizeRestrictionsRequest, void> {\n\n public handle(request: ApplyChildResizeRestrictionsRequest): void {\n this.applyRestrictions(request.rect, request.restrictionsRect);\n }\n\n private applyRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.left(rect, restrictionsRect);\n this.top(rect, restrictionsRect);\n this.right(rect, restrictionsRect);\n this.bottom(rect, restrictionsRect);\n }\n\n private left(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x > restrictionsRect.x - OFFSET) {\n rect.width += rect.x - restrictionsRect.x - OFFSET;\n rect.x = restrictionsRect.x - OFFSET;\n }\n }\n\n private top(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y > restrictionsRect.y - OFFSET) {\n rect.height += rect.y - restrictionsRect.y - OFFSET;\n rect.y = restrictionsRect.y - OFFSET;\n }\n }\n\n private right(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x + rect.width <= restrictionsRect.x + restrictionsRect.width + OFFSET) {\n rect.width = restrictionsRect.x + restrictionsRect.width - rect.x + OFFSET;\n }\n }\n\n private bottom(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y + rect.height <= restrictionsRect.y + restrictionsRect.height + OFFSET) {\n rect.height = restrictionsRect.y + restrictionsRect.height - rect.y + OFFSET;\n }\n }\n}\n","import { IRect } from '@foblex/2d';\n\nexport class ApplyParentResizeRestrictionsRequest {\n\n constructor(\n public rect: IRect,\n public restrictionsRect: IRect,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplyParentResizeRestrictionsRequest } from './apply-parent-resize-restrictions.request';\nimport { IRect } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\nconst OFFSET = 0;\n\n@Injectable()\n@FExecutionRegister(ApplyParentResizeRestrictionsRequest)\nexport class ApplyParentResizeRestrictionsExecution\n implements IExecution<ApplyParentResizeRestrictionsRequest, void> {\n\n public handle(request: ApplyParentResizeRestrictionsRequest): void {\n this.applyRestrictions(request.rect, request.restrictionsRect);\n }\n\n private applyRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.left(rect, restrictionsRect);\n this.top(rect, restrictionsRect);\n this.right(rect, restrictionsRect);\n this.bottom(rect, restrictionsRect);\n }\n\n private left(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x <= restrictionsRect.x + OFFSET) {\n rect.width -= restrictionsRect.x - rect.x + OFFSET;\n rect.x = restrictionsRect.x + OFFSET;\n }\n }\n\n private top(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y <= restrictionsRect.y + OFFSET) {\n rect.height -= restrictionsRect.y - rect.y + OFFSET;\n rect.y = restrictionsRect.y + OFFSET;\n }\n }\n\n private right(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x + rect.width > restrictionsRect.x + restrictionsRect.width - OFFSET) {\n rect.width = restrictionsRect.x + restrictionsRect.width - rect.x - OFFSET;\n }\n }\n\n private bottom(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y + rect.height > restrictionsRect.y + restrictionsRect.height - OFFSET) {\n rect.height = restrictionsRect.y + restrictionsRect.height - rect.y - OFFSET;\n }\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { EFResizeHandleType } from '../../../f-node';\n\nexport class CalculateChangedPositionRequest {\n\n constructor(\n public originalRect: IRect,\n public changedRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { EFResizeHandleType } from '../../f-node';\n\nexport const RESIZE_DIRECTIONS = {\n\n [ EFResizeHandleType.LEFT_TOP ]: { x: -1, y: -1 },\n\n [ EFResizeHandleType.RIGHT_TOP ]: { x: 1, y: -1 },\n\n [ EFResizeHandleType.RIGHT_BOTTOM ]: { x: 1, y: 1 },\n\n [ EFResizeHandleType.LEFT_BOTTOM ]: { x: -1, y: 1 },\n};\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedPositionRequest } from './calculate-changed-position.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedPositionRequest)\nexport class CalculateChangedPositionExecution\n implements IExecution<CalculateChangedPositionRequest, IRect> {\n\n public handle(request: CalculateChangedPositionRequest): IRect {\n return this.change(request.originalRect, request.difference, RESIZE_DIRECTIONS[request.fResizeHandleType], request.changedRect);\n }\n\n private change(originalRect: IRect, difference: IPoint, direction: IPoint, changedRect: IRect): IRect {\n return RectExtensions.initialize(\n originalRect.x + (direction.x === -1 ? difference.x : 0) + changedRect.x,\n originalRect.y + (direction.y === -1 ? difference.y : 0) + changedRect.y,\n changedRect.width,\n changedRect.height\n );\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { EFResizeHandleType } from '../../../f-node';\n\nexport class CalculateChangedSizeRequest {\n\n constructor(\n public originalRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedSizeRequest)\nexport class CalculateChangedSizeExecution\n implements IExecution<CalculateChangedSizeRequest, IRect> {\n\n public handle(request: CalculateChangedSizeRequest): IRect {\n return this.change(\n request.originalRect,\n request.difference,\n RESIZE_DIRECTIONS[request.fResizeHandleType],\n );\n }\n\n private change(rect: IRect, difference: IPoint, direction: IPoint): IRect {\n const result = RectExtensions.initialize(\n 0, 0,\n rect.width + direction.x * difference.x,\n rect.height + direction.y * difference.y\n );\n\n\n if (result.width < 0) {\n result.x = result.width;\n result.width = Math.abs(result.width);\n }\n\n if (result.height < 0) {\n result.y = result.height;\n result.height = Math.abs(result.height);\n }\n\n return RectExtensions.copy(result);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedChildrenNodesRectRequest {\n\n constructor(\n public fNode: FNodeBase,\n public paddings: [ number, number, number, number ]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedChildrenNodesRectRequest } from './get-normalized-children-nodes-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { GetNormalizedNodeRectRequest } from '../../domain';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedChildrenNodesRectRequest)\nexport class GetNormalizedChildrenNodesRectExecution\n implements IExecution<GetNormalizedChildrenNodesRectRequest, IRect | null> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNormalizedChildrenNodesRectRequest): IRect | null {\n const childNodeRect = RectExtensions.union(\n this.getChildrenNodes(request.fNode.fId).map((x) => this.normalizeRect(x))\n );\n return childNodeRect ?\n this.concatRectWithParentPadding(childNodeRect, request.paddings) : null;\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private normalizeRect(node: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(node));\n }\n\n private concatRectWithParentPadding(rect: IRect, padding: [ number, number, number, number ]): IRect {\n return RectExtensions.initialize(\n rect.x - padding[0],\n rect.y - padding[1],\n rect.width + padding[0] + padding[2],\n rect.height + + padding[1] + padding[3]\n );\n }\n}\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNodeResizeRestrictionsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodeResizeRestrictionsRequest } from './get-node-resize-restrictions.request';\nimport { IRect, SizeExtensions } from '@foblex/2d';\nimport { INodeResizeRestrictions } from './i-node-resize-restrictions';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNodePaddingRequest, GetNormalizedParentNodeRectRequest } from '../../domain';\nimport { GetNormalizedChildrenNodesRectRequest } from '../get-normalized-children-nodes-rect';\nimport { FNodeBase } from '../../../f-node';\n\n\n@Injectable()\n@FExecutionRegister(GetNodeResizeRestrictionsRequest)\nexport class GetNodeResizeRestrictionsExecution\n implements IExecution<GetNodeResizeRestrictionsRequest, INodeResizeRestrictions> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNodeResizeRestrictionsRequest): INodeResizeRestrictions {\n const fNodePaddings = this.getNodePaddings(request.fNode, request.rect);\n const childRect = this.fMediator.send<IRect | null>(new GetNormalizedChildrenNodesRectRequest(request.fNode, fNodePaddings));\n const parentRect = this.fMediator.send<IRect>(new GetNormalizedParentNodeRectRequest(request.fNode));\n\n return {\n parentRect,\n childRect,\n minSize: SizeExtensions.initialize(fNodePaddings[0] + fNodePaddings[2], fNodePaddings[1] + fNodePaddings[3])\n }\n }\n\n private getNodePaddings(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this.fMediator.send<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeResizeFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizeFinalizeRequest } from './node-resize-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\n\n@Injectable()\n@FExecutionRegister(NodeResizeFinalizeRequest)\nexport class NodeResizeFinalizeExecution implements IExecution<NodeResizeFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: NodeResizeFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","import { IPoint, IRect, ISize, RectExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../f-node';\nimport { FMediator } from '@foblex/mediator';\nimport { GetNormalizedNodeRectRequest } from '../domain';\nimport { GetNodeResizeRestrictionsRequest, INodeResizeRestrictions } from './get-node-resize-restrictions';\nimport { ApplyChildResizeRestrictionsRequest } from './apply-child-resize-restrictions';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size';\nimport { CalculateChangedPositionRequest } from './calculate-changed-position';\nimport { ApplyParentResizeRestrictionsRequest } from './apply-parent-resize-restrictions';\n\nexport class NodeResizeDragHandler implements IDraggableItem {\n\n private originalRect!: IRect;\n\n private restrictions!: INodeResizeRestrictions;\n\n private childRestrictions: (rect: IRect, restrictionsRect: IRect) => void = () => {\n };\n\n constructor(\n private fMediator: FMediator,\n public fNode: FNodeBase,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n\n public initialize(): void {\n this.originalRect = this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(this.fNode));\n\n this.restrictions = this.fMediator.send<INodeResizeRestrictions>(new GetNodeResizeRestrictionsRequest(this.fNode, this.originalRect));\n if (this.restrictions.childRect) {\n this.childRestrictions = (rect: IRect, restrictionsRect: IRect) => {\n this.applyChildRestrictions(rect, restrictionsRect);\n };\n }\n }\n\n public move(difference: IPoint): void {\n const changedRect = this.changePosition(difference, this.changeSize(difference, this.restrictions.minSize));\n\n this.childRestrictions(changedRect, this.restrictions.childRect!);\n this.applyParentRestrictions(changedRect, this.restrictions.parentRect);\n\n this.fNode.updatePosition(changedRect);\n this.fNode.updateSize(changedRect);\n this.fNode.redraw();\n }\n\n private changeSize(difference: IPoint, minSize: ISize): IRect {\n return this.fMediator.send<IRect>(\n new CalculateChangedSizeRequest(this.originalRect, difference, this.fResizeHandleType)\n );\n }\n\n private changePosition(difference: IPoint, changedRect: IRect): IRect {\n return this.fMediator.send<IRect>(\n new CalculateChangedPositionRequest(this.originalRect, changedRect, difference, this.fResizeHandleType)\n );\n }\n\n private applyChildRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.fMediator.send(\n new ApplyChildResizeRestrictionsRequest(rect, restrictionsRect)\n );\n }\n\n private applyParentRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.fMediator.send(\n new ApplyParentResizeRestrictionsRequest(rect, restrictionsRect)\n );\n }\n\n public complete(): void {\n this.fNode.sizeChange.emit(\n RectExtensions.initialize(\n this.fNode.position.x, this.fNode.position.y, this.fNode.size?.width, this.fNode.size?.height\n )\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizeFinalizeRequest } from './node-resize-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\n\n@Injectable()\n@FValidatorRegister(NodeResizeFinalizeRequest)\nexport class NodeResizeFinalizeValidator implements IValidator<NodeResizeFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeResizeFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) =>\n x instanceof NodeResizeDragHandler\n );\n }\n}\n","import { NodeResizeFinalizeExecution } from './node-resize-finalize.execution';\nimport { NodeResizeFinalizeValidator } from './node-resize-finalize.validator';\n\nexport const NODE_RESIZE_FINALIZE_PROVIDERS = [\n\n NodeResizeFinalizeExecution,\n\n NodeResizeFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeResizePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizePreparationRequest } from './node-resize-preparation.request';\nimport { ITransformModel, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n SelectAndUpdateNodeLayerRequest,\n} from '../../../domain';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../../f-node';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\nimport { getDataAttrValueFromClosestElementWithClass } from '@foblex/utils';\n\n@Injectable()\n@FExecutionRegister(NodeResizePreparationRequest)\nexport class NodeResizePreparationExecution implements IExecution<NodeResizePreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: NodeResizePreparationRequest): void {\n this.selectAndUpdateNodeLayer(request.event.targetElement);\n\n const handleType = getDataAttrValueFromClosestElementWithClass(request.event.targetElement, 'fResizeHandleType', '.f-resize-handle');\n const itemsToDrag: IDraggableItem[] = [\n new NodeResizeDragHandler(\n this.fMediator,\n this.getNode(request.event.targetElement),\n EFResizeHandleType[ handleType as keyof typeof EFResizeHandleType ]\n )\n ];\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.draggableItems = itemsToDrag;\n }\n\n private selectAndUpdateNodeLayer(targetElement: HTMLElement) {\n this.fMediator.send(\n new SelectAndUpdateNodeLayerRequest(this.getNode(targetElement))\n );\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase {\n return this.fComponentsStore.findNode(targetElement)!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizePreparationRequest } from './node-resize-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\nimport { isClosestElementHasClass } from '@foblex/utils';\n\n@Injectable()\n@FValidatorRegister(NodeResizePreparationRequest)\nexport class NodeResizePreparationValidator implements IValidator<NodeResizePreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeResizePreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isDragHandleElement(request.event.targetElement)\n && this.isNodeCanBeDragged(this.getNode(request.event.targetElement));\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n return this.fComponentsStore.findNode(targetElement);\n }\n\n private isNodeCanBeDragged(node: FNodeBase | undefined): boolean {\n return !!node && !node.fDraggingDisabled;\n }\n\n private isDragHandleElement(targetElement: HTMLElement): boolean {\n return isClosestElementHasClass(targetElement, '.f-resize-handle');\n }\n}\n","import { NodeResizePreparationExecution } from './node-resize-preparation.execution';\nimport { NodeResizePreparationValidator } from './node-resize-preparation.validator';\n\nexport const NODE_RESIZE_PREPARATION_PROVIDERS = [\n\n NodeResizePreparationExecution,\n\n NodeResizePreparationValidator,\n];\n","import { NODE_RESIZE_FINALIZE_PROVIDERS } from './node-resize-finalize';\nimport { NODE_RESIZE_PREPARATION_PROVIDERS } from './node-resize-preparation';\nimport { GetNodeResizeRestrictionsExecution } from './get-node-resize-restrictions';\nimport { ApplyChildResizeRestrictionsExecution } from './apply-child-resize-restrictions';\nimport { ApplyParentResizeRestrictionsExecution } from './apply-parent-resize-restrictions';\nimport { CalculateChangedSizeExecution } from './calculate-changed-size';\nimport { CalculateChangedPositionExecution } from './calculate-changed-position';\nimport { GetNormalizedChildrenNodesRectExecution } from './get-normalized-children-nodes-rect';\n\nexport const NODE_RESIZE_PROVIDERS = [\n\n ApplyChildResizeRestrictionsExecution,\n\n ApplyParentResizeRestrictionsExecution,\n\n CalculateChangedPositionExecution,\n\n CalculateChangedSizeExecution,\n\n GetNormalizedChildrenNodesRectExecution,\n\n GetNodeResizeRestrictionsExecution,\n\n ...NODE_RESIZE_FINALIZE_PROVIDERS,\n\n ...NODE_RESIZE_PREPARATION_PROVIDERS,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class SingleSelectRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { SingleSelectRequest } from './single-select.request';\nimport { UpdateItemAndChildrenLayersRequest } from '../../domain';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FConnectionBase } from '../../f-connection';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { EOperationSystem, PlatformService } from '@foblex/platform';\nimport { ICanChangeSelection } from '../../mixins';\n\n@Injectable()\n@FExecutionRegister(SingleSelectRequest)\nexport class SingleSelectExecution implements IExecution<SingleSelectRequest, void> {\n\n constructor(\n private fPlatform: PlatformService,\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: SingleSelectRequest): void {\n const { event } = request;\n\n const item = this.getSelectableItem(event);\n if (item) {\n this.fMediator.send<void>(new UpdateItemAndChildrenLayersRequest(item, item.hostElement.parentElement!));\n }\n\n this.isMultiselectEnabled(event) ? this.multiSelect(item) : this.singleSelect(item);\n }\n\n private getSelectableItem(event: IPointerEvent): ICanChangeSelection | undefined {\n return this.fComponentsStore.findNode(event.targetElement) || this.getConnectionHandler(event.targetElement);\n }\n\n private getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fComponentsStore.fConnections.find(c => c.isContains(element) || c.fConnectionCenter?.nativeElement?.contains(element));\n }\n\n private isMultiselectEnabled(event: IPointerEvent): boolean {\n return this.isCommandButton(this.fPlatform.getOS()!, event.originalEvent) ||\n this.isShiftPressed(event.originalEvent);\n }\n\n private isShiftPressed(event: { shiftKey: boolean }): boolean {\n return event.shiftKey;\n }\n\n private isCommandButton(platform: EOperationSystem, event: { metaKey: boolean, ctrlKey: boolean }): boolean {\n return platform === EOperationSystem.MAC_OS ? event.metaKey : event.ctrlKey;\n }\n\n private singleSelect(item: ICanChangeSelection | undefined): void {\n if (item) {\n if (!item.isSelected() && !item.fSelectionDisabled) {\n this.clearSelection();\n this.selectItem(item);\n }\n } else {\n this.clearSelection();\n }\n }\n\n private multiSelect(item: ICanChangeSelection | undefined): void {\n if (item && !item.fSelectionDisabled) {\n item.isSelected() ? this.deselectItem(item) : this.selectItem(item);\n }\n }\n\n private deselectItem(item: ICanChangeSelection): void {\n const index = this.fDraggableDataContext.selectedItems.indexOf(item);\n if (index > -1) {\n this.fDraggableDataContext.selectedItems.splice(index, 1);\n }\n item.deselect();\n this.fDraggableDataContext.markSelectionAsChanged();\n }\n\n private selectItem(item: ICanChangeSelection): void {\n this.fDraggableDataContext.selectedItems.push(item);\n item.select();\n this.fDraggableDataContext.markSelectionAsChanged();\n }\n\n private clearSelection(): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n this.fDraggableDataContext.markSelectionAsChanged();\n });\n this.fDraggableDataContext.selectedItems = [];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { SingleSelectRequest } from './single-select.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n@Injectable()\n@FValidatorRegister(SingleSelectRequest)\nexport class SingleSelectValidator implements IValidator<SingleSelectRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SingleSelectRequest): boolean {\n return this.fComponentsStore.fFlow!.hostElement.contains(request.event.targetElement)\n && !this.fDraggableDataContext.draggableItems.length;\n }\n}\n","import { SingleSelectExecution } from './single-select.execution';\nimport { SingleSelectValidator } from './single-select.validator';\n\nexport const SINGLE_SELECT_PROVIDERS = [\n\n SingleSelectExecution,\n\n SingleSelectValidator\n];\n","import { Directive, EventEmitter, } from '@angular/core';\nimport { FCreateConnectionEvent, FReassignConnectionEvent } from './connections';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FCreateNodeEvent } from '../f-external-item';\nimport { DragAndDropBase, ICanRunOutsideAngular } from '@foblex/drag-toolkit';\n\n@Directive()\nexport abstract class FDraggableBase extends DragAndDropBase {\n\n public abstract fSelectionChange: EventEmitter<FSelectionChangeEvent>;\n\n public abstract fCreateNode: EventEmitter<FCreateNodeEvent>;\n\n public abstract fReassignConnection: EventEmitter<FReassignConnectionEvent>;\n\n public abstract fCreateConnection: EventEmitter<FCreateConnectionEvent>;\n\n protected constructor(\n ngZone: ICanRunOutsideAngular | undefined\n ) {\n super(ngZone);\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ExternalItemFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IRect } from '@foblex/2d';\n\nexport class FCreateNodeEvent<TData = any> {\n\n constructor(\n public rect: IRect,\n public data: TData,\n ) {\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { ExternalItemFinalizeRequest } from './external-item-finalize.request';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\nimport { FCreateNodeEvent } from '../f-create-node.event';\nimport { GetElementRectInFlowRequest } from '../../../domain';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ExternalItemFinalizeRequest)\nexport class ExternalItemFinalizeExecution implements IExecution<ExternalItemFinalizeRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n private get fCreateNode(): EventEmitter<FCreateNodeEvent> {\n return this.fComponentsStore.fDraggable!.fCreateNode;\n }\n\n private get dragHandler(): ExternalItemDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as ExternalItemDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ExternalItemFinalizeRequest): void {\n this.emitEvent(\n this.getExternalItemElementsFromPoint(request.event.getPosition())\n );\n\n this.dragHandler.complete();\n }\n\n private getExternalItemElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y)\n .filter(x => !x.closest('.f-external-item')) as HTMLElement[];\n }\n\n private emitEvent(elements: HTMLElement[]): void {\n if (this.isPointerInCanvasRect(elements)) {\n this.fCreateNode.emit(\n new FCreateNodeEvent(this.getRectInCanvas(), this.dragHandler.externalItem.fData)\n );\n }\n }\n\n private isPointerInCanvasRect(elements: HTMLElement[]): boolean {\n return elements.length ? this.flowHost.contains(elements[ 0 ]) : false;\n }\n\n private getRectInCanvas(): IRect {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(this.dragHandler.placeholder!));\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FExternalItemBase } from '../../f-external-item';\nimport { IDraggableItem } from '../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\nimport { deepCloneNode } from '@foblex/utils';\n\nexport class ExternalItemDragHandler implements IDraggableItem {\n\n public placeholder: HTMLElement | SVGElement | undefined;\n\n private onPointerDownRect: IRect = RectExtensions.initialize();\n\n private difference: IPoint = PointExtensions.initialize();\n\n constructor(\n public externalItem: FExternalItemBase,\n private fBrowser: BrowserService\n ) {\n }\n\n private getStyle(position: IPoint): string {\n return `position: absolute; left: 0; top: 0; transform: translate(${ position.x }px, ${ position.y }px)`;\n }\n\n public initialize(): void {\n this.onPointerDownRect = this.getExternalItemRect();\n this.placeholder = deepCloneNode(this.externalItem.hostElement);\n this.placeholder.setAttribute('style', this.getStyle(Point.fromPoint(this.onPointerDownRect)));\n this.fBrowser.document.body.appendChild(this.placeholder);\n }\n\n private getExternalItemRect(): IRect {\n const rect = this.externalItem.hostElement.getBoundingClientRect();\n const scrollTop = this.fBrowser.window.pageYOffset || this.fBrowser.document.documentElement.scrollTop;\n const scrollLeft = this.fBrowser.window.pageXOffset || this.fBrowser.document.documentElement.scrollLeft;\n const offsetTop = rect.top + scrollTop;\n const offsetLeft = rect.left + scrollLeft;\n return RectExtensions.initialize(offsetLeft, offsetTop, rect.width, rect.height);\n }\n\n public move(difference: IPoint): void {\n this.difference = difference;\n const position = Point.fromPoint(this.onPointerDownRect).add(this.difference);\n this.placeholder!.setAttribute('style', this.getStyle(position));\n }\n\n public complete(): void {\n this.fBrowser.document.body.removeChild(this.placeholder!);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemFinalizeRequest } from './external-item-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\n\n\n@Injectable()\n@FValidatorRegister(ExternalItemFinalizeRequest)\nexport class ExternalItemFinalizeValidator implements IValidator<ExternalItemFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: ExternalItemFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ExternalItemDragHandler\n );\n }\n}\n","import { ExternalItemFinalizeExecution } from './external-item-finalize.execution';\nimport { ExternalItemFinalizeValidator } from './external-item-finalize.validator';\n\nexport const EXTERNAL_ITEM_FINALIZE_PROVIDERS = [\n\n ExternalItemFinalizeExecution,\n\n ExternalItemFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ExternalItemPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemPreparationRequest } from './external-item-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExternalItemBase, FExternalItemService, getExternalItem } from '../../../f-external-item';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ExternalItemPreparationRequest)\nexport class ExternalItemPreparationExecution implements IExecution<ExternalItemPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fExternalItemService: FExternalItemService,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ExternalItemPreparationRequest): void {\n this.fDraggableDataContext.onPointerDownScale = 1;\n\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition()).elementTransform(this.flowHost);\n\n this.fDraggableDataContext.draggableItems = [\n new ExternalItemDragHandler(this.getExternalItem(request.event.targetElement), this.fBrowser)\n ];\n }\n\n private getExternalItem(targetElement: HTMLElement): FExternalItemBase<any> {\n return this.fExternalItemService.getItem(getExternalItem(targetElement))!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemPreparationRequest } from './external-item-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FExternalItemBase, FExternalItemService, getExternalItem, isExternalItem } from '../../../f-external-item';\n\n@Injectable()\n@FValidatorRegister(ExternalItemPreparationRequest)\nexport class ExternalItemPreparationValidator implements IValidator<ExternalItemPreparationRequest> {\n\n\n constructor(\n private fExternalItemService: FExternalItemService\n ) {\n }\n\n public handle(request: ExternalItemPreparationRequest): boolean {\n const externalItem = this.getExternalItem(request.event.targetElement);\n return isExternalItem(request.event.targetElement) && !!externalItem && !externalItem.fDisabled;\n }\n\n private getExternalItem(targetElement: HTMLElement): FExternalItemBase<any> | undefined {\n return this.fExternalItemService.getItem(getExternalItem(targetElement));\n }\n}\n","import { ExternalItemPreparationExecution } from './external-item-preparation.execution';\nimport { ExternalItemPreparationValidator } from './external-item-preparation.validator';\n\nexport const EXTERNAL_ITEM_PREPARATION_PROVIDERS = [\n\n ExternalItemPreparationExecution,\n\n ExternalItemPreparationValidator,\n];\n","import { EXTERNAL_ITEM_PREPARATION_PROVIDERS } from './external-item-preparation';\nimport { EXTERNAL_ITEM_FINALIZE_PROVIDERS } from './external-item-finalize';\n\nexport const F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS = [\n\n ...EXTERNAL_ITEM_FINALIZE_PROVIDERS,\n\n ...EXTERNAL_ITEM_PREPARATION_PROVIDERS,\n];\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_EXTERNAL_ITEM = new InjectionToken<FExternalItemBase>('F_EXTERNAL_ITEM');\n\n@Directive()\nexport abstract class FExternalItemBase<TData = any> implements IHasHostElement {\n\n public abstract fExternalItemId: string;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract fData: TData | undefined;\n\n public abstract fDisabled: boolean;\n}\n","export function isExternalItem(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fExternalItem]');\n}\n\nexport function getExternalItem(element: HTMLElement | SVGElement): HTMLElement | SVGElement {\n return element.closest('[fExternalItem]') as HTMLElement | SVGElement;\n}\n","import { Injectable } from '@angular/core';\nimport { FExternalItemBase } from './f-external-item-base';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FExternalItemService {\n\n private items: FExternalItemBase[] = [];\n\n public registerItem(item: FExternalItemBase): void {\n this.items.push(item);\n }\n\n public getItem(element: HTMLElement | SVGElement): FExternalItemBase | undefined {\n return this.items.find(item => item.hostElement === element);\n }\n\n public removeItem(item: FExternalItemBase): void {\n const index = this.items.indexOf(item);\n if (index !== -1) {\n this.items.splice(index, 1);\n }\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FExternalItemBase, F_EXTERNAL_ITEM } from './f-external-item-base';\nimport { FExternalItemService } from './f-external-item.service';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fExternalItem]\",\n host: {\n '[attr.id]': 'fExternalItemId',\n class: \"f-component f-external-item\",\n '[class.f-external-item-disabled]': 'fDisabled',\n },\n providers: [\n { provide: F_EXTERNAL_ITEM, useExisting: FExternalItemDirective }\n ],\n})\nexport class FExternalItemDirective<TData> extends FExternalItemBase<TData> implements OnInit, OnDestroy {\n\n @Input()\n public override fExternalItemId: string = `f-external-item-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override fData: TData | undefined;\n\n @Input()\n public override fDisabled: boolean = false;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fExternalItemService: FExternalItemService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fExternalItemService.registerItem(this);\n this.disablePointerEvents(Array.from(this.hostElement.children) as HTMLElement[]);\n }\n\n private disablePointerEvents(children: HTMLElement[]): void {\n children.forEach((x) => {\n x.style.pointerEvents = 'none';\n this.disablePointerEvents(Array.from(x.children) as HTMLElement[]);\n });\n }\n\n public ngOnDestroy(): void {\n this.fExternalItemService.removeItem(this);\n }\n}\n","import { FExternalItemDirective } from './f-external-item.directive';\n\nexport const F_EXTERNAL_ITEM_PROVIDERS = [\n FExternalItemDirective\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_DRAG_AND_DROP_PLUGIN: InjectionToken<IFDragAndDropPlugin> = new InjectionToken<IFDragAndDropPlugin>('F_DRAG_AND_DROP_PLUGIN');\n\nexport interface IFDragAndDropPlugin {\n\n onSelect?(event: Event): void;\n\n onPointerDown?(event: IPointerEvent): void;\n\n prepareDragSequence?(event: IPointerEvent): void;\n\n onPointerUp?(event: IPointerEvent): void;\n}\n","import {\n AfterViewInit, ContentChildren,\n Directive,\n ElementRef,\n EventEmitter, Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit, Optional, Output, QueryList\n} from \"@angular/core\";\nimport { FDraggableBase } from './f-draggable-base';\nimport { FComponentsStore } from '../f-storage';\nimport { FDraggableDataContext } from './f-draggable-data-context';\nimport { Subscription } from 'rxjs';\nimport { IPoint, Point } from '@foblex/2d';\nimport { NodeMoveFinalizeRequest, NodeMovePreparationRequest } from './node';\nimport { CanvasMoveFinalizeRequest, CanvasMovePreparationRequest } from './canvas';\nimport {\n FCreateConnectionEvent,\n FReassignConnectionEvent,\n ReassignConnectionPreparationRequest,\n ReassignConnectionFinalizeRequest,\n CreateConnectionPreparationRequest,\n CreateConnectionFinalizeRequest\n} from './connections';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FMediator } from '@foblex/mediator';\nimport { EmitTransformChangesRequest, GetSelectionRequest } from '../domain';\nimport {\n ExternalItemFinalizeRequest,\n ExternalItemPreparationRequest,\n FCreateNodeEvent,\n isExternalItem\n} from '../f-external-item';\nimport { SingleSelectRequest } from './single-select';\nimport { NodeResizeFinalizeRequest, NodeResizePreparationRequest } from './node-resize';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from './i-f-drag-and-drop-plugin';\nimport { BrowserService } from '@foblex/platform';\nimport { ICanRunOutsideAngular, IPointerEvent } from '@foblex/drag-toolkit';\n\n@Directive({\n selector: \"f-flow[fDraggable]\",\n exportAs: 'fDraggable'\n})\nexport class FDraggableDirective extends FDraggableBase implements OnInit, AfterViewInit, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input('fDraggableDisabled')\n public override disabled: boolean = false;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Output()\n public override fSelectionChange: EventEmitter<FSelectionChangeEvent> = new EventEmitter<FSelectionChangeEvent>();\n\n // @Output()\n // public override fConnectionIntersectNode: EventEmitter<ConnectionIntersectNodeEvent> = new EventEmitter<ConnectionIntersectNodeEvent>();\n\n @Output()\n public override fCreateNode: EventEmitter<FCreateNodeEvent> = new EventEmitter<FCreateNodeEvent>();\n\n @Output()\n public override fReassignConnection: EventEmitter<FReassignConnectionEvent> = new EventEmitter<FReassignConnectionEvent>();\n\n @Output()\n public override fCreateConnection: EventEmitter<FCreateConnectionEvent> = new EventEmitter<FCreateConnectionEvent>();\n\n @ContentChildren(F_DRAG_AND_DROP_PLUGIN, { descendants: true })\n private plugins!: QueryList<IFDragAndDropPlugin>;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fDraggableDataContext: FDraggableDataContext,\n @Inject(NgZone) @Optional() ngZone: ICanRunOutsideAngular,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n super(ngZone);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fDraggable = this;\n }\n\n public ngAfterViewInit(): void {\n super.subscribe(this.fBrowser.document);\n }\n\n public override onPointerDown(event: IPointerEvent): boolean {\n this.fDraggableDataContext.reset();\n let result: boolean = event.isMouseLeftButton();\n\n this.plugins.forEach((p) => {\n p.onPointerDown?.(event);\n });\n\n this.fMediator.send<void>(new SingleSelectRequest(event));\n\n this.fMediator.send<void>(new ReassignConnectionPreparationRequest(event));\n\n this.fMediator.send<void>(new CreateConnectionPreparationRequest(event));\n\n if (!result) {\n this.finalizeDragSequence();\n }\n return result;\n }\n\n protected override prepareDragSequence(event: IPointerEvent) {\n\n this.plugins.forEach((p) => {\n p.prepareDragSequence?.(event);\n });\n\n this.fMediator.send<void>(new NodeResizePreparationRequest(event));\n\n this.fMediator.send<void>(new NodeMovePreparationRequest(event));\n\n this.fMediator.send<void>(new CanvasMovePreparationRequest(event));\n\n this.fMediator.send<void>(new ExternalItemPreparationRequest(event));\n\n this.fDraggableDataContext.draggableItems.forEach((item) => {\n item.initialize?.();\n });\n\n if (this.fDraggableDataContext.draggableItems.length > 0) {\n this.hostElement.classList.add('f-dragging');\n this.emitSelectionChangeEvent();\n }\n }\n\n protected override onSelect(event: Event): void {\n\n this.plugins.forEach((p) => {\n p.onSelect?.(event);\n });\n\n if (this.isTargetItemExternal(event)) {\n event.preventDefault();\n }\n }\n\n private isTargetItemExternal(event: Event): boolean {\n let isTargetItemExternal = this.isExternalItem(event.target as HTMLElement);\n let isTargetParentItemExternal = this.isExternalItem((event.target as Node).parentNode as HTMLElement);\n return isTargetItemExternal || isTargetParentItemExternal;\n }\n\n private isExternalItem(target: HTMLElement): boolean {\n let result = false;\n try {\n result = isExternalItem(target);\n } catch (e) {\n }\n return result;\n }\n\n public override onPointerMove(event: IPointerEvent): void {\n const pointerPositionInCanvas = Point.fromPoint(event.getPosition()).elementTransform(this.hostElement);\n const difference: IPoint = pointerPositionInCanvas.div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n this.fDraggableDataContext.draggableItems.forEach((item) => {\n item.move({ ...difference });\n });\n }\n\n public override onPointerUp(event: IPointerEvent): void {\n\n this.plugins.forEach((p) => {\n p.onPointerUp?.(event);\n });\n\n this.fMediator.send<void>(new ReassignConnectionFinalizeRequest(event));\n\n this.fMediator.send<void>(new CreateConnectionFinalizeRequest(event));\n\n this.fMediator.send<void>(new NodeResizeFinalizeRequest(event));\n\n this.fMediator.send<void>(new NodeMoveFinalizeRequest(event));\n\n this.fMediator.send<void>(new CanvasMoveFinalizeRequest(event));\n\n this.fMediator.send<void>(new ExternalItemFinalizeRequest(event));\n\n this.hostElement.classList.remove('f-dragging');\n\n this.fDraggableDataContext.reset();\n }\n\n protected override finalizeDragSequence(): void {\n this.emitSelectionChangeEvent();\n }\n\n private emitSelectionChangeEvent(): void {\n if (\n !this.fDraggableDataContext.isSelectedChanged\n ) {\n return;\n }\n this.fSelectionChange.emit(this.fMediator.send<FSelectionChangeEvent>(new GetSelectionRequest()));\n this.fDraggableDataContext.isSelectedChanged = false;\n this.fMediator.send<void>(new EmitTransformChangesRequest());\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n this.subscriptions$.unsubscribe();\n }\n}\n\n","export class FSelectionChangeEvent {\n\n constructor(\n public nodes: string[],\n public connections: string[],\n ) {\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { FMinimapData } from '../f-minimap-data';\n\nexport class CalculateFlowPointFromMinimapPointRequest {\n\n constructor(\n public flowRect: IRect,\n public canvasPosition: IPoint,\n public eventPoint: IPoint,\n public minimap: FMinimapData\n ) {\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FMinimapData } from '../f-minimap-data';\n\n@Injectable()\n@FExecutionRegister(CalculateFlowPointFromMinimapPointRequest)\nexport class CalculateFlowPointFromMinimapPointExecution\n implements IExecution<CalculateFlowPointFromMinimapPointRequest, IPoint> {\n\n private get canvasScale(): number {\n return this.fComponentsStore.fCanvas!.transform.scale;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(payload: CalculateFlowPointFromMinimapPointRequest): IPoint {\n return PointExtensions.sub(\n payload.canvasPosition,\n PointExtensions.sub(\n this.getPositionInViewBox(payload.eventPoint, payload.minimap),\n this.getNormalizedFlowCenter(payload.flowRect)\n )\n );\n }\n\n private getNormalizedFlowCenter(flowRect: IRect): IPoint {\n return Point.fromPoint(flowRect.gravityCenter).sub(flowRect);\n }\n\n private getPositionInViewBox(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n const eventPointInFlow = this.normalizeEventPoint(eventPoint, minimap);\n return PointExtensions.sum(\n eventPointInFlow,\n RectExtensions.mult(minimap.viewBox, this.canvasScale)\n );\n }\n\n public normalizeEventPoint(point: IPoint, minimap: FMinimapData): Point {\n return this.getEventPointInMinimap(point, minimap)\n .mult(minimap.scale).mult(this.canvasScale);\n }\n\n private getEventPointInMinimap(eventPoint: IPoint, minimap: FMinimapData): Point {\n return Point.fromPoint(eventPoint).elementTransform(minimap.element as unknown as HTMLElement);\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class MinimapDragFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragFinalizeRequest } from './minimap-drag-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(MinimapDragFinalizeRequest)\nexport class MinimapDragFinalizeExecution implements IExecution<MinimapDragFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: MinimapDragFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","import { IPoint, IRect, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { IDraggableItem } from '../../f-draggable';\nimport { FMediator } from '@foblex/mediator';\nimport { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point';\nimport { FMinimapData } from './f-minimap-data';\n\nexport class FMinimapDragHandler implements IDraggableItem {\n\n private lastDifference: IPoint | null = null;\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private flowRect: IRect,\n private canvasPosition: IPoint,\n private eventPoint: IPoint,\n private minimap: FMinimapData\n ) {\n }\n\n public initialize(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.add('f-scaled-animate');\n }\n\n public move(difference: IPoint): void {\n if (this.lastDifference && this.isSamePoint(difference, this.lastDifference)) {\n return;\n }\n\n this.lastDifference = difference;\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(Point.fromPoint(this.eventPoint).add(difference)));\n this.fComponentsStore.fCanvas!.redraw();\n }\n\n private isSamePoint(point1: IPoint, point2: IPoint): boolean {\n return point1.x === point2.x && point1.y === point2.y;\n }\n\n private getNewPosition(eventPoint: IPoint): IPoint {\n return this.fMediator.send<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.flowRect, this.canvasPosition, eventPoint, this.minimap\n ));\n }\n\n public complete(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.remove('f-scaled-animate');\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragFinalizeRequest } from './minimap-drag-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\n\n@Injectable()\n@FValidatorRegister(MinimapDragFinalizeRequest)\nexport class MinimapDragFinalizeValidator implements IValidator<MinimapDragFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: MinimapDragFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FMinimapDragHandler\n );\n }\n}\n","import { MinimapDragFinalizeExecution } from './minimap-drag-finalize.execution';\nimport { MinimapDragFinalizeValidator } from './minimap-drag-finalize.validator';\n\nexport const MINIMAP_DRAG_FINALIZE_PROVIDERS = [\n\n MinimapDragFinalizeExecution,\n\n MinimapDragFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FMinimapData } from '../f-minimap-data';\n\nexport class MinimapDragPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public minimap: FMinimapData\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragPreparationRequest } from './minimap-drag-preparation.request';\nimport { IPoint, IRect, Point, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { CalculateFlowPointFromMinimapPointRequest } from '../calculate-flow-point-from-minimap-point';\nimport { FMinimapData } from '../f-minimap-data';\n\n@Injectable()\n@FExecutionRegister(MinimapDragPreparationRequest)\nexport class MinimapDragPreparationExecution implements IExecution<MinimapDragPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: MinimapDragPreparationRequest): void {\n const eventPoint = request.event.getPosition();\n const startCanvasPosition = Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position);\n\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(eventPoint, request.minimap));\n this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(eventPoint).elementTransform(this.flowHost);\n this.fDraggableDataContext.draggableItems = [\n new FMinimapDragHandler(\n this.fComponentsStore, this.fMediator, this.getFlowRect(),\n startCanvasPosition, eventPoint, request.minimap,\n )\n ];\n }\n\n private getNewPosition(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n return this.fMediator.send<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.getFlowRect(),\n Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position),\n eventPoint, minimap,\n ));\n }\n\n private getFlowRect(): IRect {\n return RectExtensions.fromElement(this.flowHost);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragPreparationRequest } from './minimap-drag-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FValidatorRegister(MinimapDragPreparationRequest)\nexport class MinimapDragPreparationValidator implements IValidator<MinimapDragPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: MinimapDragPreparationRequest): boolean {\n return !this.fDraggableDataContext.draggableItems.length &&\n !!request.event.targetElement.closest('.f-minimap') &&\n this.fComponentsStore.flowHost.contains(request.event.targetElement);\n }\n}\n","import { MinimapDragPreparationExecution } from './minimap-drag-preparation.execution';\nimport { MinimapDragPreparationValidator } from './minimap-drag-preparation.validator';\n\nexport const MINIMAP_DRAG_PREPARATION_PROVIDERS = [\n\n MinimapDragPreparationExecution,\n\n MinimapDragPreparationValidator,\n];\n","import { IRect, RectExtensions } from '@foblex/2d';\n\nexport function checkRectIsFinite(rect: IRect): IRect {\n if (!Number.isFinite(rect.width) || !Number.isFinite(rect.height) || !Number.isFinite(rect.x) || !Number.isFinite(rect.y)) {\n return RectExtensions.initialize(0, 0, 0, 0);\n }\n return rect;\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\n\nexport class FMinimapData {\n\n constructor(\n public element: SVGSVGElement,\n public scale: number = 1,\n public viewBox: IRect = RectExtensions.initialize(0, 0, 0, 0)\n ) {\n }\n}\n","import { MINIMAP_DRAG_PREPARATION_PROVIDERS } from './minimap-drag-preparation';\nimport { MINIMAP_DRAG_FINALIZE_PROVIDERS } from './minimap-drag-finalize';\nimport { CalculateFlowPointFromMinimapPointExecution } from './calculate-flow-point-from-minimap-point';\n\nexport const F_MINIMAP_DRAG_AND_DROP_PROVIDERS = [\n\n CalculateFlowPointFromMinimapPointExecution,\n\n ...MINIMAP_DRAG_FINALIZE_PROVIDERS,\n\n ...MINIMAP_DRAG_PREPARATION_PROVIDERS,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class SelectionAreaFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaFinalizeRequest } from './selection-area-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaFinalizeRequest)\nexport class SelectionAreaFinalizeExecution implements IExecution<SelectionAreaFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectionAreaFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","export class GetCanBeSelectedItemsRequest {\n}\n","import { IPoint, Point, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { EmitTransformChangesRequest, ISelectableWithRect } from '../../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { GetCanBeSelectedItemsRequest } from '../../domain/get-can-be-selected-items/get-can-be-selected-items-request';\nimport { FDraggableDataContext, IDraggableItem } from '../../f-draggable';\nimport { FSelectionAreaBase } from '../f-selection-area-base';\nimport { ICanChangeSelection } from '../../mixins';\n\nexport class SelectionAreaDragHandle implements IDraggableItem {\n\n private canBeSelected: ISelectableWithRect[] = [];\n\n private selectedByMove: ICanChangeSelection[] = [];\n\n private get canvasPosition(): Point {\n return Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position).add(this.fComponentsStore.fCanvas!.transform.scaledPosition);\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fSelectionArea: FSelectionAreaBase,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public initialize(): void {\n this.canBeSelected = this.fMediator.send(new GetCanBeSelectedItemsRequest());\n\n this.fSelectionArea.show();\n this.fSelectionArea.draw(\n RectExtensions.initialize(\n this.fDraggableDataContext.onPointerDownPosition.x,\n this.fDraggableDataContext.onPointerDownPosition.y\n )\n );\n }\n\n public move(difference: IPoint): void {\n const currentPoint = Point.fromPoint(difference).add(this.fDraggableDataContext.onPointerDownPosition);\n const x: number = Math.min(this.fDraggableDataContext.onPointerDownPosition.x, currentPoint.x);\n const y: number = Math.min(this.fDraggableDataContext.onPointerDownPosition.y, currentPoint.y);\n\n const width = Math.abs(difference.x);\n const height = Math.abs(difference.y);\n\n this.fSelectionArea.draw(\n RectExtensions.initialize(x, y, width, height)\n );\n this.selectedByMove = [];\n this.canBeSelected.forEach((item) => {\n item.element.deselect();\n\n const itemRect = RectExtensions.addPoint(item.rect, this.canvasPosition);\n\n const isIntersect = RectExtensions.intersectionWithRect(itemRect, RectExtensions.initialize(x, y, width, height));\n if (isIntersect) {\n\n item.element.select();\n this.selectedByMove.push(item.element);\n }\n });\n this.fMediator.send<void>(new EmitTransformChangesRequest());\n }\n\n public complete(): void {\n this.fSelectionArea.hide();\n this.fDraggableDataContext.selectedItems.push(...this.selectedByMove);\n if (this.selectedByMove.length > 0) {\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaFinalizeRequest } from './selection-area-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\n\n@Injectable()\n@FValidatorRegister(SelectionAreaFinalizeRequest)\nexport class SelectionAreaFinalizeValidator implements IValidator<SelectionAreaFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SelectionAreaFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) =>\n x instanceof SelectionAreaDragHandle\n );\n }\n}\n","import { SelectionAreaFinalizeExecution } from './selection-area-finalize.execution';\nimport { SelectionAreaFinalizeValidator } from './selection-area-finalize.validator';\n\nexport const SELECTION_AREA_FINALIZE_PROVIDERS = [\n\n SelectionAreaFinalizeExecution,\n\n SelectionAreaFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FSelectionAreaBase } from '../../f-selection-area-base';\n\nexport class SelectionAreaPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fSelectionArea: FSelectionAreaBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaPreparationRequest } from './selection-area-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaPreparationRequest)\nexport class SelectionAreaPreparationExecution implements IExecution<SelectionAreaPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: SelectionAreaPreparationRequest): void {\n this.fDraggableDataContext.draggableItems = [\n new SelectionAreaDragHandle(\n this.fComponentsStore, request.fSelectionArea, this.fDraggableDataContext, this.fMediator\n )\n ];\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaPreparationRequest } from './selection-area-preparation.request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\n\n@Injectable()\n@FValidatorRegister(SelectionAreaPreparationRequest)\nexport class SelectionAreaPreparationValidator implements IValidator<SelectionAreaPreparationRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SelectionAreaPreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isShiftPressed(request.event.originalEvent);\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private isShiftPressed(event: { shiftKey: boolean }): boolean {\n return event.shiftKey;\n }\n}\n","import { SelectionAreaPreparationExecution } from './selection-area-preparation.execution';\nimport { SelectionAreaPreparationValidator } from './selection-area-preparation.validator';\n\nexport const SELECTION_AREA_PREPARATION_PROVIDERS = [\n\n SelectionAreaPreparationExecution,\n\n SelectionAreaPreparationValidator,\n];\n","import { SELECTION_AREA_FINALIZE_PROVIDERS } from './selection-area-finalize';\nimport { SELECTION_AREA_PREPARATION_PROVIDERS } from './selection-area-preparation';\n\nexport const F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS = [\n\n ...SELECTION_AREA_FINALIZE_PROVIDERS,\n\n ...SELECTION_AREA_PREPARATION_PROVIDERS\n];\n","import { IRect } from '@foblex/2d';\nimport { Directive } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\n@Directive()\nexport abstract class FSelectionAreaBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract hide(): void;\n\n public abstract show(): void;\n\n public abstract draw(object: IRect): void;\n}\n","import { Component, ElementRef, OnInit } from '@angular/core';\nimport { FSelectionAreaBase } from './f-selection-area-base';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { SelectionAreaFinalizeRequest, SelectionAreaPreparationRequest } from './domain';\n\n@Component({\n selector: \"f-selection-area\",\n template: ``,\n styleUrls: [ './f-selection-area.component.scss' ],\n host: {\n 'class': 'f-selection-area f-component'\n },\n providers: [\n { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },\n ],\n})\nexport class FSelectionAreaComponent extends FSelectionAreaBase implements OnInit, IFDragAndDropPlugin {\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FMediator\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.hostElement.style.display = 'none';\n }\n\n public override hide(): void {\n this.hostElement.style.display = 'none';\n }\n\n public override show(): void {\n this.hostElement.style.display = 'block';\n }\n\n public override draw(object: IRect): void {\n const style = this.hostElement.style;\n style.left = object.x + 'px';\n style.top = object.y + 'px';\n style.width = object.width + 'px';\n style.height = object.height + 'px';\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this.fMediator.send(new SelectionAreaPreparationRequest(event, this));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this.fMediator.send(new SelectionAreaFinalizeRequest(event));\n }\n}\n","import { FSelectionAreaComponent } from './f-selection-area.component';\n\nexport const F_SELECTION_AREA_PROVIDERS = [\n\n FSelectionAreaComponent\n];\n","import { CANVAS_PROVIDERS } from './canvas';\nimport { CONNECTIONS_PROVIDERS } from './connections';\nimport { SINGLE_SELECT_PROVIDERS } from './single-select';\nimport { NODE_PROVIDERS } from './node';\nimport { NODE_RESIZE_PROVIDERS } from './node-resize';\nimport { F_MINIMAP_DRAG_AND_DROP_PROVIDERS } from '../f-minimap/domain';\nimport { F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS } from '../f-external-item';\nimport { F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS } from '../f-selection-area';\nimport { DRAG_AND_DROP_COMMON_PROVIDERS } from './domain';\n\nexport const F_DRAGGABLE_PROVIDERS = [\n\n ...CANVAS_PROVIDERS,\n\n ...CONNECTIONS_PROVIDERS,\n\n ...DRAG_AND_DROP_COMMON_PROVIDERS,\n\n ...SINGLE_SELECT_PROVIDERS,\n\n ...F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS,\n\n ...NODE_PROVIDERS,\n\n ...NODE_RESIZE_PROVIDERS,\n\n ...F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS,\n\n ...F_MINIMAP_DRAG_AND_DROP_PROVIDERS\n];\n","import { ClearSelectionRequest } from './clear-selection.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(ClearSelectionRequest)\nexport class ClearSelectionExecution implements IExecution<ClearSelectionRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: ClearSelectionRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => x.deselect());\n this.fDraggableDataContext.selectedItems = [];\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class GetSelectionRequest {\n\n}\n","import { GetSelectionRequest } from './get-selection.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext, FSelectionChangeEvent } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(GetSelectionRequest)\nexport class GetSelectionExecution implements IExecution<GetSelectionRequest, FSelectionChangeEvent> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(): FSelectionChangeEvent {\n\n let selectedNodes: string[] = [];\n let selectedConnections: string[] = [];\n\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n if (x.hostElement.classList.contains('f-node')) {\n selectedNodes.push(x.hostElement.dataset['fNodeId']!)\n } else {\n selectedConnections.push(x.hostElement.id);\n }\n });\n\n return new FSelectionChangeEvent(selectedNodes, selectedConnections);\n }\n}\n","export class SelectRequest {\n\n constructor(\n public nodes: string[],\n public connections: string[]\n ) {\n }\n}\n","import { SelectRequest } from './select.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectRequest)\nexport class SelectExecution implements IExecution<SelectRequest, void> {\n\n constructor(\n private fDataContext: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n });\n this.fDraggableDataContext.selectedItems = [];\n\n request.nodes.forEach((key) => {\n const node = this.fDataContext.fNodes.find((x) => x.fId === key);\n if(node) {\n node.select();\n this.fDraggableDataContext.selectedItems.push(node);\n }\n });\n\n request.connections.forEach((key) => {\n const connection = this.fDataContext.fConnections.find((x) => x.fId === key);\n if(connection) {\n connection.select();\n this.fDraggableDataContext.selectedItems.push(connection);\n }\n });\n\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class SelectAllRequest {\n\n}\n","import { SelectAllRequest } from './select-all.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectAllRequest)\nexport class SelectAllExecution implements IExecution<SelectAllRequest, void> {\n\n constructor(\n private fDataContext: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectAllRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n });\n this.fDraggableDataContext.selectedItems = [];\n this.fDataContext.fNodes.forEach((x) => {\n x.select();\n this.fDraggableDataContext.selectedItems.push(x);\n });\n this.fDataContext.fConnections.forEach((x) => {\n x.select();\n this.fDraggableDataContext.selectedItems.push(x);\n });\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class SelectAndUpdateNodeLayerRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","export class MoveFrontElementsBeforeTargetElementRequest {\n\n constructor(\n public fItemsContainer: HTMLElement, // fGroupsContainer || fNodesContainer || fConnectionsContainer\n public allElements: Element[],\n public elementsThatShouldBeInFront: Element[],\n public targetIndex: number\n ) {\n }\n}\n","import { MoveFrontElementsBeforeTargetElementRequest } from './move-front-elements-before-target-element.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(MoveFrontElementsBeforeTargetElementRequest)\nexport class MoveFrontElementsBeforeTargetElementExecution implements IExecution<MoveFrontElementsBeforeTargetElementRequest, void> {\n\n public handle(request: MoveFrontElementsBeforeTargetElementRequest): void {\n const elementsToMove: Element[] = [];\n for (let i = request.targetIndex + 1; i < request.allElements.length; i++) {\n const element = request.allElements[ i ];\n if (!request.elementsThatShouldBeInFront.includes(element)) {\n elementsToMove.push(element);\n }\n }\n elementsToMove.forEach((x) => {\n request.fItemsContainer.removeChild(x);\n request.fItemsContainer.insertBefore(x, request.allElements[ request.targetIndex ]);\n });\n }\n}\n","import { ICanChangeSelection } from '../../mixins';\n\nexport class UpdateItemAndChildrenLayersRequest {\n\n constructor(\n public item: ICanChangeSelection,\n public itemContainer: HTMLElement,\n ) {\n }\n}\n","export class GetDeepChildrenNodesAndGroupsRequest {\n\n constructor(\n public fId: string\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetDeepChildrenNodesAndGroupsRequest } from './get-deep-children-nodes-and-groups.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FNodeBase } from '../../f-node';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetDeepChildrenNodesAndGroupsRequest)\nexport class GetDeepChildrenNodesAndGroupsExecution\n implements IExecution<GetDeepChildrenNodesAndGroupsRequest, FNodeBase[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetDeepChildrenNodesAndGroupsRequest): FNodeBase[] {\n return this.getChildrenNodes(request.fId);\n }\n\n private getChildrenNodes(fId: string, visited: Set<string> = new Set()): FNodeBase[] {\n if (visited.has(fId)) {\n throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fId);\n }\n visited.add(fId);\n\n const result = this.fComponentsStore.fNodes.filter((x) => x.fParentId === fId);\n result.forEach((x) => {\n result.push(...this.getChildrenNodes(x.fId, visited));\n });\n return result;\n }\n}\n","import { UpdateItemAndChildrenLayersRequest } from './update-item-and-children-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport { FNodeBase } from '../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../get-deep-children-nodes-and-groups';\nimport { MoveFrontElementsBeforeTargetElementRequest } from './move-front-elements-before-target-element';\n\n@Injectable()\n@FExecutionRegister(UpdateItemAndChildrenLayersRequest)\nexport class UpdateItemAndChildrenLayersExecution implements IExecution<UpdateItemAndChildrenLayersRequest, void> {\n\n private get fGroupsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement;\n }\n\n private get fNodesContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement;\n }\n\n private get fConnectionsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fConnectionsContainer.nativeElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: UpdateItemAndChildrenLayersRequest): void {\n\n switch (request.itemContainer) {\n case this.fGroupsContainer:\n this.handleGroup(request);\n break;\n case this.fNodesContainer:\n this.handleNode(request);\n break;\n case this.fConnectionsContainer:\n this.handleConnection(request);\n break;\n default:\n throw new Error('Unknown container');\n }\n }\n\n private handleGroup(request: UpdateItemAndChildrenLayersRequest): void {\n const childrenNodesAndGroups = this.getChildrenNodesAndGroups(request.item.fId);\n const childrenGroups = this.getChildrenGroups(childrenNodesAndGroups);\n this.updateLayers(this.fGroupsContainer, request.item.hostElement as HTMLElement, childrenGroups);\n const childrenNodes = this.getChildrenNodes(childrenNodesAndGroups);\n if (childrenNodes.length) {\n this.updateLayers(this.fNodesContainer, childrenNodes[ 0 ], childrenNodes);\n }\n }\n\n private handleNode(request: UpdateItemAndChildrenLayersRequest): void {\n const childrenNodesAndGroups = this.getChildrenNodesAndGroups(request.item.fId);\n const childrenNodes = this.getChildrenNodes(childrenNodesAndGroups);\n this.updateLayers(request.itemContainer, request.item.hostElement as HTMLElement, childrenNodes);\n }\n\n private handleConnection(request: UpdateItemAndChildrenLayersRequest): void {\n this.updateLayers(request.itemContainer, request.item.hostElement as HTMLElement, []);\n }\n\n private updateLayers(itemContainer: HTMLElement, item: HTMLElement, elementsThatShouldBeInFront: HTMLElement[]): void {\n const allElements = Array.from(itemContainer.children) as HTMLElement[];\n const targetIndex = allElements.findIndex((x) => x === item);\n if (this.isAnythingNeedToBeMoved(allElements, targetIndex, elementsThatShouldBeInFront)) {\n this.fMediator.send(\n new MoveFrontElementsBeforeTargetElementRequest(itemContainer, allElements, elementsThatShouldBeInFront, targetIndex)\n );\n }\n }\n\n private isAnythingNeedToBeMoved(allElements: HTMLElement[], targetIndex: number, elementsThatShouldBeInFront: HTMLElement[]): boolean {\n for (let i = targetIndex + 1; i < allElements.length; i++) {\n if (!elementsThatShouldBeInFront.includes(allElements[ i ])) {\n return true;\n }\n }\n return false;\n }\n\n private getChildrenGroups(elements: HTMLElement[]): HTMLElement[] {\n const allElements = Array.from(this.fGroupsContainer.children) as HTMLElement[];\n return elements.filter((x) => this.fGroupsContainer.contains(x))\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodes(elements: HTMLElement[]): HTMLElement[] {\n const allElements = Array.from(this.fNodesContainer.children) as HTMLElement[];\n return elements.filter((x) => this.fNodesContainer.contains(x))\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodesAndGroups(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId)).map((x) => x.hostElement);\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { SelectAndUpdateNodeLayerRequest } from './select-and-update-node-layer.request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { UpdateItemAndChildrenLayersRequest } from '../../update-item-and-children-layers';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(SelectAndUpdateNodeLayerRequest)\nexport class SelectAndUpdateNodeLayerExecution implements IHandler<SelectAndUpdateNodeLayerRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n public handle(request: SelectAndUpdateNodeLayerRequest): void {\n this.selectNodeIfNotSelected(request.fNode);\n\n this.fMediator.send<void>(\n new UpdateItemAndChildrenLayersRequest(request.fNode, request.fNode.hostElement.parentElement as HTMLElement)\n );\n }\n\n private selectNodeIfNotSelected(fNode: FNodeBase) {\n if (!this.fDraggableDataContext.selectedItems.includes(fNode) && !fNode.fSelectionDisabled) {\n this.fDraggableDataContext.selectedItems.push(fNode);\n fNode.select();\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","import { ClearSelectionExecution } from './clear-selection';\nimport { GetSelectionExecution } from './get-selection';\nimport { SelectExecution } from './select';\nimport { SelectAllExecution } from './select-all';\nimport {\n SelectAndUpdateNodeLayerExecution\n} from './select-and-update-node-layer/select-and-update-node-layer.execution';\n\nexport const F_SELECTION_FEATURES = [\n\n ClearSelectionExecution,\n\n GetSelectionExecution,\n\n SelectExecution,\n\n SelectAllExecution,\n\n SelectAndUpdateNodeLayerExecution\n];\n","import { Injectable } from '@angular/core';\nimport { IRect, ITransformModel, RectExtensions } from '@foblex/2d';\nimport { ISelectableWithRect } from './i-selectable-with-rect';\nimport { GetCanBeSelectedItemsRequest } from './get-can-be-selected-items-request';\nimport { FNodeBase } from '../../f-node';\nimport { FConnectionBase } from '../../f-connection';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(GetCanBeSelectedItemsRequest)\nexport class GetCanBeSelectedItemsExecution implements IExecution<void, ISelectableWithRect[]> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(): ISelectableWithRect[] {\n return [ ...this.getNodesWithRects(), ...this.getConnectionsWithRects() ].filter((x) => {\n return !this.fDraggableDataContext.selectedItems.includes(x.element);\n });\n }\n\n private getNodesWithRects(): ISelectableWithRect[] {\n return this.fNodes.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n rect: RectExtensions.mult(\n this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement)),\n this.transform.scale\n )\n };\n });\n }\n\n private getConnectionsWithRects(): ISelectableWithRect[] {\n return this.fConnections.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n rect: RectExtensions.mult(\n this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.boundingElement)),\n this.transform.scale\n )\n };\n });\n }\n}\n","import { EFConnectionBehavior } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { IRoundedRect } from '@foblex/2d';\n\nexport class GetConnectionLineRequest {\n\n constructor(\n public outputRect: IRoundedRect,\n public inputRect: IRoundedRect,\n public behavior: EFConnectionBehavior | string,\n public outputSide: EFConnectableSide,\n public inputSide: EFConnectableSide,\n ) {\n\n }\n}\n","import { GetConnectionLineRequest } from './get-connection-line.request';\nimport { Injectable } from '@angular/core';\nimport { EFConnectionBehavior } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetIntersections, ILine, IPoint, IRect, IRoundedRect, Line, Point } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(GetConnectionLineRequest)\nexport class GetConnectionLineExecution implements IExecution<GetConnectionLineRequest, ILine> {\n\n private behaviorHandlers = {\n\n [ EFConnectionBehavior.FLOATING.toString() ]: this.floatingBehavior,\n\n [ EFConnectionBehavior.FIXED_CENTER.toString() ]: this.fixedCenterBehavior,\n\n [ EFConnectionBehavior.FIXED.toString() ]: this.fixedOutboundBehaviour,\n }\n\n public handle(payload: GetConnectionLineRequest): ILine {\n return this.behaviorHandlers[ payload.behavior ](payload);\n }\n\n private floatingBehavior(payload: GetConnectionLineRequest): ILine {\n const fromResult = GetIntersections.getRoundedRectIntersections(payload.outputRect.gravityCenter, payload.inputRect.gravityCenter, payload.outputRect)[ 0 ];\n const toResult = GetIntersections.getRoundedRectIntersections(payload.inputRect.gravityCenter, payload.outputRect.gravityCenter, payload.inputRect)[ 0 ];\n return new Line(\n fromResult ? fromResult : payload.outputRect.gravityCenter,\n toResult ? toResult : payload.inputRect.gravityCenter\n );\n }\n\n private fixedCenterBehavior(payload: GetConnectionLineRequest): ILine {\n return new Line(\n payload.outputRect.gravityCenter,\n payload.inputRect.gravityCenter\n );\n }\n\n private fixedOutboundBehaviour(payload: GetConnectionLineRequest): ILine {\n return new Line(\n positionFixedOutbound[ payload.outputSide === EFConnectableSide.AUTO ? EFConnectableSide.BOTTOM : payload.outputSide ](payload.outputRect as IRoundedRect),\n positionFixedOutbound[ payload.inputSide === EFConnectableSide.AUTO ? EFConnectableSide.TOP : payload.inputSide ](payload.inputRect as IRoundedRect)\n );\n }\n}\n\nconst positionFixedOutbound = {\n [ EFConnectableSide.TOP ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.y = rect.y;\n result.x = rect.x + rect.width / 2;\n return result;\n },\n [ EFConnectableSide.BOTTOM ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.y = rect.y + rect.height;\n result.x = rect.x + rect.width / 2;\n return result;\n },\n [ EFConnectableSide.LEFT ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.x = rect.x;\n result.y = rect.y + rect.height / 2;\n return result;\n },\n [ EFConnectableSide.RIGHT ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.x = rect.x + rect.width;\n result.y = rect.y + rect.height / 2;\n return result;\n },\n};\n\n\n\n\n","export class GetFlowStateConnectionsRequest {\n\n}\n","import { Injectable } from '@angular/core';\nimport { GetFlowStateConnectionsRequest } from './get-flow-state-connections-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IFFlowStateConnection } from '../i-f-flow-state-connection';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateConnectionsRequest)\nexport class GetFlowStateConnectionsExecution implements IExecution<GetFlowStateConnectionsRequest, IFFlowStateConnection[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetFlowStateConnectionsRequest): IFFlowStateConnection[] {\n return this.fComponentsStore.fConnections.map((x) => {\n return {\n id: x.fId,\n fOutputId: x.fOutputId,\n fInputId: x.fInputId,\n fType: x.fType,\n fBehavior: x.fBehavior,\n isSelected: x.isSelected()\n }\n });\n }\n}\n","import { Type } from '@angular/core';\n\nexport class GetFlowStateNodesRequest {\n\n constructor(\n public type: Type<any>\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetFlowStateNodesRequest } from './get-flow-state-nodes-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IFFlowStateNode } from '../i-f-flow-state-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IFFlowStateConnector } from '../i-f-flow-state-connector';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateNodesRequest)\nexport class GetFlowStateNodesExecution implements IExecution<GetFlowStateNodesRequest, IFFlowStateNode[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetFlowStateNodesRequest): IFFlowStateNode[] {\n return this.fComponentsStore.fNodes.filter((x) => x instanceof request.type).map((x) => {\n return {\n id: x.fId,\n parent: x.fParentId,\n position: x.position,\n size: x.size,\n fOutputs: this.getOutputs(x.hostElement),\n fInputs: this.getInputs(x.hostElement),\n isSelected: x.isSelected()\n };\n });\n }\n\n private getOutputs(hostElement: HTMLElement): IFFlowStateConnector[] {\n return this.fComponentsStore.fOutputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {\n return {\n id: x.id,\n fConnectableSide: x.fConnectableSide\n }\n });\n }\n\n private getInputs(hostElement: HTMLElement): IFFlowStateConnector[] {\n return this.fComponentsStore.fInputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {\n return {\n id: x.id,\n fConnectableSide: x.fConnectableSide\n }\n });\n }\n}\n","export class GetFlowStateRequest {\n}\n","import { GetFlowStateRequest } from './get-flow-state.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IFFlowState } from './i-f-flow-state';\nimport { FComponentsStore } from '../../f-storage';\nimport { FGroupDirective, FNodeDirective } from '../../f-node';\nimport { IPoint, ITransformModel, PointExtensions } from '@foblex/2d';\nimport { GetFlowStateNodesRequest } from './get-flow-state-nodes';\nimport { GetFlowStateConnectionsRequest } from './get-flow-state-connections';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateRequest)\nexport class GetFlowStateExecution implements IExecution<GetFlowStateRequest, IFFlowState> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(payload: GetFlowStateRequest): IFFlowState {\n return {\n position: this.getCanvasPosition(this.fComponentsStore.fCanvas!.transform),\n scale: this.fComponentsStore.fCanvas!.transform.scale,\n nodes: this.fMediator.send(new GetFlowStateNodesRequest(FNodeDirective)),\n groups: this.fMediator.send(new GetFlowStateNodesRequest(FGroupDirective)),\n connections: this.fMediator.send(new GetFlowStateConnectionsRequest())\n }\n }\n\n private getCanvasPosition(transform: ITransformModel): IPoint {\n return PointExtensions.sum(transform.position, transform.scaledPosition);\n }\n}\n\n\n\n","import { GetFlowStateExecution } from './get-flow-state.execution';\nimport { GetFlowStateNodesExecution } from './get-flow-state-nodes';\nimport { GetFlowStateConnectionsExecution } from './get-flow-state-connections';\n\nexport const GET_FLOW_STATE_PROVIDERS = [\n\n GetFlowStateExecution,\n\n GetFlowStateNodesExecution,\n\n GetFlowStateConnectionsExecution\n];\n","export class GetScaledNodeRectsWithFlowPositionRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { GetScaledNodeRectsWithFlowPositionRequest } from './get-scaled-node-rects-with-flow-position.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetScaledNodeRectsWithFlowPositionRequest)\nexport class GetScaledNodeRectsWithFlowPositionExecution implements IExecution<GetScaledNodeRectsWithFlowPositionRequest, IRect | null> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetScaledNodeRectsWithFlowPositionRequest): IRect | null {\n return RectExtensions.union(this.getNodesRects());\n }\n\n private getNodesRects(): IRect[] {\n return this.getNodes().map((x) => {\n const rect = RectExtensions.fromElement(x.hostElement);\n return RectExtensions.initialize(x.position.x, x.position.y, rect.width, rect.height);\n });\n }\n\n private getNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n}\n","export class GetNodesRectRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { GetNodesRectRequest } from './get-nodes-rect.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetNodesRectRequest)\nexport class GetNodesRectExecution implements IExecution<GetNodesRectRequest, IRect | null> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetNodesRectRequest): IRect | null {\n return RectExtensions.union(this.getNodesRects());\n }\n\n private getNodesRects(): IRect[] {\n return this.getNodes().map((x) => RectExtensions.fromElement(x.hostElement));\n }\n\n private getNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class GetPositionInFlowRequest {\n constructor(\n public position: IPoint\n ) {\n }\n}\n","import { IPoint, ITransformModel, Point } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { GetPositionInFlowRequest } from './get-position-in-flow-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetPositionInFlowRequest)\nexport class GetPositionInFlowExecution implements IExecution<GetPositionInFlowRequest, IPoint> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetPositionInFlowRequest): IPoint {\n return Point.fromPoint(request.position).elementTransform(this.flowHost)\n .sub(this.transform.scaledPosition).sub(this.transform.position).div(this.transform.scale);\n }\n}\n","import { IRect, ITransformModel } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IsConnectionUnderNodeRequest } from './is-connection-under-node.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext, NodeDragHandler } from '../../f-draggable';\nimport { FNodeBase } from '../../f-node';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FConnectionBase } from '../../f-connection';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(IsConnectionUnderNodeRequest)\nexport class IsConnectionUnderNodeExecution implements IExecution<IsConnectionUnderNodeRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n // private getOutgoingConnectionsHandler: GetOutgoingConnectionsHandler,\n // private getIncomingConnectionsHandler: GetIncomingConnectionsHandler\n ) {\n }\n\n public handle(): void {\n\n const isValid = this.isValidRequest();\n if (!isValid) {\n return;\n }\n\n const fNode = (this.fDraggableDataContext.draggableItems[ 0 ] as NodeDragHandler).fNode;\n\n const outputsOfNode = this.getOutputsForNode(fNode);\n const inputsOfNode = this.getInputsForNode(fNode);\n\n const isCantBeConnectedByOutput = outputsOfNode.some((x) => !x.canBeConnected);\n\n const isCantBeConnectedByInput = this.fComponentsStore.fConnections.some((x) => {\n return inputsOfNode.find((input) => input.id === x.fInputId);\n });\n\n if (!isCantBeConnectedByInput && outputsOfNode.length && !isCantBeConnectedByOutput && inputsOfNode.length) {\n const output = outputsOfNode[ 0 ];\n const input = inputsOfNode[ 0 ];\n // const outgoingConnections = this.getOutgoingConnectionsHandler.handle([ output ]);\n // const incomingConnections = this.getIncomingConnectionsHandler.handle([ input ]);\n // if (outgoingConnections.length === 0 && incomingConnections.length === 0) {\n // const connections = this.findConnectionsUnderNode(fNode);\n // if (connections.length) {\n // //TODO: need to implement\n // }\n // }\n }\n }\n\n private isValidRequest(): boolean {\n const result =\n this.fDraggableDataContext.draggableItems.length === 1 &&\n this.fDraggableDataContext.draggableItems[ 0 ] instanceof NodeDragHandler;\n\n return result;\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private findConnectionsUnderNode(node: FNodeBase): FConnectionBase[] {\n const nodeRect = this.fMediator.send<IRect>(new GetElementRectInFlowRequest(node.hostElement));\n return this.fComponentsStore.fConnections.filter((x) => {\n // const intersection = [];// RectExtensions.intersectionWithVector(nodeRect, x.line.point1, x.line.point2, 0, 0, 0, 0);\n return ([]).length > 0\n });\n }\n}\n// @Injectable()\n// export class GetIncomingConnectionsHandler implements IHandler<FConnectorBase[], FConnectionBase[]> {\n//\n// private get fConnections(): FConnectionBase[] {\n// return this.fComponentsStore.fConnections;\n// }\n//\n// constructor(\n// private fComponentsStore: FComponentsStore,\n// ) {\n// }\n//\n// public handle(inputs: FConnectorBase[]): FConnectionBase[] {\n// const inputsIds = inputs.map((x) => x.id);\n// return this.fConnections.filter((x) => {\n// return inputsIds.includes(x.fInputId);\n// })!;\n// }\n// }\n// @Injectable()\n// export class GetOutgoingConnectionsHandler implements IHandler<FConnectorBase[], FConnectionBase[]> {\n//\n// private get fConnections(): FConnectionBase[] {\n// return this.fComponentsStore.fConnections;\n// }\n//\n// constructor(\n// private fComponentsStore: FComponentsStore,\n// ) {\n// }\n//\n// public handle(outputs: FConnectorBase[]): FConnectionBase[] {\n// const outputsIds = outputs.map((x) => x.id);\n// return this.fConnections.filter((x) => {\n// return outputsIds.includes(x.fOutputId);\n// })!;\n// }\n// }\n","export class RedrawConnectionsRequest {\n}\n","import { ILine } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { RedrawConnectionsRequest } from './redraw-connections-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetConnectionLineRequest } from '../get-connection-line';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FConnectionBase } from '../../f-connection';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\nimport { CreateConnectionMarkersRequest } from '../create-connection-markers';\nimport { IRoundedRect } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(RedrawConnectionsRequest)\nexport class RedrawConnectionsExecution implements IExecution<RedrawConnectionsRequest, void> {\n\n constructor(\n private readonly fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: RedrawConnectionsRequest): void {\n this.resetConnectors();\n\n if (this.fComponentsStore.fTempConnection) {\n this.setMarkers(this.fComponentsStore.fTempConnection);\n }\n\n if(this.fComponentsStore.fSnapConnection) {\n this.setMarkers(this.fComponentsStore.fSnapConnection);\n }\n\n this.fComponentsStore.fConnections.forEach((connection) => {\n const output = this.fComponentsStore.fOutputs.find((x) => x.id === connection.fOutputId);\n const input = this.fComponentsStore.fInputs.find((x) => x.id === connection.fInputId);\n if (output && input) {\n this.setupConnection(output, input, connection);\n }\n });\n }\n\n private resetConnectors(): void {\n this.fComponentsStore.fOutputs.forEach((output) => output.setConnected(false));\n this.fComponentsStore.fInputs.forEach((input) => input.setConnected(false));\n }\n\n private setupConnection(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): void {\n output.setConnected(true);\n input.setConnected(true);\n\n const line = this.getLine(output, input, connection);\n\n this.setMarkers(connection);\n\n connection.setLine(line.point1, output.fConnectableSide, line.point2, input.fConnectableSide);\n\n connection.initialize();\n connection.isSelected() ? connection.select() : null;\n }\n\n private getLine(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): ILine {\n const outputRect = this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(output.hostElement));\n const inputRect = this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(input.hostElement));\n return this.fMediator.send(new GetConnectionLineRequest(\n outputRect,\n inputRect,\n connection.fBehavior,\n output.fConnectableSide,\n input.fConnectableSide\n )\n );\n }\n\n private setMarkers(connection: FConnectionBase): void {\n this.fMediator.send(\n new CreateConnectionMarkersRequest(connection)\n );\n }\n}\n","export class ShowConnectionsAfterCalculationsRequest {\n}\n","import { Injectable } from '@angular/core';\nimport { ShowConnectionsAfterCalculationsRequest } from './show-connections-after-calculations-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(ShowConnectionsAfterCalculationsRequest)\nexport class ShowConnectionsAfterCalculationsExecution implements IExecution<ShowConnectionsAfterCalculationsRequest, void> {\n\n constructor(\n private readonly fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: ShowConnectionsAfterCalculationsRequest): void {\n this.fComponentsStore.fConnections.forEach((connection) => {\n connection.hostElement.style.display = 'unset';\n });\n }\n}\n","export class SortNodeLayersRequest {\n\n}\n","import { SortNodeLayersRequest } from './sort-node-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../get-deep-children-nodes-and-groups';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(SortNodeLayersRequest)\nexport class SortNodeLayersExecution implements IExecution<SortNodeLayersRequest, void> {\n\n private get fGroupsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement;\n }\n\n private get fNodesContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement;\n }\n\n private get fNodesContainerElements(): HTMLElement[] {\n return Array.from(this.fNodesContainer.children) as HTMLElement[];\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n }\n\n public handle(request: SortNodeLayersRequest): void {\n this.getGroups().forEach((parent: FNodeBase) => {\n this.moveChildrenNodes(this.getSortedChildrenNodes(parent));\n });\n }\n\n private getGroups(): FNodeBase[] {\n return this.fComponentsStore.fNodes.filter((x) => this.fGroupsContainer.contains(x.hostElement));\n }\n\n private getSortedChildrenNodes(\n parent: FNodeBase,\n ): HTMLElement[] {\n const allElements = this.fNodesContainerElements;\n return this.getChildrenNodes(parent.fId)\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodes(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId))\n .filter((x) => this.fNodesContainer.contains(x.hostElement)).map((x) => x.hostElement);\n }\n\n private moveChildrenNodes(\n sortedChildrenGroups: HTMLElement[],\n ): void {\n const fragment = this.fBrowser.document.createDocumentFragment();\n sortedChildrenGroups.forEach((childGroup: HTMLElement) => {\n fragment.appendChild(childGroup); // Append automatically removes the element from its current position\n });\n this.fNodesContainer.appendChild(fragment);\n }\n}\n","export class SortItemsByParentRequest {\n\n constructor(\n public fItemsContainer: HTMLElement // fGroupsContainer || fNodesContainer\n ) {\n }\n}\n","import { SortItemsByParentRequest } from './sort-items-by-parent.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../get-deep-children-nodes-and-groups';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(SortItemsByParentRequest)\nexport class SortItemsByParentExecution implements IExecution<SortItemsByParentRequest, void> {\n\n private fItemsContainer!: HTMLElement;\n\n private get fItemsFromContainer(): HTMLElement[] {\n return Array.from(this.fItemsContainer.children) as HTMLElement[];\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: SortItemsByParentRequest): void {\n this.fItemsContainer = request.fItemsContainer;\n this.getItems().forEach((parent: FNodeBase) => {\n this.moveChildrenItems(this.getSortedChildrenItems(parent), parent);\n });\n }\n\n private getItems(): FNodeBase[] {\n return this.fComponentsStore.fNodes.filter((x) => this.fItemsContainer.contains(x.hostElement));\n }\n\n private getSortedChildrenItems(\n parent: FNodeBase,\n ): HTMLElement[] {\n const allElements = this.fItemsFromContainer;\n const parentIndex = allElements.indexOf(parent.hostElement);\n return this.getChildrenGroups(parent.fId)\n .filter((child: HTMLElement) => allElements.indexOf(child) < parentIndex)\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenGroups(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId))\n .filter((x) => this.fItemsContainer.contains(x.hostElement)).map((x) => x.hostElement);\n }\n\n private moveChildrenItems(\n sortedChildrenItems: HTMLElement[],\n parent: FNodeBase,\n ): void {\n let nextSibling = parent.hostElement.nextElementSibling;\n\n const fragment = this.fBrowser.document.createDocumentFragment();\n\n sortedChildrenItems.forEach((child: HTMLElement) => {\n fragment.appendChild(child); // Append automatically removes the element from its current position\n });\n this.fItemsContainer.insertBefore(fragment, nextSibling);\n }\n}\n","export class SortItemLayersRequest {\n\n}\n","import { SortItemLayersRequest } from './sort-item-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { SortNodeLayersRequest } from './sort-node-layers-by-groups';\nimport { SortItemsByParentRequest } from './sort-items-by-parent';\nimport { FComponentsStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(SortItemLayersRequest)\nexport class SortItemLayersExecution implements IExecution<SortItemLayersRequest, void> {\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: SortItemLayersRequest): void {\n this.fMediator.send(new SortItemsByParentRequest(this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement));\n this.fMediator.send(new SortNodeLayersRequest());\n this.fMediator.send(new SortItemsByParentRequest(this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement));\n }\n}\n","export class SubscribeOnTransformChangesRequest {\n\n}\n","import { SubscribeOnTransformChangesRequest } from './subscribe-on-transform-changes.request';\nimport { Injectable } from '@angular/core';\nimport { merge, Observable } from 'rxjs';\nimport { FComponentsStore, FTransformStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(SubscribeOnTransformChangesRequest)\nexport class SubscribeOnTransformChangesExecution\n implements IExecution<SubscribeOnTransformChangesRequest, Observable<void>> {\n\n constructor(\n private fTransformStore: FTransformStore,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: SubscribeOnTransformChangesRequest): Observable<void> {\n return merge(\n this.fTransformStore.changes,\n this.fComponentsStore.componentsData$,\n this.fComponentsStore.componentsCount$\n );\n }\n}\n","export const F_CANVAS_ANIMATION_DURATION = 150;\n","import { BrowserService } from '@foblex/platform';\n\nexport function createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","import { GetConnectionLineExecution } from './get-connection-line';\nimport { RedrawConnectionsExecution } from './redraw-connections';\nimport { GetNodesRectExecution } from './get-nodes-rect';\nimport { GetElementRectInFlowExecution } from './get-element-rect-in-flow';\nimport {\n MoveFrontElementsBeforeTargetElementExecution,\n UpdateItemAndChildrenLayersExecution\n} from './update-item-and-children-layers';\nimport { GetPositionInFlowExecution } from './get-position-in-flow';\nimport { CreateConnectionMarkersExecution } from './create-connection-markers';\nimport { GetCanBeSelectedItemsExecution } from './get-can-be-selected-items';\nimport { IsConnectionUnderNodeExecution } from './is-connection-under-node';\nimport { GetScaledNodeRectsWithFlowPositionExecution } from './get-scaled-node-rects-with-flow-position';\nimport { EmitTransformChangesExecution } from './emit-transform-changes';\nimport { SubscribeOnTransformChangesExecution } from './subscribe-on-transform-changes';\nimport { SortItemLayersExecution, SortItemsByParentExecution, SortNodeLayersExecution } from './sort-item-layers';\nimport { GetDeepChildrenNodesAndGroupsExecution } from './get-deep-children-nodes-and-groups';\nimport { CreateRoundedRectFromElementExecution } from './create-rounded-rect-from-element';\nimport { GET_FLOW_STATE_PROVIDERS } from './get-flow-state';\nimport { ShowConnectionsAfterCalculationsExecution } from './show-connections-after-calculations';\nimport { F_SELECTION_FEATURES } from './f-selection';\nimport { F_BACKGROUND_FEATURES } from './f-background';\nimport { F_CANVAS_FEATURES } from './f-canvas';\nimport { F_CONNECTION_FEATURES } from './f-connection';\n\nexport const COMMON_PROVIDERS = [\n\n ...F_CANVAS_FEATURES,\n\n ...F_CONNECTION_FEATURES,\n\n ...F_BACKGROUND_FEATURES,\n\n CreateConnectionMarkersExecution,\n\n CreateRoundedRectFromElementExecution,\n\n EmitTransformChangesExecution,\n\n ...F_SELECTION_FEATURES,\n\n GetCanBeSelectedItemsExecution,\n\n GetDeepChildrenNodesAndGroupsExecution,\n\n GetConnectionLineExecution,\n\n GetElementRectInFlowExecution,\n\n ...GET_FLOW_STATE_PROVIDERS,\n\n GetScaledNodeRectsWithFlowPositionExecution,\n\n GetNodesRectExecution,\n\n GetPositionInFlowExecution,\n\n IsConnectionUnderNodeExecution,\n\n RedrawConnectionsExecution,\n\n ShowConnectionsAfterCalculationsExecution,\n\n SortItemLayersExecution,\n\n SortItemsByParentExecution,\n\n SortNodeLayersExecution,\n\n SubscribeOnTransformChangesExecution,\n\n UpdateItemAndChildrenLayersExecution,\n\n MoveFrontElementsBeforeTargetElementExecution,\n];\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef, Input, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport {\n IPoint, ISize, ITransformModel,\n PointExtensions, SizeExtensions, TransformModelExtensions\n} from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { Subject, Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { createSVGElement } from '../../domain';\nimport { BrowserService } from '@foblex/platform';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-rect-pattern\",\n template: ``,\n host: {\n '[attr.id]': 'id'\n },\n providers: [\n { provide: F_BACKGROUND_PATTERN, useExisting: FRectPatternComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FRectPatternComponent implements OnInit, OnDestroy, IFBackgroundPattern {\n\n private _subscription$: Subscription = new Subscription();\n\n private _stateChanges: Subject<void> = new Subject<void>();\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n private _vColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set vColor(value: string) {\n this._vColor = value;\n this._stateChanges.next();\n }\n\n private _hColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set hColor(value: string) {\n this._vColor = value;\n this._stateChanges.next();\n }\n\n private _vSize: number = 20;\n\n @Input()\n public set vSize(value: number) {\n this._vSize = value;\n this._stateChanges.next();\n }\n\n private _hSize: number = 20;\n\n @Input()\n public set hSize(value: number) {\n this._hSize = value;\n this._stateChanges.next();\n }\n\n private _transform: ITransformModel = TransformModelExtensions.default();\n\n private _position: IPoint = PointExtensions.initialize();\n\n private _size: ISize = SizeExtensions.initialize(this._hSize, this._vSize);\n\n private _pattern!: SVGPatternElement;\n private _vLine!: SVGLineElement;\n private _hLine!: SVGLineElement;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fBrowser: BrowserService\n ) {\n this.createPattern();\n }\n\n private createPattern(): void {\n this._pattern = createSVGElement('pattern', this.fBrowser);\n this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');\n this.hostElement.appendChild(this._pattern);\n\n this._vLine = createSVGElement('line', this.fBrowser);\n this._pattern.appendChild(this._vLine);\n\n this._hLine = createSVGElement('line', this.fBrowser);\n this._pattern.appendChild(this._hLine);\n }\n\n public ngOnInit(): void {\n this._subscription$.add(this.subscribeToStateChanges());\n }\n\n private subscribeToStateChanges(): Subscription {\n return this._stateChanges.pipe(startWith(null)).subscribe(() => {\n this.redraw();\n });\n }\n\n private calculatePattern(): void {\n this._position.x = this._transform.position.x + this._transform.scaledPosition.x;\n this._position.y = this._transform.position.y + this._transform.scaledPosition.y;\n this._size = SizeExtensions.initialize(this._hSize * this._transform.scale, this._vSize * this._transform.scale);\n }\n\n private redraw(): void {\n this.calculatePattern();\n this.redrawPattern();\n\n this.redrawLine(this._vLine, this._vColor, this._size.width, 0, this._size.width, this._size.height);\n this.redrawLine(this._hLine, this._hColor, 0, this._size.height, this._size.width, this._size.height);\n }\n\n private redrawPattern(): void {\n this._pattern.setAttribute('x', `${ this._position.x }`);\n this._pattern.setAttribute('y', `${ this._position.y }`);\n this._pattern.setAttribute('width', `${ this._size.width }`);\n this._pattern.setAttribute('height', `${ this._size.height }`);\n }\n\n private redrawLine(line: SVGLineElement, color: string, x1: number, y1: number, x2: number, y2: number): void {\n line.setAttribute('stroke', `${ color }`);\n line.setAttribute('x1', `${ x1 }`);\n line.setAttribute('x2', `${ x2 }`);\n line.setAttribute('y1', `${ y1 }`);\n line.setAttribute('y2', `${ y2 }`);\n }\n\n public setTransform(transform: ITransformModel): void {\n this._transform = transform;\n this._stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this._subscription$.unsubscribe();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef, Input, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport {\n IPoint,\n ITransformModel,\n PointExtensions,\n TransformModelExtensions\n} from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../../domain';\nimport { Subject, Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-circle-pattern\",\n template: ``,\n host: {\n '[attr.id]': 'id'\n },\n providers: [\n { provide: F_BACKGROUND_PATTERN, useExisting: FCirclePatternComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FCirclePatternComponent implements OnInit, OnDestroy, IFBackgroundPattern {\n\n private _subscription$: Subscription = new Subscription();\n\n private _stateChanges: Subject<void> = new Subject<void>();\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n\n private _color: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set color(value: string) {\n this._color = value;\n this._stateChanges.next();\n }\n\n private _radius: number = 20;\n private _scaledRadius: number = 20;\n\n @Input()\n public set radius(value: number) {\n this._radius = value;\n this._stateChanges.next();\n }\n\n private _transform: ITransformModel = TransformModelExtensions.default();\n\n private _position: IPoint = PointExtensions.initialize();\n\n private _pattern!: SVGPatternElement;\n private _circle!: SVGCircleElement;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fBrowser: BrowserService\n ) {\n this.createPattern();\n }\n\n private createPattern(): void {\n this._pattern = createSVGElement('pattern', this.fBrowser);\n this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');\n this.hostElement.appendChild(this._pattern);\n\n this._circle = createSVGElement('circle', this.fBrowser);\n this._pattern.appendChild(this._circle);\n }\n\n public ngOnInit(): void {\n this._subscription$.add(this.subscribeToStateChanges());\n }\n\n private subscribeToStateChanges(): Subscription {\n return this._stateChanges.pipe(startWith(null)).subscribe(() => {\n this.redraw();\n });\n }\n\n private calculatePattern(): void {\n this._position.x = this._transform.position.x + this._transform.scaledPosition.x;\n this._position.y = this._transform.position.y + this._transform.scaledPosition.y;\n this._scaledRadius = this._radius * this._transform.scale;\n }\n\n private redraw(): void {\n this.calculatePattern();\n this.redrawPattern();\n this.redrawElement();\n }\n\n private redrawPattern(): void {\n this._pattern.setAttribute('x', `${ this._position.x }`);\n this._pattern.setAttribute('y', `${ this._position.y }`);\n this._pattern.setAttribute('width', `${ this._scaledRadius }`);\n this._pattern.setAttribute('height', `${ this._scaledRadius }`);\n }\n\n private redrawElement(): void {\n this._circle.setAttribute('fill', this._color);\n this._circle.setAttribute('cx', `${ this._scaledRadius / 2 }`);\n this._circle.setAttribute('cy', `${ this._scaledRadius / 2 }`);\n this._circle.setAttribute('r', `${ this._scaledRadius / this._radius }`);\n }\n\n public setTransform(transform: ITransformModel): void {\n this._transform = transform;\n this._stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this._subscription$.unsubscribe();\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { ITransformModel } from '@foblex/2d';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_BACKGROUND = new InjectionToken<FBackgroundBase>('F_BACKGROUND');\n\n@Directive()\nexport abstract class FBackgroundBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract isBackgroundElement(element: HTMLElement | SVGElement): boolean;\n\n public abstract setTransform(transform: ITransformModel): void;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ContentChild,\n ElementRef, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport { F_BACKGROUND, FBackgroundBase } from './f-background-base';\nimport { ITransformModel } from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from './domain';\nimport { FComponentsStore } from '../f-storage';\nimport { FMediator } from '@foblex/mediator';\nimport { AddPatternToBackgroundRequest } from '../domain';\n\n@Component({\n selector: \"f-background\",\n template: \"<svg><ng-content></ng-content></svg>\",\n styleUrls: [ \"./f-background.component.scss\" ],\n host: {\n 'class': 'f-component f-background'\n },\n providers: [ { provide: F_BACKGROUND, useExisting: FBackgroundComponent } ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FBackgroundComponent extends FBackgroundBase implements OnInit, AfterContentInit, OnDestroy {\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @ContentChild(F_BACKGROUND_PATTERN, { static: false })\n public fBackgroundPattern: IFBackgroundPattern | undefined;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fBackground = this;\n }\n\n public ngAfterContentInit(): void {\n this.fMediator.send(new AddPatternToBackgroundRequest(this.fBackgroundPattern!));\n }\n\n public override isBackgroundElement(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setTransform(transform: ITransformModel): void {\n this.fBackgroundPattern?.setTransform(transform);\n }\n\n public ngOnDestroy() {\n this.fComponentsStore.fBackground = undefined;\n }\n}\n","import { FBackgroundComponent } from './f-background.component';\nimport { FRectPatternComponent } from './f-rect-pattern';\nimport { FCirclePatternComponent } from './f-circle-pattern';\n\nexport const F_BACKGROUND_PROVIDERS = [\n\n FBackgroundComponent,\n\n FRectPatternComponent,\n\n FCirclePatternComponent\n];\n","import { IPoint } from '@foblex/2d';\n\nexport class FCanvasChangeEvent {\n constructor(\n public readonly position: IPoint,\n public readonly scale: number,\n ) {\n }\n}\n","import { PointExtensions, TransformModelExtensions, IPoint } from '@foblex/2d';\nimport { Directive, ElementRef, EventEmitter, InjectionToken } from '@angular/core';\nimport { FCanvasChangeEvent } from './domain';\nimport { FNodeBase } from '../f-node';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_CANVAS = new InjectionToken<FCanvasBase>('F_CANVAS');\n\n\n@Directive()\nexport abstract class FCanvasBase implements IHasHostElement {\n\n public abstract fCanvasChange: EventEmitter<FCanvasChangeEvent>;\n\n public abstract fNodes: FNodeBase[];\n\n public abstract hostElement: HTMLElement;\n\n public abstract fGroupsContainer: ElementRef<HTMLElement>;\n\n public abstract fNodesContainer: ElementRef<HTMLElement>;\n\n public abstract fConnectionsContainer: ElementRef<HTMLElement>;\n\n public transform = TransformModelExtensions.default();\n\n public abstract redraw(): void;\n\n public abstract redrawWithAnimation(): void;\n\n public getPosition(): IPoint {\n return this.transform.position;\n }\n\n public setPosition(position: IPoint): void {\n this.transform.position = position;\n }\n\n public abstract setZoom(scale: number, toPosition: IPoint): void;\n\n public abstract resetZoom(): void;\n\n public emitCanvasChangeEvent(): void {\n this.fCanvasChange.emit(\n new FCanvasChangeEvent(PointExtensions.sum(this.transform.position, this.transform.scaledPosition), this.transform.scale)\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild,\n} from \"@angular/core\";\nimport {\n FCanvasBase, F_CANVAS\n} from './f-canvas-base';\nimport { IPoint, PointExtensions, TransformModelExtensions } from '@foblex/2d';\nimport {\n FCanvasChangeEvent,\n} from './domain';\nimport { FComponentsStore } from '../f-storage';\nimport { FNodeBase } from '../f-node';\nimport { FMediator } from '@foblex/mediator';\nimport {\n CenterGroupOrNodeRequest,\n EmitTransformChangesRequest,\n F_CANVAS_ANIMATION_DURATION,\n FitToFlowRequest,\n InputCanvasPositionRequest,\n InputCanvasScaleRequest,\n ResetScaleAndCenterRequest, ResetScaleRequest, UpdateScaleRequest,\n} from '../domain';\n\n@Component({\n selector: 'f-canvas',\n templateUrl: './f-canvas.component.html',\n styleUrls: [ './f-canvas.component.scss' ],\n exportAs: 'fComponent',\n host: {\n 'class': 'f-component f-canvas',\n },\n providers: [\n { provide: F_CANVAS, useExisting: FCanvasComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FCanvasComponent extends FCanvasBase implements OnInit {\n\n @Output()\n public override fCanvasChange: EventEmitter<FCanvasChangeEvent> = new EventEmitter<FCanvasChangeEvent>();\n\n @Input()\n public set position(value: IPoint | undefined) {\n this.fMediator.send(new InputCanvasPositionRequest(this.transform, value));\n }\n\n @Input()\n public set scale(value: number | undefined) {\n this.fMediator.send(new InputCanvasScaleRequest(this.transform, value));\n }\n\n public override get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @ViewChild('fGroupsContainer', { static: true })\n public override fGroupsContainer!: ElementRef<HTMLElement>;\n\n @ViewChild('fNodesContainer', { static: true })\n public override fNodesContainer!: ElementRef<HTMLElement>;\n\n @ViewChild('fConnectionsContainer', { static: true })\n public override fConnectionsContainer!: ElementRef<HTMLElement>;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n this.fComponentsStore.fCanvas = this;\n }\n\n public override redraw(): void {\n this.fComponentsStore.fBackground?.setTransform(this.transform);\n this.hostElement.setAttribute(\"style\", `transform: ${ TransformModelExtensions.toString(this.transform) }`);\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public override redrawWithAnimation(): void {\n this.fComponentsStore.fBackground?.setTransform(this.transform);\n this.hostElement.setAttribute(\"style\", `transition: transform ${ F_CANVAS_ANIMATION_DURATION }ms ease-in-out; transform: ${ TransformModelExtensions.toString(this.transform) }`);\n setTimeout(() => {\n this.redraw();\n }, F_CANVAS_ANIMATION_DURATION);\n }\n\n public centerGroupOrNode(id: string, animated: boolean = true): void {\n this.fMediator.send(new CenterGroupOrNodeRequest(id, animated));\n }\n\n public fitToScreen(toCenter: IPoint = PointExtensions.initialize(), animated: boolean = true): void {\n this.fMediator.send(new FitToFlowRequest(toCenter, animated));\n }\n\n public resetScaleAndCenter(animated: boolean = true): void {\n this.fMediator.send(new ResetScaleAndCenterRequest(animated));\n }\n\n public override setZoom(scale: number, toPosition: IPoint = PointExtensions.initialize()): void {\n this.fMediator.send(new UpdateScaleRequest(scale, toPosition));\n }\n\n public override resetZoom(): void {\n this.fMediator.send(new ResetScaleRequest());\n }\n}\n","<ng-container>\n <div #fGroupsContainer>\n <ng-content select=\"[fGroup]\"></ng-content>\n </div>\n <div #fConnectionsContainer>\n <ng-content select=\"f-snap-connection\"></ng-content>\n <ng-content select=\"f-connection\"></ng-content>\n <ng-content select=\"f-connection-for-create\"></ng-content>\n </div>\n\n <div #fNodesContainer>\n <ng-content select=\"[fNode]\"></ng-content>\n </div>\n</ng-container>\n","import { FCanvasComponent } from './f-canvas.component';\n\nexport const F_CANVAS_PROVIDERS = [\n\n FCanvasComponent,\n];\n","import { ILineAlignmentRect } from './i-line-alignment-rect';\nimport { BrowserService } from '@foblex/platform';\n\nexport class LineElement {\n\n private readonly element: HTMLElement;\n\n constructor(\n fBrowser: BrowserService,\n private readonly hostElement: HTMLElement,\n ) {\n this.element = fBrowser.document.createElement('div');\n this.hostElement.appendChild(this.element);\n this.element.classList.add('f-line');\n }\n\n public hide(): void {\n this.element.style.display = 'none';\n }\n\n public show(): void {\n this.element.style.display = 'block'\n }\n\n public draw(object: Partial<ILineAlignmentRect>): void {\n this.element.style.position = 'absolute';\n Object.keys(object).forEach((key: string) => {\n // @ts-ignore\n this.element.style[ key ] = object[ key ] + 'px';\n });\n }\n}\n\n","import { ISize, ITransformModel } from '@foblex/2d';\nimport { LineElement } from './line-element';\nimport { BrowserService } from '@foblex/platform';\n\nexport class LineService {\n\n private fHorizontalLine: LineElement;\n private fVerticalLine: LineElement;\n\n constructor(fBrowser: BrowserService, private hostElement: HTMLElement) {\n this.fHorizontalLine = new LineElement(fBrowser, this.hostElement);\n this.fVerticalLine = new LineElement(fBrowser, this.hostElement);\n this.fHorizontalLine.hide();\n this.fVerticalLine.hide();\n }\n\n public drawVerticalLine(x: number, size: ISize, transform: ITransformModel): void {\n this.fVerticalLine.show();\n this.fVerticalLine.draw({\n left: x * transform.scale + transform.position.x + transform.scaledPosition.x,\n top: 0,\n width: 1,\n height: size.height\n });\n }\n\n public drawHorizontalLine(y: number, size: ISize, transform: ITransformModel): void {\n this.fHorizontalLine.show();\n this.fHorizontalLine.draw({\n left: 0,\n top: y * transform.scale + transform.position.y + transform.scaledPosition.y,\n width: size.width,\n height: 1\n });\n }\n\n public hideVerticalLine(): void {\n this.fVerticalLine.hide();\n }\n\n public hideHorizontalLine(): void {\n this.fHorizontalLine.hide();\n }\n}\n","import { IRect } from '@foblex/2d';\nimport { INearestCoordinateResult } from './i-nearest-coordinate-result';\n\n/**\n * A class to find the nearest coordinate.\n */\nexport class NearestCoordinateFinder {\n\n\n private elements: IRect[];\n private target: IRect;\n\n /**\n * Constructor to initialize the NearestCoordinateFinder.\n * @param elements - The array of IRect elements.\n * @param target - The target IRect element.\n * @param alignThreshold - The threshold to align the elements.\n */\n constructor(elements: IRect[], target: IRect, private alignThreshold: number = 10) {\n this.elements = elements;\n this.target = target;\n }\n\n /**\n * Finds the nearest coordinate on a specified axis.\n * @returns The nearest coordinate and its distance.\n */\n public findNearestCoordinateByX(): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of this.elements) {\n const distanceLeftLeft = this.target.x - element.x;\n const distanceLeftRight = this.target.x - (element.x + element.width);\n const distanceCenterCenter = this.target.gravityCenter.x - element.gravityCenter.x;\n const distanceRightLeft = (this.target.x + this.target.width) - element.x;\n const distanceRightRight = (this.target.x + this.target.width) - (element.x + element.width);\n\n if (\n Math.abs(distanceLeftLeft) <= this.alignThreshold ||\n Math.abs(distanceLeftRight) <= this.alignThreshold ||\n Math.abs(distanceCenterCenter) <= this.alignThreshold ||\n Math.abs(distanceRightLeft) <= this.alignThreshold ||\n Math.abs(distanceRightRight) <= this.alignThreshold\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.x;\n }\n if (Math.abs(distanceLeftLeft) < Math.abs(minDistance)) {\n minDistance = distanceLeftLeft;\n nearest = element.x;\n }\n if (Math.abs(distanceRightRight) < Math.abs(minDistance)) {\n minDistance = distanceRightRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceLeftRight) < Math.abs(minDistance)) {\n minDistance = distanceLeftRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceRightLeft) < Math.abs(minDistance)) {\n minDistance = distanceRightLeft;\n nearest = element.x;\n }\n }\n }\n return { value: nearest, distance: minDistance };\n }\n\n\n /**\n * Finds the nearest coordinate on a specified axis.\n * @returns The nearest coordinate and its distance.\n */\n public findNearestCoordinateByY(): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of this.elements) {\n const distanceTopTop = this.target.y - element.y;\n const distanceTopBottom = this.target.y - (element.y + element.height);\n const distanceCenterCenter = this.target.gravityCenter.y - element.gravityCenter.y;\n const distanceBottomTop = (this.target.y + this.target.height) - element.y;\n const distanceBottomBottom = (this.target.y + this.target.height) - (element.y + element.height);\n\n if (\n Math.abs(distanceTopTop) <= this.alignThreshold ||\n Math.abs(distanceTopBottom) <= this.alignThreshold ||\n Math.abs(distanceCenterCenter) <= this.alignThreshold ||\n Math.abs(distanceBottomTop) <= this.alignThreshold ||\n Math.abs(distanceBottomBottom) <= this.alignThreshold\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.y;\n }\n if (Math.abs(distanceTopTop) < Math.abs(minDistance)) {\n minDistance = distanceTopTop;\n nearest = element.y;\n }\n if (Math.abs(distanceBottomBottom) < Math.abs(minDistance)) {\n minDistance = distanceBottomBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceTopBottom) < Math.abs(minDistance)) {\n minDistance = distanceTopBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceBottomTop) < Math.abs(minDistance)) {\n minDistance = distanceBottomTop;\n nearest = element.y;\n }\n }\n }\n\n return { value: nearest, distance: minDistance };\n }\n}\n\n","import { IPoint } from '@foblex/2d';\nimport { Directive, InjectionToken } from '@angular/core';\nimport { ILineAlignmentResult } from './domain';\nimport { FNodeBase } from '../f-node';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_LINE_ALIGNMENT = new InjectionToken<FLineAlignmentBase>('F_LINE_ALIGNMENT');\n\n@Directive()\nexport abstract class FLineAlignmentBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void;\n\n public abstract findNearestCoordinate(difference: IPoint): ILineAlignmentResult;\n\n public abstract handle(difference: IPoint): void;\n\n public abstract complete(): void;\n}\n","import { Component, ElementRef, Input, OnInit } from '@angular/core';\nimport { IPoint, IRect, ISize, ITransformModel, RectExtensions, SizeExtensions } from '@foblex/2d';\nimport { ILineAlignmentResult, LineService, NearestCoordinateFinder } from './domain';\nimport { F_LINE_ALIGNMENT, FLineAlignmentBase } from './f-line-alignment-base';\nimport { FComponentsStore } from '../f-storage';\nimport { FDraggableDataContext } from '../f-draggable';\nimport { FNodeBase } from '../f-node';\nimport { GetElementRectInFlowRequest } from '../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\n\n@Component({\n selector: \"f-line-alignment\",\n template: \"\",\n styleUrls: [ \"./f-line-alignment.component.scss\" ],\n exportAs: \"fComponent\",\n host: {\n 'class': 'f-line-alignment f-component'\n },\n providers: [\n { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentComponent }\n ],\n})\nexport class FLineAlignmentComponent extends FLineAlignmentBase implements OnInit {\n\n @Input()\n public fAlignThreshold: number = 10;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n private lineService: LineService;\n\n private size: ISize = SizeExtensions.initialize();\n\n private draggedNodeRect: IRect = RectExtensions.initialize();\n\n private rects: IRect[] = [];\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n fBrowser: BrowserService\n ) {\n super();\n this.lineService = new LineService(fBrowser, this.hostElement);\n }\n\n public ngOnInit(): void {\n this.fDraggableDataContext.fLineAlignment = this;\n }\n\n public override initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void {\n this.size = this.flowHost.getBoundingClientRect();\n this.rects = [];\n const draggedNodeRects = currentNodes.map((x) => {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement));\n });\n this.draggedNodeRect = RectExtensions.union(draggedNodeRects) || RectExtensions.initialize();\n\n const allNodesExcludeCurrents = allNodes.filter((x) => {\n return !currentNodes.includes(x);\n });\n\n this.rects = allNodesExcludeCurrents.map((x) => {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement));\n });\n }\n\n public override handle(difference: IPoint): void {\n this.drawIntersectingLines(difference);\n }\n\n private drawIntersectingLines(difference: IPoint): void {\n const intersect = this.findNearestCoordinate(difference);\n if (intersect.xResult.value !== undefined) {\n this.lineService.drawVerticalLine(intersect.xResult.value, this.size, this.transform);\n } else {\n this.lineService.hideVerticalLine();\n }\n if (intersect.yResult.value !== undefined) {\n this.lineService.drawHorizontalLine(intersect.yResult.value, this.size, this.transform);\n } else {\n this.lineService.hideHorizontalLine();\n }\n }\n\n public findNearestCoordinate(difference: IPoint): ILineAlignmentResult {\n const rect = RectExtensions.addPoint(this.draggedNodeRect, difference);\n const finder = new NearestCoordinateFinder(this.rects, rect, this.fAlignThreshold);\n\n return { xResult: finder.findNearestCoordinateByX(), yResult: finder.findNearestCoordinateByY() };\n }\n\n public override complete(): void {\n this.lineService.hideVerticalLine();\n this.lineService.hideHorizontalLine();\n }\n}\n","import { FLineAlignmentComponent } from './f-line-alignment.component';\n\nexport const F_LINE_ALIGNMENT_PROVIDERS = [\n FLineAlignmentComponent\n];\n","import {\n Directive, ElementRef, Input,\n} from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport { IRect, ISize, RectExtensions, SizeExtensions } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { checkRectIsFinite, FMinimapData } from './domain';\nimport { GetNodesRectRequest } from '../domain';\n\n@Directive({\n selector: 'svg[fMinimapFlow]'\n})\nexport class FMinimapFlowDirective {\n\n public model: FMinimapData;\n\n @Input()\n public fMinSize: number = 1000;\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n public get hostElement(): SVGSVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGSVGElement>,\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore\n ) {\n this.model = new FMinimapData(this.hostElement);\n }\n\n public update(): void {\n const nodesRect = this.getProcessedNodesRect();\n const minimapRect = this.getMinimapRect();\n\n const scale = this.calculateViewScale(nodesRect, minimapRect);\n const viewBox = this.calculateViewBox(nodesRect, minimapRect, scale);\n this.model = new FMinimapData(this.hostElement, scale, viewBox);\n this.setViewBox(viewBox);\n }\n\n private getProcessedNodesRect(): IRect {\n const normalizedRect = this.normalizeRect(this.getNodesRect());\n return this.ensureMinimumSize(normalizedRect);\n }\n\n private getNodesRect(): IRect {\n const rect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize(0, 0, 0, 0);\n return RectExtensions.elementTransform(rect, this.flowHost)\n }\n\n private getMinimapRect(): IRect {\n return RectExtensions.elementTransform(RectExtensions.fromElement(this.hostElement), this.flowHost);\n }\n\n private normalizeRect(rect: IRect): IRect {\n return RectExtensions.div(rect, this.fComponentsStore.transform.scale);\n }\n\n private ensureMinimumSize(rect: IRect): IRect {\n return RectExtensions.initialize(\n rect.x - (Math.max(rect.width, this.fMinSize) - rect.width) / 2,\n rect.y - (Math.max(rect.height, this.fMinSize) - rect.height) / 2,\n Math.max(rect.width, this.fMinSize),\n Math.max(rect.height, this.fMinSize)\n );\n }\n\n private calculateViewScale(nodesRect: IRect, minimapRect: IRect): number {\n return Math.max(nodesRect.width / minimapRect.width, nodesRect.height / minimapRect.height);\n }\n\n private calculateViewBox(nodesRect: IRect, minimapRect: IRect, scale: number): IRect {\n return this.calculateCenteredViewBox(nodesRect, this.calculateViewSize(minimapRect, scale));\n }\n\n private calculateViewSize(minimapRect: IRect, scale: number): ISize {\n return SizeExtensions.initialize(minimapRect.width * scale || 0, minimapRect.height * scale || 0);\n }\n\n private calculateCenteredViewBox(nodesRect: IRect, viewSize: ISize): IRect {\n const centeredX = nodesRect.x - (viewSize.width - nodesRect.width) / 2;\n const centeredY = nodesRect.y - (viewSize.height - nodesRect.height) / 2;\n return RectExtensions.initialize(centeredX, centeredY, viewSize.width, viewSize.height);\n }\n\n private setViewBox(viewBox: IRect): void {\n viewBox = checkRectIsFinite(viewBox);\n this.hostElement.setAttribute('viewBox', `${ viewBox.x } ${ viewBox.y } ${ viewBox.width } ${ viewBox.height }`);\n }\n}\n","import {\n Directive, ElementRef,\n} from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport {\n IRect,\n RectExtensions\n} from '@foblex/2d';\nimport { FNodeBase, FNodeDirective } from '../f-node';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../domain';\nimport { checkRectIsFinite } from './domain';\n\n@Directive({\n selector: 'g[fMinimapCanvas]'\n})\nexport class FMinimapCanvasDirective {\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get flowScale(): number {\n return this.fComponentsStore.transform.scale;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n }\n\n public redraw(): void {\n this.clearCanvas();\n this.fComponentsStore.fNodes.forEach((x) => this.renderNode(x));\n }\n\n private clearCanvas(): void {\n this.hostElement.innerHTML = '';\n }\n\n private renderNode(node: FNodeBase): void {\n const element = createSVGElement('rect', this.fBrowser);\n this.configureNodeElement(element, node);\n this.hostElement.appendChild(element);\n }\n\n private configureNodeElement(element: SVGRectElement, node: FNodeBase): void {\n this.setElementAttributes(element, this.getNodeRect(node));\n this.applyClassList(element, node, node instanceof FNodeDirective);\n }\n\n private getNodeRect(node: FNodeBase): IRect {\n const nodeRectInFlow = RectExtensions.elementTransform(RectExtensions.fromElement(node.hostElement), this.flowHost);\n return RectExtensions.div(nodeRectInFlow, this.flowScale);\n }\n\n private setElementAttributes(element: SVGRectElement, rect: IRect): void {\n rect = checkRectIsFinite(rect);\n element.setAttribute('x', rect.x.toString());\n element.setAttribute('y', rect.y.toString());\n element.setAttribute('width', rect.width.toString());\n element.setAttribute('height', rect.height.toString());\n }\n\n private applyClassList(element: SVGRectElement, node: FNodeBase, isNode: boolean): void {\n element.classList.add('f-component', isNode ? 'f-minimap-node' : 'f-minimap-group');\n if (node.isSelected()) {\n element.classList.add('f-selected');\n }\n }\n}\n","import { Directive, ElementRef } from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { checkRectIsFinite } from './domain';\n\n@Directive({\n selector: 'rect[fMinimapView]',\n host: {\n 'class': 'f-component f-minimap-view',\n }\n})\nexport class FMinimapViewDirective {\n\n public get hostElement(): SVGRectElement {\n return this.elementReference.nativeElement;\n }\n\n private get flowScale(): number {\n return this.fComponentsStore!.transform!.scale!;\n }\n\n constructor(\n private elementReference: ElementRef<SVGRectElement>,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public update(): void {\n const viewBox = RectExtensions.div(RectExtensions.fromElement(this.fComponentsStore.flowHost), this.flowScale);\n this.setAttributes(viewBox);\n }\n\n private setAttributes(viewBox: IRect): void {\n viewBox = checkRectIsFinite(viewBox);\n this.hostElement.setAttribute('x', '0');\n this.hostElement.setAttribute('y', '0');\n this.hostElement.setAttribute('width', viewBox.width.toString());\n this.hostElement.setAttribute('height', viewBox.height.toString());\n }\n}\n","import {\n AfterViewInit, ChangeDetectionStrategy, Component,\n ElementRef, Input, OnDestroy, ViewChild,\n} from \"@angular/core\";\nimport { FMediator } from '@foblex/mediator';\nimport { Observable, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { SubscribeOnTransformChangesRequest } from '../domain';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { MinimapDragFinalizeRequest, MinimapDragPreparationRequest } from './domain';\n\n@Component({\n selector: 'f-minimap',\n templateUrl: './f-minimap.component.html',\n styleUrls: [ './f-minimap.component.scss' ],\n exportAs: 'fComponent',\n host: {\n 'class': 'f-component f-minimap',\n },\n providers: [\n { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FMinimapComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FMinimapComponent implements AfterViewInit, OnDestroy, IFDragAndDropPlugin {\n\n private subscriptions$: Subscription = new Subscription();\n\n @ViewChild(FMinimapCanvasDirective, { static: true })\n public fMinimapCanvas!: FMinimapCanvasDirective;\n\n @ViewChild(FMinimapFlowDirective, { static: true })\n public fMinimapFlow!: FMinimapFlowDirective;\n\n @ViewChild(FMinimapViewDirective, { static: true })\n public fMinimapView!: FMinimapViewDirective;\n\n @Input()\n public fMinSize: number = 1000;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FMediator\n ) {\n }\n\n public ngAfterViewInit(): void {\n this.subscriptions$.add(this.subscribeOnTransformChanges());\n }\n\n private subscribeOnTransformChanges(): Subscription {\n return this.getTransformChanges().pipe(debounceTime(5)).subscribe(() => {\n this.fMinimapFlow.update();\n this.fMinimapView.update();\n this.fMinimapCanvas.redraw();\n });\n }\n\n private getTransformChanges(): Observable<void> {\n return this.fMediator.send<Observable<void>>(new SubscribeOnTransformChangesRequest());\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this.fMediator.send(new MinimapDragPreparationRequest(event, this.fMinimapFlow.model));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this.fMediator.send(new MinimapDragFinalizeRequest(event));\n }\n\n public ngOnDestroy(): void {\n this.subscriptions$.unsubscribe();\n }\n}\n","<svg fMinimapFlow width=\"100%\" height=\"100%\" fLockedContext [fMinSize]=\"fMinSize\">\n <g fMinimapCanvas></g>\n <rect fMinimapView x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" stroke=\"none\"/>\n</svg>\n\n","import { FMinimapComponent } from './f-minimap.component';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\n\nexport const F_MINIMAP_PROVIDERS = [\n\n FMinimapComponent,\n\n FMinimapCanvasDirective,\n\n FMinimapViewDirective,\n\n FMinimapFlowDirective,\n];\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_FLOW = new InjectionToken<FFlowBase>('F_FLOW');\n\nexport abstract class FFlowBase implements IHasHostElement {\n\n public abstract fFlowId: string;\n\n public abstract hostElement: HTMLElement;\n\n public abstract fLoaded: EventEmitter<void>;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ElementRef, EventEmitter,\n Input, OnDestroy, OnInit, Output\n} from '@angular/core';\nimport { F_FLOW, FFlowBase } from './f-flow-base';\nimport { Subscription } from 'rxjs';\nimport { startWith, debounceTime } from 'rxjs/operators';\nimport {\n ClearSelectionRequest,\n GetScaledNodeRectsWithFlowPositionRequest,\n GetPositionInFlowRequest,\n GetSelectionRequest,\n RedrawConnectionsRequest,\n SelectAllRequest,\n SelectRequest,\n SortItemLayersRequest,\n IFFlowState,\n GetFlowStateRequest\n} from '../domain';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport {\n FDraggableDataContext, FSelectionChangeEvent\n} from '../f-draggable';\nimport { FConnectionFactory } from '../f-connection';\nimport { FComponentsStore, FTransformStore } from '../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { COMMON_PROVIDERS } from '../domain';\nimport { F_DRAGGABLE_PROVIDERS } from '../f-draggable';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: 'f-flow',\n templateUrl: './f-flow.component.html',\n styleUrls: [ './f-flow.component.scss' ],\n host: {\n '[attr.id]': 'fFlowId',\n class: \"f-component f-flow\",\n },\n providers: [\n FMediator,\n FComponentsStore,\n FTransformStore,\n FDraggableDataContext,\n FConnectionFactory,\n ...COMMON_PROVIDERS,\n ...F_DRAGGABLE_PROVIDERS,\n { provide: F_FLOW, useExisting: FFlowComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FFlowComponent extends FFlowBase implements OnInit, AfterContentInit, OnDestroy {\n\n private subscription$: Subscription = new Subscription();\n\n @Input()\n public override fFlowId: string = `f-flow-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Output()\n public override fLoaded: EventEmitter<void> = new EventEmitter<void>();\n\n private isLoaded: boolean = false;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fFlow = this;\n }\n\n public ngAfterContentInit(): void {\n if (!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscription$.add(\n this.subscribeOnElementsChanges()\n );\n this.subscription$.add(\n this.subscribeOnComponentsCountChanges()\n );\n }\n\n private subscribeOnComponentsCountChanges(): Subscription {\n return this.fComponentsStore.componentsCount$.pipe(startWith(null), debounceTime(1)).subscribe(() => {\n this.fMediator.send(new SortItemLayersRequest());\n });\n }\n\n private subscribeOnElementsChanges(): Subscription {\n return this.fComponentsStore.componentsData$.pipe(startWith(null), debounceTime(1)).subscribe(() => {\n this.fMediator.send(new RedrawConnectionsRequest());\n\n if (!this.isLoaded) {\n this.isLoaded = true;\n this.fLoaded.emit();\n }\n });\n }\n\n public redraw(): void {\n this.fComponentsStore.componentDataChanged();\n }\n\n public reset(): void {\n this.isLoaded = false;\n }\n\n public getAllNodesRect(): IRect | null {\n return this.fMediator.send<IRect | null>(new GetScaledNodeRectsWithFlowPositionRequest());\n }\n\n public getSelection(): FSelectionChangeEvent {\n return this.fMediator.send<FSelectionChangeEvent>(new GetSelectionRequest());\n }\n\n public getPositionInFlow(position: IPoint): IRect {\n return this.fMediator.send(new GetPositionInFlowRequest(position));\n }\n\n public getState(): IFFlowState {\n return this.fMediator.send(new GetFlowStateRequest());\n }\n\n public selectAll(): void {\n this.fMediator.send<void>(new SelectAllRequest());\n }\n\n public select(nodes: string[], connections: string[]): void {\n this.fMediator.send<void>(new SelectRequest(nodes, connections));\n }\n\n public clearSelection(): void {\n this.fMediator.send<void>(new ClearSelectionRequest());\n }\n\n public ngOnDestroy(): void {\n this.subscription$.unsubscribe();\n }\n}\n","<ng-container>\n <ng-content select=\"[fDefinitions]\"></ng-content>\n\n <ng-content select=\"f-background\"></ng-content>\n\n <ng-content select=\"f-line-alignment\"></ng-content>\n\n <ng-content select=\"f-canvas\"></ng-content>\n\n <ng-content select=\"f-selection-area\"></ng-content>\n\n <ng-content select=\"f-minimap\"></ng-content>\n</ng-container>\n","import { FFlowComponent } from './f-flow.component';\n\nexport const F_FLOW_PROVIDERS = [\n FFlowComponent\n];\n","import { EventExtensions } from '@foblex/drag-toolkit';\nimport { IPoint, Point, RectExtensions } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { FCanvasBase } from '../f-canvas';\nimport { FComponentsStore } from '../f-storage';\nimport { isNode } from '../f-node';\n\nexport const F_ZOOM = new InjectionToken<FZoomBase>('F_ZOOM');\n\nexport abstract class FZoomBase {\n\n protected isEnabled: boolean = false;\n\n public abstract minimum: number;\n public abstract maximum: number;\n\n public abstract step: number;\n public abstract dblClickStep: number;\n\n private listeners: Function = EventExtensions.emptyListener();\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get fCanvas(): FCanvasBase {\n return this.fComponentsStore.fCanvas as FCanvasBase;\n }\n\n protected constructor(\n protected fComponentsStore: FComponentsStore\n ) {\n }\n\n protected toggleZoom(): void {\n if (this.isEnabled) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n\n private subscribe(): void {\n this.listeners();\n if (!this.flowHost) {\n return;\n }\n\n this.flowHost.addEventListener('wheel', this.onWheel.bind(this));\n this.flowHost.addEventListener('dblclick', this.onDoubleClick.bind(this));\n this.listeners = () => {\n this.flowHost.removeEventListener('wheel', this.onWheel.bind(this));\n this.flowHost.removeEventListener('dblclick', this.onDoubleClick.bind(this));\n };\n }\n\n public getScale(): number {\n return this.fCanvas.transform.scale || 1;\n }\n\n private onWheel(event: WheelEvent): void {\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (this.fComponentsStore.fDraggable?.isDragStarted || targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n let result: number = this.getScale();\n\n const direction = event.deltaY > 0 ? -1 : 1;\n const step = this.step;\n result = result + step * direction;\n\n result = Math.max(this.minimum, Math.min(result, this.maximum));\n\n const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);\n\n this.fCanvas.setZoom(result, pointerPositionInFlow);\n this.fCanvas.redraw();\n this.fCanvas.emitCanvasChangeEvent();\n }\n\n private onDoubleClick(event: MouseEvent): void {\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (this.fComponentsStore.fDraggable?.isDragStarted || isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n let result: number = this.getScale();\n\n const direction = 1;\n const step = this.dblClickStep;\n result = result + step * direction;\n\n result = Math.max(this.minimum, Math.min(result, this.maximum));\n\n const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);\n this.fCanvas.setZoom(result, pointerPositionInFlow);\n this.fCanvas.redrawWithAnimation();\n this.fCanvas.emitCanvasChangeEvent();\n }\n\n private onZoomToCenter(deltaY: number, position?: IPoint): void {\n const preventDefault = () => {\n };\n const rect = RectExtensions.fromElement(this.flowHost);\n\n this.onWheel({\n deltaY, preventDefault, clientX: position?.x || rect.gravityCenter.x, clientY: position?.y || rect.gravityCenter.y\n } as WheelEvent);\n }\n\n public zoomIn(position?: IPoint): void {\n this.onZoomToCenter(-1, position);\n }\n\n public zoomOut(position?: IPoint): void {\n this.onZoomToCenter(1, position);\n }\n\n public reset(): void {\n this.fCanvas.resetZoom();\n this.fCanvas.redraw();\n this.fCanvas.emitCanvasChangeEvent();\n }\n\n protected unsubscribe(): void {\n this.listeners();\n this.listeners = EventExtensions.emptyListener();\n }\n}\n","import {\n AfterViewInit,\n Directive, Input, OnDestroy\n} from \"@angular/core\";\nimport { F_ZOOM, FZoomBase } from './f-zoom-base';\nimport { FComponentsStore } from '../f-storage';\nimport { castToBoolean } from '@foblex/utils';\n\n@Directive({\n selector: \"f-canvas[fZoom]\",\n exportAs: 'fComponent',\n host: {\n 'class': 'f-zoom f-component'\n },\n providers: [ { provide: F_ZOOM, useExisting: FZoomDirective } ],\n})\nexport class FZoomDirective extends FZoomBase implements AfterViewInit, OnDestroy {\n\n @Input('fZoom')\n public get fFlowZoom(): boolean {\n return this.isEnabled;\n }\n\n public set fFlowZoom(isEnabled: boolean | undefined | string) {\n const value = castToBoolean(isEnabled);\n if (value !== this.isEnabled) {\n this.isEnabled = value;\n this.toggleZoom();\n }\n }\n\n @Input('fZoomMinimum')\n public override minimum: number = 0.1;\n\n @Input('fZoomMaximum')\n public override maximum: number = 4;\n\n @Input('fZoomStep')\n public override step: number = 0.1;\n\n @Input('fZoomDblClickStep')\n public override dblClickStep: number = 0.5;\n\n constructor(\n fComponentsStore: FComponentsStore,\n ) {\n super(fComponentsStore);\n }\n\n public ngAfterViewInit(): void {\n super.toggleZoom();\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n }\n}\n","import { FZoomDirective } from './f-zoom.directive';\n\nexport const F_ZOOM_PROVIDERS = [\n\n FZoomDirective\n];\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { F_CONNECTION_PROVIDERS, } from './f-connection';\nimport { F_NODE_PROVIDERS } from './f-node';\nimport { F_FLOW_PROVIDERS } from './f-flow';\nimport { F_BACKGROUND_PROVIDERS } from './f-backgroud';\nimport { F_CANVAS_PROVIDERS } from './f-canvas';\nimport { F_CONNECTORS_PROVIDERS } from './f-connectors';\nimport { FDraggableDirective } from './f-draggable';\nimport { F_EXTERNAL_ITEM_PROVIDERS } from './f-external-item';\nimport { F_SELECTION_AREA_PROVIDERS } from './f-selection-area';\nimport { F_LINE_ALIGNMENT_PROVIDERS } from './f-line-alignment';\nimport { F_MINIMAP_PROVIDERS } from './f-minimap';\nimport { F_ZOOM_PROVIDERS } from './f-zoom';\n\n@NgModule({\n declarations: [\n ...F_BACKGROUND_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n ...F_FLOW_PROVIDERS,\n ...F_LINE_ALIGNMENT_PROVIDERS,\n ...F_MINIMAP_PROVIDERS,\n ...F_NODE_PROVIDERS,\n ...F_SELECTION_AREA_PROVIDERS,\n\n FDraggableDirective,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n ...F_BACKGROUND_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n ...F_FLOW_PROVIDERS,\n ...F_LINE_ALIGNMENT_PROVIDERS,\n ...F_MINIMAP_PROVIDERS,\n ...F_NODE_PROVIDERS,\n ...F_SELECTION_AREA_PROVIDERS,\n\n FDraggableDirective,\n ]\n})\nexport class FFlowModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["InjectionToken","Subject","i0","Injectable","CreateConnectionMarkersExecution","createSVGElement","normalizeDomElementId","i1","i2.FComponentsStore","FExecutionRegister","CreateRoundedRectFromElementExecution","RoundedRect","RectExtensions","EmitTransformChangesExecution","i1.FTransformStore","uniqueId","AddPatternToBackgroundExecution","TransformModelExtensions","i1.FComponentsStore","i2","CenterGroupOrNodeExecution","PointExtensions","FitToFlowExecution","InputCanvasPositionExecution","InputCanvasScaleExecution","ResetScaleExecution","ResetScaleAndCenterExecution","UpdateScaleExecution","AddConnectionToStoreExecution","FindClosestInputUsingSnapThresholdExecution","GetElementRectInFlowExecution","Point","SizeExtensions","GetConnectorWithRectExecution","GetAllCanBeConnectedInputPositionsExecution","RemoveConnectionFromStoreExecution","CanvasMoveFinalizeExecution","i1.FDraggableDataContext","CanvasMoveFinalizeValidator","FValidatorRegister","CanvasMovePreparationExecution","i2.FDraggableDataContext","CanvasMovePreparationValidator","EFConnectableSide","Directive","EFResizeHandleType","castToEnum","Input","HostBinding","MIXIN_BASE","Observable","Subscription","EventEmitter","merge","debounceTime","startWith","i3","Output","castToBoolean","Inject","GetCanBeConnectedOutputByOutletExecution","GetCanBeConnectedOutputByOutletValidator","GetInputUnderPointerExecution","GetInputUnderPointerValidator","CreateConnectionFinalizeExecution","CreateConnectionFinalizeValidator","CreateConnectionDragHandlerExecution","CreateConnectionFromOutletPreparationExecution","CreateConnectionFromOutputPreparationExecution","CreateConnectionFromOutputPreparationValidator","CreateConnectionPreparationExecution","CreateConnectionPreparationValidator","ReassignConnectionFinalizeExecution","ReassignConnectionFinalizeValidator","_a","i1.FConnectionTextPathDirective","Component","ChangeDetectionStrategy","ViewChild","EFConnectionType","Optional","LineExtensions","i1.FConnectionFactory","EFConnectionBehavior","i3.FConnectionGradientComponent","i4.FConnectionSelectionComponent","i5.FConnectionPathComponent","i6.FConnectionDragHandleComponent","i7.FConnectionTextComponent","i8","ContentChildren","i4.FConnectionGradientComponent","i5.FConnectionSelectionComponent","i6.FConnectionPathComponent","i7.FConnectionDragHandleComponent","i8.FConnectionTextComponent","i9","EFMarkerType","ReassignConnectionPreparationExecution","i4","ReassignConnectionPreparationValidator","GetNodePaddingExecution","GetNormalizedNodeRectExecution","GetNormalizedParentNodeRectExecution","GetParentNodesExecution","IsArrayHasParentNodeExecution","i3.FConnectionBase","PutInputConnectionHandlersToArrayExecution","PutOutputConnectionHandlersToArrayExecution","GetNodeMoveRestrictionsExecution","CreateMoveNodesDragModelFromSelectionExecution","flatMap","NodeMovePreparationExecution","NodeMovePreparationValidator","isClosestElementHasClass","NodeMoveFinalizeExecution","NodeMoveFinalizeValidator","OFFSET","ApplyChildResizeRestrictionsExecution","ApplyParentResizeRestrictionsExecution","CalculateChangedPositionExecution","CalculateChangedSizeExecution","GetNormalizedChildrenNodesRectExecution","GetNodeResizeRestrictionsExecution","NodeResizeFinalizeExecution","NodeResizeFinalizeValidator","NodeResizePreparationExecution","getDataAttrValueFromClosestElementWithClass","NodeResizePreparationValidator","SingleSelectExecution","EOperationSystem","i3.FDraggableDataContext","SingleSelectValidator","DragAndDropBase","ExternalItemFinalizeExecution","deepCloneNode","ExternalItemFinalizeValidator","ExternalItemPreparationExecution","i3.FExternalItemService","ExternalItemPreparationValidator","i1.FExternalItemService","NgZone","CalculateFlowPointFromMinimapPointExecution","MinimapDragFinalizeExecution","MinimapDragFinalizeValidator","MinimapDragPreparationExecution","MinimapDragPreparationValidator","SelectionAreaFinalizeExecution","SelectionAreaFinalizeValidator","SelectionAreaPreparationExecution","SelectionAreaPreparationValidator","ClearSelectionExecution","GetSelectionExecution","SelectExecution","SelectAllExecution","MoveFrontElementsBeforeTargetElementExecution","GetDeepChildrenNodesAndGroupsExecution","UpdateItemAndChildrenLayersExecution","SelectAndUpdateNodeLayerExecution","GetCanBeSelectedItemsExecution","GetConnectionLineExecution","GetIntersections","Line","GetFlowStateConnectionsExecution","GetFlowStateNodesExecution","GetFlowStateExecution","GetScaledNodeRectsWithFlowPositionExecution","GetNodesRectExecution","GetPositionInFlowExecution","IsConnectionUnderNodeExecution","RedrawConnectionsExecution","ShowConnectionsAfterCalculationsExecution","SortNodeLayersExecution","SortItemsByParentExecution","SortItemLayersExecution","SubscribeOnTransformChangesExecution","ContentChild","i2.FMinimapFlowDirective","i3.FMinimapCanvasDirective","i4.FMinimapViewDirective","FMediator","EventExtensions","i1.FBackgroundComponent","i2.FRectPatternComponent","i3.FCirclePatternComponent","i4.FCanvasComponent","i5.FZoomDirective","i6.FConnectionTextComponent","i7.FConnectionTextPathDirective","i8.FConnectionDragHandleComponent","i9.FConnectionGradientComponent","i10.FConnectionPathComponent","i11.FConnectionSelectionComponent","i12.FConnectionComponent","i13.FConnectionCenterDirective","i14.FConnectionForCreateComponent","i15.FMarkerDirective","i16.FSnapConnectionComponent","i17.FNodeInputDirective","i18.FNodeOutletDirective","i19.FNodeOutputDirective","i20.FExternalItemDirective","i21.FFlowComponent","i22.FLineAlignmentComponent","i23.FMinimapComponent","i24.FMinimapCanvasDirective","i25.FMinimapViewDirective","i26.FMinimapFlowDirective","i27.FGroupDirective","i28.FNodeDirective","i29.FDragHandleDirective","i30.FResizeHandleDirective","i31.FSelectionAreaComponent","CommonModule","NgModule"],"mappings":"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"}
1
+ {"version":3,"file":"foblex-flow.umd.js","sources":["../../../projects/f-flow/src/f-backgroud/domain/i-f-background-pattern.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../projects/f-flow/src/domain/create-connection-markers/create-connection-markers-request.ts","../../../projects/f-flow/src/f-storage/f-components-store.ts","../../../projects/f-flow/src/f-storage/f-transform-store.ts","../../../projects/f-flow/src/domain/create-connection-markers/create-connection-markers.execution.ts","../../../projects/f-flow/src/domain/create-rounded-rect-from-element/create-rounded-rect-from-element-request.ts","../../../projects/f-flow/src/domain/create-rounded-rect-from-element/create-rounded-rect-from-element.execution.ts","../../../projects/f-flow/src/domain/emit-transform-changes/emit-transform-changes.request.ts","../../../projects/f-flow/src/domain/emit-transform-changes/emit-transform-changes.execution.ts","../../../projects/f-flow/src/domain/f-background/add-pattern-to-background/add-pattern-to-background.request.ts","../../../projects/f-flow/src/domain/f-background/add-pattern-to-background/add-pattern-to-background.execution.ts","../../../projects/f-flow/src/domain/f-background/providers.ts","../../../projects/f-flow/src/domain/f-canvas/center-group-or-node/center-group-or-node-request.ts","../../../projects/f-flow/src/domain/f-canvas/center-group-or-node/center-group-or-node.execution.ts","../../../projects/f-flow/src/domain/f-canvas/fit-to-flow/fit-to-flow-request.ts","../../../projects/f-flow/src/domain/f-canvas/fit-to-flow/fit-to-flow.execution.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-position/input-canvas-position-request.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-position/input-canvas-position.execution.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-scale/input-canvas-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-scale/input-canvas-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale/reset-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale/reset-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale-and-center/reset-scale-and-center-request.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale-and-center/reset-scale-and-center.execution.ts","../../../projects/f-flow/src/domain/f-canvas/update-scale/update-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/update-scale/update-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/providers.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-to-store/add-connection-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-to-store/add-connection-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.ts","../../../projects/f-flow/src/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.ts","../../../projects/f-flow/src/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.ts","../../../projects/f-flow/src/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.ts","../../../projects/f-flow/src/domain/get-element-rect-in-flow/get-element-rect-in-flow-request.ts","../../../projects/f-flow/src/domain/get-element-rect-in-flow/get-element-rect-in-flow.execution.ts","../../../projects/f-flow/src/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.ts","../../../projects/f-flow/src/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-from-store/remove-connection-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-from-store/remove-connection-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/providers.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.request.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-draggable-data-context.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas.drag-handler.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/canvas/providers.ts","../../../projects/f-flow/src/f-connectors/e-f-connectable-side.ts","../../../projects/f-flow/src/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.ts","../../../projects/f-flow/src/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.ts","../../../projects/f-flow/src/f-connectors/f-connector-base.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input-base.ts","../../../projects/f-flow/src/f-node/domain/is-group.ts","../../../projects/f-flow/src/f-node/domain/is-node.ts","../../../projects/f-flow/src/f-node/f-drag-handle/f-drag-handle.directive.ts","../../../projects/f-flow/src/f-node/f-resize-handle/e-f-resize-handle-type.ts","../../../projects/f-flow/src/f-node/f-resize-handle/f-resize-handle.directive.ts","../../../projects/f-flow/src/f-node/f-rotate-handle/f-rotate-handle.directive.ts","../../../projects/f-flow/src/mixins/change-selection/change-selection.ts","../../../projects/f-flow/src/mixins/change-visibility/change-visibility.ts","../../../projects/f-flow/src/f-node/f-node-base.ts","../../../projects/f-flow/src/f-node/f-resize-observer.ts","../../../projects/f-flow/src/f-node/f-group.directive.ts","../../../projects/f-flow/src/f-node/f-node.directive.ts","../../../projects/f-flow/src/f-node/providers.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input.directive.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/f-node-outlet-base.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/is-node-outlet.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/f-node-outlet.directive.ts","../../../projects/f-flow/src/f-connectors/f-node-output/f-node-output-base.ts","../../../projects/f-flow/src/f-connectors/f-node-output/is-node-output.ts","../../../projects/f-flow/src/f-connectors/f-node-output/f-node-output.directive.ts","../../../projects/f-flow/src/f-connectors/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.request.ts","../../../projects/f-flow/src/errors/create-error-class.ts","../../../projects/f-flow/src/errors/not-found-error.ts","../../../projects/f-flow/src/errors/conflict-error.ts","../../../projects/f-flow/src/errors/errors.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/f-create-connection.event.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.request.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/f-reassign-connection.event.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points.handler.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.ts","../../../projects/f-flow/src/f-connection/common/domain/f-bezier.path-builder.ts","../../../projects/f-flow/src/f-connection/common/domain/f-segment.path-builder.ts","../../../projects/f-flow/src/f-connection/common/domain/f-straight.path-builder.ts","../../../projects/f-flow/src/f-connection/common/f-connection-identifiers.ts","../../../projects/f-flow/src/f-connection/common/f-connection.injection-token.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text-path.directive.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/i-connection-text.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text.component.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text.component.html","../../../projects/f-flow/src/f-connection/common/f-drag-handle/f-connection-drag-handle.component.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/i-connection-gradient.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/f-connection-gradient.component.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/f-connection-gradient.component.html","../../../projects/f-flow/src/f-connection/common/f-path/i-connection-path.ts","../../../projects/f-flow/src/f-connection/common/f-path/get-path-marker-id.ts","../../../projects/f-flow/src/f-connection/common/f-path/f-connection-path.component.ts","../../../projects/f-flow/src/f-connection/common/f-selection/f-connection-selection.component.ts","../../../projects/f-flow/src/f-connection/f-connection-builder/f-connection-builders.ts","../../../projects/f-flow/src/f-connection/f-connection-builder/f-connection-factory.ts","../../../projects/f-flow/src/f-connection/common/f-connection-base.ts","../../../projects/f-flow/src/f-connection/common/e-f-connection-behavior.ts","../../../projects/f-flow/src/f-connection/common/e-f-connection-type.ts","../../../projects/f-flow/src/f-connection/f-connection-center/f-connection-center.directive.ts","../../../projects/f-flow/src/f-connection/f-connection-for-create/f-connection-for-create.component.ts","../../../projects/f-flow/src/f-connection/f-connection-for-create/f-connection-for-create.component.html","../../../projects/f-flow/src/f-connection/f-connection/f-connection.component.ts","../../../projects/f-flow/src/f-connection/f-connection/f-connection.component.html","../../../projects/f-flow/src/f-connection/f-marker/e-f-marker-type.ts","../../../projects/f-flow/src/f-connection/f-marker/f-marker-base.ts","../../../projects/f-flow/src/f-connection/f-marker/f-marker.directive.ts","../../../projects/f-flow/src/f-connection/f-snap-connection/f-snap-connection.component.ts","../../../projects/f-flow/src/f-connection/f-snap-connection/f-snap-connection.component.html","../../../projects/f-flow/src/f-connection/providers.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/providers.ts","../../../projects/f-flow/src/f-draggable/domain/get-node-padding/get-node-padding.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-node-padding/get-node-padding.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-parent-nodes/get-parent-nodes.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.ts","../../../projects/f-flow/src/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.ts","../../../projects/f-flow/src/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.ts","../../../projects/f-flow/src/f-draggable/domain/providers.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.request.ts","../../../projects/f-flow/src/f-draggable/node/connection-base-drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection-target.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.request.ts","../../../projects/f-flow/src/f-draggable/node/connection-source.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.ts","../../../projects/f-flow/src/f-draggable/node/node.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/node-resize-by-child.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.request.ts","../../../projects/f-flow/src/domain/is-connection-under-node/is-connection-under-node.request.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/node/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/resize-direction.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/providers.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.request.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.execution.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.validator.ts","../../../projects/f-flow/src/f-draggable/single-select/providers.ts","../../../projects/f-flow/src/f-draggable/f-draggable-base.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.request.ts","../../../projects/f-flow/src/f-external-item/domain/f-create-node.event.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.execution.ts","../../../projects/f-flow/src/f-external-item/domain/external-item.drag-handler.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.validator.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/providers.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.request.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.execution.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.validator.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/providers.ts","../../../projects/f-flow/src/f-external-item/domain/providers.ts","../../../projects/f-flow/src/f-external-item/f-external-item-base.ts","../../../projects/f-flow/src/f-external-item/is-external-item.ts","../../../projects/f-flow/src/f-external-item/f-external-item.service.ts","../../../projects/f-flow/src/f-external-item/f-external-item.directive.ts","../../../projects/f-flow/src/f-external-item/providers.ts","../../../projects/f-flow/src/f-draggable/i-f-drag-and-drop-plugin.ts","../../../projects/f-flow/src/f-draggable/f-draggable.directive.ts","../../../projects/f-flow/src/f-draggable/f-selection-change-event.ts","../../../projects/f-flow/src/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.ts","../../../projects/f-flow/src/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap.drag-handler.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/providers.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/providers.ts","../../../projects/f-flow/src/f-minimap/domain/check-rect-is-finite.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap-data.ts","../../../projects/f-flow/src/f-minimap/domain/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.ts","../../../projects/f-flow/src/domain/get-can-be-selected-items/get-can-be-selected-items-request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area.drag-handle.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/providers.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area-base.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area.component.ts","../../../projects/f-flow/src/f-selection-area/providers.ts","../../../projects/f-flow/src/f-draggable/providers.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/get-selection/get-selection.request.ts","../../../projects/f-flow/src/domain/f-selection/get-selection/get-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/select/select.request.ts","../../../projects/f-flow/src/domain/f-selection/select/select.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.request.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.execution.ts","../../../projects/f-flow/src/domain/f-selection/providers.ts","../../../projects/f-flow/src/domain/get-can-be-selected-items/get-can-be-selected-items.execution.ts","../../../projects/f-flow/src/domain/get-connection-line/get-connection-line.request.ts","../../../projects/f-flow/src/domain/get-connection-line/get-connection-line.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state.request.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/providers.ts","../../../projects/f-flow/src/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.request.ts","../../../projects/f-flow/src/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.execution.ts","../../../projects/f-flow/src/domain/get-nodes-rect/get-nodes-rect.request.ts","../../../projects/f-flow/src/domain/get-nodes-rect/get-nodes-rect.execution.ts","../../../projects/f-flow/src/domain/get-position-in-flow/get-position-in-flow-request.ts","../../../projects/f-flow/src/domain/get-position-in-flow/get-position-in-flow.execution.ts","../../../projects/f-flow/src/domain/is-connection-under-node/is-connection-under-node.execution.ts","../../../projects/f-flow/src/domain/redraw-connections/redraw-connections-request.ts","../../../projects/f-flow/src/domain/redraw-connections/redraw-connections.execution.ts","../../../projects/f-flow/src/domain/show-connections-after-calculations/show-connections-after-calculations-request.ts","../../../projects/f-flow/src/domain/show-connections-after-calculations/show-connections-after-calculations.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-item-layers.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-item-layers.execution.ts","../../../projects/f-flow/src/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.request.ts","../../../projects/f-flow/src/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.execution.ts","../../../projects/f-flow/src/domain/constants.ts","../../../projects/f-flow/src/domain/create-dom-element.ts","../../../projects/f-flow/src/domain/providers.ts","../../../projects/f-flow/src/f-backgroud/f-rect-pattern/f-rect-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-circle-pattern/f-circle-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-background-base.ts","../../../projects/f-flow/src/f-backgroud/f-background.component.ts","../../../projects/f-flow/src/f-backgroud/providers.ts","../../../projects/f-flow/src/f-canvas/domain/f-canvas-change.event.ts","../../../projects/f-flow/src/f-canvas/f-canvas-base.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.html","../../../projects/f-flow/src/f-canvas/providers.ts","../../../projects/f-flow/src/f-line-alignment/domain/line-element.ts","../../../projects/f-flow/src/f-line-alignment/domain/line-service.ts","../../../projects/f-flow/src/f-line-alignment/domain/nearest-coordinate.ts","../../../projects/f-flow/src/f-line-alignment/f-line-alignment-base.ts","../../../projects/f-flow/src/f-line-alignment/f-line-alignment.component.ts","../../../projects/f-flow/src/f-line-alignment/providers.ts","../../../projects/f-flow/src/f-minimap/f-minimap-flow.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap-canvas.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap-view.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap.component.ts","../../../projects/f-flow/src/f-minimap/f-minimap.component.html","../../../projects/f-flow/src/f-minimap/providers.ts","../../../projects/f-flow/src/f-flow/f-flow-base.ts","../../../projects/f-flow/src/f-flow/f-flow.component.ts","../../../projects/f-flow/src/f-flow/f-flow.component.html","../../../projects/f-flow/src/f-flow/providers.ts","../../../projects/f-flow/src/f-zoom/f-zoom-base.ts","../../../projects/f-flow/src/f-zoom/f-zoom.directive.ts","../../../projects/f-flow/src/f-zoom/providers.ts","../../../projects/f-flow/src/f-flow.module.ts","../../../projects/f-flow/src/foblex-flow.ts"],"sourcesContent":["import { ITransformModel } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_BACKGROUND_PATTERN = new InjectionToken<IFBackgroundPattern>('F_BACKGROUND_PATTERN');\n\nexport interface IFBackgroundPattern {\n\n hostElement: HTMLElement | SVGElement;\n\n setTransform(transform: ITransformModel): void;\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { FConnectionBase } from '../../f-connection';\n\nexport class CreateConnectionMarkersRequest {\n constructor(\n public fConnection: FConnectionBase,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { ITransformModel } from '@foblex/2d';\nimport { FConnectionBase, FMarkerBase } from '../f-connection';\nimport { FFlowBase } from '../f-flow';\nimport { FCanvasBase } from '../f-canvas';\nimport { FBackgroundBase } from '../f-backgroud';\nimport { FNodeBase } from '../f-node';\nimport { FConnectorBase } from '../f-connectors';\nimport { FDraggableBase } from '../f-draggable';\n\n@Injectable()\nexport class FComponentsStore {\n\n private readonly componentsDataChanges: Subject<void> = new Subject<void>();\n public get componentsData$(): Observable<void> {\n return this.componentsDataChanges.asObservable();\n }\n\n private readonly componentsCountChanges: Subject<void> = new Subject<void>();\n public get componentsCount$(): Observable<void> {\n return this.componentsCountChanges.asObservable();\n }\n\n public get flowHost(): HTMLElement {\n return this.fFlow?.hostElement!;\n }\n\n public get transform(): ITransformModel {\n return this.fCanvas?.transform!;\n }\n\n public fFlow: FFlowBase | undefined;\n\n public fCanvas: FCanvasBase | undefined;\n\n public fBackground: FBackgroundBase | undefined;\n\n public fNodes: FNodeBase[] = [];\n\n public fConnections: FConnectionBase[] = [];\n\n public fTempConnection: FConnectionBase | undefined;\n\n public fSnapConnection: FConnectionBase | undefined;\n\n public fMarkers: FMarkerBase[] = [];\n\n public fOutputs: FConnectorBase[] = [];\n\n public fInputs: FConnectorBase[] = [];\n\n public fOutlets: FConnectorBase[] = [];\n\n public fDraggable: FDraggableBase | undefined;\n\n public findNode(element: HTMLElement | SVGElement): FNodeBase | undefined {\n return this.fNodes.find(n => n.isContains(element));\n }\n\n public addComponent<T>(collection: T[], component: T): void {\n collection.push(component);\n this.componentsCountChanges.next();\n }\n\n public removeComponent<T>(collection: T[], component: T): void {\n const index = collection.indexOf(component);\n if (index > -1) {\n collection.splice(index, 1);\n this.componentsCountChanges.next();\n }\n }\n\n public componentDataChanged(): void {\n this.componentsDataChanges.next();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class FTransformStore {\n\n public readonly changes: Subject<void> = new Subject<void>();\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionMarkersRequest } from './create-connection-markers-request';\nimport { FConnectionBase, FMarkerBase } from '../../f-connection';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { normalizeDomElementId } from '@foblex/utils';\nimport { FComponentsStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionMarkersRequest)\nexport class CreateConnectionMarkersExecution implements IExecution<CreateConnectionMarkersRequest, void> {\n\n constructor(\n private fBrowser: BrowserService,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: CreateConnectionMarkersRequest): void {\n const element: SVGDefsElement = createSVGElement('defs', this.fBrowser);\n const fConnection = request.fConnection;\n\n this.getMarkers(fConnection).forEach((marker) => {\n\n const markerElement = this.createMarkerElement(marker, fConnection.fId);\n\n const clone = marker.hostElement.cloneNode(true) as HTMLElement;\n clone.setAttribute('height', `${ marker.height }`);\n clone.setAttribute('width', `${ marker.width }`);\n clone.removeAttribute('markerUnits');\n clone.style.display = 'unset';\n markerElement.append(clone);\n\n element.append(markerElement);\n });\n\n fConnection.fDefs.nativeElement.innerHTML = element.innerHTML;\n\n this.makeSafariCompatible(fConnection);\n }\n\n public getMarkers(fConnection: FConnectionBase): FMarkerBase[] {\n return this.fComponentsStore.fMarkers.filter((x) => fConnection.hostElement.contains(x.hostElement));\n }\n\n // Safari does not support markers on path elements if markers are defined after the path element\n private makeSafariCompatible(fConnection: FConnectionBase): void {\n fConnection.fPath.hostElement.replaceWith(fConnection.fPath.hostElement);\n }\n\n private createMarkerElement(marker: FMarkerBase, fConnectionId: string): SVGElement {\n const markerElement = createSVGElement('marker', this.fBrowser);\n\n markerElement.setAttribute('id', normalizeDomElementId(marker.type + '-' + fConnectionId));\n\n markerElement.setAttribute('markerHeight', `${ marker.height }`);\n markerElement.setAttribute('markerWidth', `${ marker.width }`);\n markerElement.setAttribute('orient', `${ marker.orient }`);\n markerElement.setAttribute('refX', `${ marker.refX }`);\n markerElement.setAttribute('refY', `${ marker.refY }`);\n markerElement.setAttribute('markerUnits', `${ marker.markerUnits }`);\n\n return markerElement;\n }\n}\n\nfunction createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","export class CreateRoundedRectFromElementRequest {\n constructor(\n public element: HTMLElement | SVGElement,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateRoundedRectFromElementRequest } from './create-rounded-rect-from-element-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { RoundedRect, RectExtensions } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(CreateRoundedRectFromElementRequest)\nexport class CreateRoundedRectFromElementExecution implements IExecution<CreateRoundedRectFromElementRequest, RoundedRect> {\n\n constructor(\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: CreateRoundedRectFromElementRequest): RoundedRect {\n return this.setRadiusFromElement(RoundedRect.fromRect(RectExtensions.fromElement(request.element)), request.element);\n }\n\n private setRadiusFromElement(rect: RoundedRect, element: HTMLElement | SVGElement): RoundedRect {\n const styles = this.getComputedStyle(element);\n rect.radius1 = this.toPixels(styles.borderTopLeftRadius, element, styles.fontSize);\n rect.radius2 = this.toPixels(styles.borderTopRightRadius, element, styles.fontSize);\n rect.radius3 = this.toPixels(styles.borderBottomRightRadius, element, styles.fontSize);\n rect.radius4 = this.toPixels(styles.borderBottomLeftRadius, element, styles.fontSize);\n return rect;\n }\n\n private getComputedStyle(element: HTMLElement | SVGElement): CSSStyleDeclaration {\n return this.fBrowser.window.getComputedStyle(element);\n }\n\n private toPixels(value: string, element: HTMLElement | SVGElement, fontSize: string): number {\n return this.fBrowser.toPixels(value, element.clientWidth, element.clientHeight, fontSize) || 0\n }\n}\n","export class EmitTransformChangesRequest {\n\n}\n","import { EmitTransformChangesRequest } from './emit-transform-changes.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FTransformStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(EmitTransformChangesRequest)\nexport class EmitTransformChangesExecution\n implements IExecution<EmitTransformChangesRequest, void> {\n\n constructor(\n private fTransformStore: FTransformStore,\n ) {\n }\n\n public handle(request: EmitTransformChangesRequest): void {\n this.fTransformStore.changes.next();\n }\n}\n","import { IFBackgroundPattern } from '../../../f-backgroud';\n\nexport class AddPatternToBackgroundRequest {\n constructor(\n public fPattern: IFBackgroundPattern | undefined\n ) {\n }\n}\n","import { TransformModelExtensions } from '@foblex/2d';\nimport { AddPatternToBackgroundRequest } from './add-pattern-to-background.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { createSVGElement } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { FBackgroundBase } from '../../../f-backgroud';\n\nlet uniqueId: number = 0;\n\n@Injectable()\n@FExecutionRegister(AddPatternToBackgroundRequest)\nexport class AddPatternToBackgroundExecution implements IExecution<AddPatternToBackgroundRequest, void> {\n\n private get fBackground(): FBackgroundBase {\n return this.fComponentsStore.fBackground!;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: AddPatternToBackgroundRequest): void {\n const children = request.fPattern?.hostElement.getElementsByTagName('pattern') || [];\n const pattern = children.length ? children[ 0 ] : undefined;\n if (pattern) {\n const defs = createSVGElement('defs', this.fBrowser);\n pattern.id = 'f-background-pattern-' + uniqueId++;\n request.fPattern?.hostElement.remove();\n defs.appendChild(pattern);\n this.fBackground.hostElement?.firstChild?.appendChild(defs);\n const rect = createSVGElement('rect', this.fBrowser);\n rect.setAttribute('fill', 'url(#' + pattern.id + ')');\n rect.setAttribute('width', '100%');\n rect.setAttribute('height', '100%');\n this.fBackground.hostElement.firstChild?.appendChild(rect);\n const transform = this.fComponentsStore.fCanvas?.transform || TransformModelExtensions.default();\n request.fPattern?.setTransform(transform);\n }\n }\n}\n","import { AddPatternToBackgroundExecution } from './add-pattern-to-background';\n\nexport const F_BACKGROUND_FEATURES = [\n\n AddPatternToBackgroundExecution\n];\n","export class CenterGroupOrNodeRequest {\n\n constructor(\n public id: string,\n public animated: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CenterGroupOrNodeRequest } from './center-group-or-node-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { F_CANVAS_ANIMATION_DURATION } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(CenterGroupOrNodeRequest)\nexport class CenterGroupOrNodeExecution implements IExecution<CenterGroupOrNodeRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: CenterGroupOrNodeRequest): void {\n const fNode = this.getNode(request.id);\n if (!fNode) {\n return;\n }\n\n this.toCenter(this.getNodeRect(fNode), this.getFlowRect(), fNode.position);\n\n request.animated ? this.fComponentsStore.fCanvas!.redrawWithAnimation() : this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);\n }\n\n public toCenter(fNodeRect: IRect, fFlowRect: IRect, position: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = PointExtensions.initialize(\n (fFlowRect.width - fNodeRect.width) / 2 - position.x * this.transform.scale,\n (fFlowRect.height - fNodeRect.height) / 2 - position.y * this.transform.scale\n );\n }\n\n private getNode(id: string): FNodeBase | undefined {\n return this.fComponentsStore.fNodes.find((x) => x.fId === id);\n }\n\n private getNodeRect(fNode: FNodeBase): IRect {\n return RectExtensions.fromElement(fNode.hostElement);\n }\n\n private getFlowRect(): IRect {\n return RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FitToFlowRequest {\n\n constructor(\n public toCenter: IPoint,\n public animated: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FitToFlowRequest } from './fit-to-flow-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { F_CANVAS_ANIMATION_DURATION, GetNodesRectRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(FitToFlowRequest)\nexport class FitToFlowExecution implements IExecution<FitToFlowRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: FitToFlowRequest): void {\n const fNodesRect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n\n this.fitToParent(\n fNodesRect,\n RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement),\n this.fComponentsStore.fNodes.map((x) => x.position),\n request.toCenter\n );\n request.animated ? this.fComponentsStore.fCanvas!.redrawWithAnimation() : this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);\n }\n\n public fitToParent(rect: IRect, parentRect: IRect, points: IPoint[], toCenter: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n const itemsContainerWidth = (rect.width / this.transform.scale) + toCenter.x;\n const itemsContainerHeight = (rect.height / this.transform.scale) + toCenter.y;\n if (\n (itemsContainerWidth > parentRect.width || itemsContainerHeight > parentRect.height) ||\n itemsContainerWidth < parentRect.width && itemsContainerHeight < parentRect.height\n ) {\n this.transform.scale = Math.min(parentRect.width / itemsContainerWidth, parentRect.height / itemsContainerHeight);\n }\n\n const newX = (parentRect.width - itemsContainerWidth * this.transform.scale) / 2 - this.transform.position.x * this.transform.scale;\n const newY = (parentRect.height - itemsContainerHeight * this.transform.scale) / 2 - this.transform.position.y * this.transform.scale;\n\n this.transform.position = PointExtensions.initialize(newX + (toCenter.x / 2) * this.transform.scale, newY + (toCenter.y / 2) * this.transform.scale)\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","import { IPoint, ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasPositionRequest {\n\n constructor(\n public transform: ITransformModel,\n public position: IPoint | undefined\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InputCanvasPositionRequest } from './input-canvas-position-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasPositionRequest)\nexport class InputCanvasPositionExecution implements IExecution<InputCanvasPositionRequest, void> {\n\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: InputCanvasPositionRequest): void {\n if (!request.position) {\n return;\n }\n const position = PointExtensions.sum(request.transform.position, request.transform.scaledPosition);\n if (!PointExtensions.isEqual(position, request.position)) {\n request.transform.position = request.position;\n request.transform.scaledPosition = PointExtensions.initialize();\n this.fComponentsStore.fCanvas?.redraw();\n }\n }\n}\n","import { ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasScaleRequest {\n\n constructor(\n public transform: ITransformModel,\n public scale: number | undefined\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InputCanvasScaleRequest } from './input-canvas-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasScaleRequest)\nexport class InputCanvasScaleExecution implements IExecution<InputCanvasScaleRequest, void> {\n\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: InputCanvasScaleRequest): void {\n if (!request.scale) {\n return;\n }\n request.transform.scale = request.scale;\n this.fComponentsStore.fCanvas?.redraw();\n }\n}\n","export class ResetScaleRequest {\n}\n","import { Injectable } from '@angular/core';\nimport { ResetScaleRequest } from './reset-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n\n@Injectable()\n@FExecutionRegister(ResetScaleRequest)\nexport class ResetScaleExecution implements IExecution<ResetScaleRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: ResetScaleRequest): void {\n this.transform.scale = 1;\n this.transform.scaledPosition = PointExtensions.initialize();\n }\n}\n","export class ResetScaleAndCenterRequest {\n\n constructor(\n public animated: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ResetScaleAndCenterRequest } from './reset-scale-and-center-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { F_CANVAS_ANIMATION_DURATION, GetNodesRectRequest } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\n\n\n@Injectable()\n@FExecutionRegister(ResetScaleAndCenterRequest)\nexport class ResetScaleAndCenterExecution implements IExecution<ResetScaleAndCenterRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: ResetScaleAndCenterRequest): void {\n const fNodesRect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n this.oneToOneCentering(\n fNodesRect,\n RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement),\n this.fComponentsStore.fNodes.map((x) => x.position)\n );\n\n request.animated ? this.fComponentsStore.fCanvas!.redrawWithAnimation() : this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);\n }\n\n public oneToOneCentering(rect: IRect, parentRect: IRect, points: IPoint[]): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n\n const newX = (parentRect.width - rect.width / this.transform.scale) / 2 - this.transform.position.x;\n const newY = (parentRect.height - rect.height / this.transform.scale) / 2 - this.transform.position.y;\n\n this.transform.scale = 1;\n this.transform.position = PointExtensions.initialize(newX, newY);\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class UpdateScaleRequest {\n\n constructor(\n public scale: number,\n public toPosition: IPoint\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UpdateScaleRequest } from './update-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n\n@Injectable()\n@FExecutionRegister(UpdateScaleRequest)\nexport class UpdateScaleExecution implements IExecution<UpdateScaleRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: UpdateScaleRequest): void {\n if (request.scale !== this.transform.scale) {\n\n const summaryPosition = PointExtensions.sum(this.transform.scaledPosition, this.transform.position);\n\n const newX = request.toPosition.x - (request.toPosition.x - summaryPosition.x) * request.scale / this.transform.scale;\n const newY = request.toPosition.y - (request.toPosition.y - summaryPosition.y) * request.scale / this.transform.scale;\n\n this.transform.scale = request.scale;\n this.transform.scaledPosition = PointExtensions.sub(PointExtensions.initialize(newX, newY), this.transform.position);\n }\n }\n}\n","import { CenterGroupOrNodeExecution } from './center-group-or-node';\nimport { FitToFlowExecution } from './fit-to-flow';\nimport { ResetScaleAndCenterExecution } from './reset-scale-and-center';\nimport { ResetScaleExecution } from './reset-scale';\nimport { UpdateScaleExecution } from './update-scale';\nimport { InputCanvasPositionExecution } from './input-canvas-position';\nimport { InputCanvasScaleExecution } from './input-canvas-scale';\n\nexport const F_CANVAS_FEATURES = [\n\n CenterGroupOrNodeExecution,\n\n FitToFlowExecution,\n\n InputCanvasPositionExecution,\n\n InputCanvasScaleExecution,\n\n ResetScaleExecution,\n\n ResetScaleAndCenterExecution,\n\n UpdateScaleExecution\n];\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class AddConnectionToStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddConnectionToStoreRequest } from './add-connection-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddConnectionToStoreRequest)\nexport class AddConnectionToStoreExecution implements IExecution<AddConnectionToStoreRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: AddConnectionToStoreRequest): void {\n this.fComponentsStore.fConnections.push(request.fConnection);\n this.fComponentsStore.componentDataChanged();\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { IConnectorWithRect } from '../get-connector-with-rect';\n\nexport class FindClosestInputUsingSnapThresholdRequest {\n\n constructor(\n public position: IPoint,\n public canBeConnectedInputs: IConnectorWithRect[],\n public snapThreshold: number\n ) {\n }\n}\n","import { FindClosestInputUsingSnapThresholdRequest } from './find-closest-input-using-snap-threshold.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { IConnectorWithRect } from '../get-connector-with-rect';\n\n@Injectable()\n@FExecutionRegister(FindClosestInputUsingSnapThresholdRequest)\nexport class FindClosestInputUsingSnapThresholdExecution\n implements IExecution<FindClosestInputUsingSnapThresholdRequest, IConnectorWithRect | undefined> {\n\n\n public handle(payload: FindClosestInputUsingSnapThresholdRequest): IConnectorWithRect | undefined {\n let result: IConnectorWithRect | undefined;\n let minDistance = Infinity;\n\n for (const element of payload.canBeConnectedInputs) {\n const distance = this.distanceToRectangle(payload.position, element);\n\n if (distance < minDistance) {\n minDistance = distance;\n result = element;\n }\n }\n\n return minDistance < payload.snapThreshold ? result : undefined;\n }\n\n private distanceToRectangle(point: IPoint, inputWithRect: IConnectorWithRect): number {\n const closestX = this.clamp(point.x, inputWithRect.fRect.x, inputWithRect.fRect.x + inputWithRect.fRect.width);\n const closestY = this.clamp(point.y, inputWithRect.fRect.y, inputWithRect.fRect.y + inputWithRect.fRect.height);\n\n const dx = point.x - closestX;\n const dy = point.y - closestY;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n private clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n }\n}\n","export class GetAllCanBeConnectedInputPositionsRequest {\n\n constructor(\n public fOutputId: string,\n ) {\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class GetConnectorWithRectRequest {\n\n constructor(\n public connector: FConnectorBase\n ) {\n }\n}\n","export class GetElementRectInFlowRequest {\n constructor(\n public element: HTMLElement | SVGElement\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetElementRectInFlowRequest } from './get-element-rect-in-flow-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport { IRoundedRect, RoundedRect, IPoint, ISize, Point, SizeExtensions, ITransformModel } from '@foblex/2d';\nimport { CreateRoundedRectFromElementRequest } from '../create-rounded-rect-from-element';\n\n@Injectable()\n@FExecutionRegister(GetElementRectInFlowRequest)\nexport class GetElementRectInFlowExecution implements IExecution<GetElementRectInFlowRequest, IRoundedRect> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetElementRectInFlowRequest): IRoundedRect {\n const systemRect = this.fMediator.send<IRoundedRect>(new CreateRoundedRectFromElementRequest(request.element));\n const position = this.transformElementPositionInFlow(systemRect);\n const size = this.transformElementSizeInFlow(systemRect);\n\n return new RoundedRect(\n position.x, position.y, size.width, size.height,\n systemRect.radius1, systemRect.radius2, systemRect.radius3, systemRect.radius4\n );\n }\n\n private transformElementPositionInFlow(rect: IRoundedRect): IPoint {\n return Point.fromPoint(rect).elementTransform(this.flowHost).sub(this.transform.scaledPosition).sub(this.transform.position).div(this.transform.scale);\n }\n\n private transformElementSizeInFlow(rect: IRoundedRect): ISize {\n return SizeExtensions.initialize(rect.width / this.transform.scale, rect.height / this.transform.scale);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetConnectorWithRectRequest } from './get-connector-with-rect-request';\nimport { IRoundedRect } from '@foblex/2d';\nimport { IConnectorWithRect } from './i-connector-with-rect';\nimport { GetElementRectInFlowRequest } from '../../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(GetConnectorWithRectRequest)\nexport class GetConnectorWithRectExecution implements IExecution<GetConnectorWithRectRequest, IConnectorWithRect> {\n\n constructor(\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: GetConnectorWithRectRequest): IConnectorWithRect {\n return {\n fConnector: request.connector,\n fRect: this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(request.connector.hostElement))\n }\n }\n}\n","import { GetAllCanBeConnectedInputPositionsRequest } from './get-all-can-be-connected-input-positions.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetConnectorWithRectRequest, IConnectorWithRect } from '../get-connector-with-rect';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetAllCanBeConnectedInputPositionsRequest)\nexport class GetAllCanBeConnectedInputPositionsExecution\n implements IExecution<GetAllCanBeConnectedInputPositionsRequest, IConnectorWithRect[]> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fInputs(): FConnectorBase[] {\n return this.fComponentsStore.fInputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(payload: GetAllCanBeConnectedInputPositionsRequest): IConnectorWithRect[] {\n return this.getCanBeConnectedInputs(this.getOutput(payload.fOutputId)!).map((x) => {\n return this.fMediator.send(new GetConnectorWithRectRequest(x));\n });\n }\n\n private getOutput(fId: string): FConnectorBase | undefined {\n return this.findOutputById(fId) || this.findOutletById(fId);\n }\n\n private findOutputById(fId: string): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === fId);\n }\n\n private findOutletById(fId: string): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === fId);\n }\n\n private getCanBeConnectedInputs(output: FConnectorBase): FConnectorBase[] {\n return output.isSelfConnectable ?\n this.fInputs.filter((x) => x.canBeConnected) :\n this.filterSelfConnectable(this.fInputs.filter((x) => x.canBeConnected), output);\n }\n\n private filterSelfConnectable(inputs: FConnectorBase[], output: FConnectorBase): FConnectorBase[] {\n return inputs.filter((x) => this.getNodeOfConnector(output)?.hostElement !== this.getNodeOfConnector(x)?.hostElement);\n }\n\n private getNodeOfConnector(connector: FConnectorBase): FNodeBase | undefined {\n return this.fNodes.find((x) => x.isContains(connector.hostElement));\n }\n}\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class RemoveConnectionFromStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveConnectionFromStoreRequest } from './remove-connection-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveConnectionFromStoreRequest)\nexport class RemoveConnectionFromStoreExecution implements IExecution<RemoveConnectionFromStoreRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: RemoveConnectionFromStoreRequest): void {\n const index = this.fComponentsStore.fConnections.indexOf(request.fConnection);\n if (index === -1) {\n throw new Error(`Connection not found in store`);\n }\n this.fComponentsStore.fConnections.splice(index, 1);\n this.fComponentsStore.componentDataChanged();\n }\n}\n","import { FindClosestInputUsingSnapThresholdExecution } from './find-closest-input-using-snap-threshold';\nimport { GetAllCanBeConnectedInputPositionsExecution } from './get-all-can-be-connected-input-positions';\nimport { GetConnectorWithRectExecution } from './get-connector-with-rect';\nimport { AddConnectionToStoreExecution } from './add-connection-to-store';\nimport { RemoveConnectionFromStoreExecution } from './remove-connection-from-store';\n\nexport const F_CONNECTION_FEATURES = [\n\n AddConnectionToStoreExecution,\n\n FindClosestInputUsingSnapThresholdExecution,\n\n GetAllCanBeConnectedInputPositionsExecution,\n\n GetConnectorWithRectExecution,\n\n RemoveConnectionFromStoreExecution\n];\n","export class ClearSelectionRequest {\n\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CanvasMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Point } from '@foblex/2d';\nimport { IDraggableItem } from './i-draggable-item';\nimport { FLineAlignmentBase } from '../f-line-alignment';\nimport { ICanChangeSelection } from '../mixins';\n\n@Injectable()\nexport class FDraggableDataContext {\n\n public selectedItems: ICanChangeSelection[] = [];\n\n public isSelectedChanged: boolean = false;\n\n public onPointerDownScale: number = 1;\n\n public onPointerDownPosition: Point = new Point(0, 0);\n\n public draggableItems: IDraggableItem[] = [];\n\n public fLineAlignment: FLineAlignmentBase | undefined;\n\n public reset(): void {\n this.draggableItems = [];\n this.onPointerDownScale = 1;\n this.onPointerDownPosition = new Point(0, 0);\n }\n\n public markSelectionAsChanged(): void {\n this.isSelectedChanged = true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMoveFinalizeRequest } from './canvas-move-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\n\n@Injectable()\n@FExecutionRegister(CanvasMoveFinalizeRequest)\nexport class CanvasMoveFinalizeExecution implements IExecution<CanvasMoveFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: CanvasMoveFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => x.complete?.());\n }\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class CanvasDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public initialize(): void {\n this.onPointerDownPosition = this.fComponentsStore.fCanvas!.transform.position;\n }\n\n public move(difference: IPoint): void {\n this.fComponentsStore.fCanvas!.setPosition(Point.fromPoint(this.onPointerDownPosition).add(difference));\n this.fComponentsStore.fCanvas!.redraw();\n }\n\n public complete(): void {\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMoveFinalizeRequest } from './canvas-move-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CanvasDragHandler } from '../canvas.drag-handler';\n\n@Injectable()\n@FValidatorRegister(CanvasMoveFinalizeRequest)\nexport class CanvasMoveFinalizeValidator implements IValidator<CanvasMoveFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CanvasMoveFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CanvasDragHandler\n );\n }\n}\n","import { CanvasMoveFinalizeExecution } from './canvas-move-finalize.execution';\nimport { CanvasMoveFinalizeValidator } from './canvas-move-finalize.validator';\n\nexport const CANVAS_MOVE_FINALIZE_PROVIDERS = [\n\n CanvasMoveFinalizeExecution,\n\n CanvasMoveFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CanvasMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMovePreparationRequest } from './canvas-move-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CanvasDragHandler } from '../canvas.drag-handler';\n\n@Injectable()\n@FExecutionRegister(CanvasMovePreparationRequest)\nexport class CanvasMovePreparationExecution implements IExecution<CanvasMovePreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: CanvasMovePreparationRequest): void {\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost);\n this.fDraggableDataContext.draggableItems = [\n new CanvasDragHandler(this.fComponentsStore)\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMovePreparationRequest } from './canvas-move-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FValidatorRegister(CanvasMovePreparationRequest)\nexport class CanvasMovePreparationValidator implements IValidator<CanvasMovePreparationRequest> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CanvasMovePreparationRequest): boolean {\n return !this.fDraggableDataContext.draggableItems.length &&\n (this.isBackgroundElement(request.event.targetElement) || this.isDragOnHost(request.event.targetElement));\n }\n\n private isBackgroundElement(targetElement: HTMLElement): boolean | undefined {\n return this.fComponentsStore.fBackground?.isBackgroundElement(targetElement);\n }\n\n private isDragOnHost(targetElement: HTMLElement): boolean {\n return this.flowHost.contains(targetElement) && !this.getNode(targetElement);\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n let result = this.fComponentsStore.findNode(targetElement);\n if (result && result.fDraggingDisabled) {\n result = undefined;\n }\n return result;\n }\n}\n","import { CanvasMovePreparationExecution } from './canvas-move-preparation.execution';\nimport { CanvasMovePreparationValidator } from './canvas-move-preparation.validator';\n\nexport const CANVAS_MOVE_PREPARATION_PROVIDERS = [\n\n CanvasMovePreparationExecution,\n\n CanvasMovePreparationValidator,\n];\n","import { CANVAS_MOVE_PREPARATION_PROVIDERS } from './canvas-move-preparation';\nimport { CANVAS_MOVE_FINALIZE_PROVIDERS } from './canvas-move-finalize';\n\nexport const CANVAS_PROVIDERS = [\n\n ...CANVAS_MOVE_FINALIZE_PROVIDERS,\n\n ...CANVAS_MOVE_PREPARATION_PROVIDERS,\n];\n","export enum EFConnectableSide {\n\n LEFT = 'left',\n\n TOP = 'top',\n\n RIGHT = 'right',\n\n BOTTOM = 'bottom',\n\n AUTO = 'auto',\n}\n","import { RectExtensions } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { CalculateConnectorConnectableSideRequest } from './calculate-connector-connectable-side-request';\nimport { EFConnectableSide } from '../../e-f-connectable-side';\n\nexport class CalculateConnectorConnectableSideHandler\n implements IHandler<CalculateConnectorConnectableSideRequest, EFConnectableSide> {\n\n public handle(request: CalculateConnectorConnectableSideRequest): EFConnectableSide {\n let result: EFConnectableSide;\n\n if (request.fConnector._fConnectableSide === EFConnectableSide.AUTO) {\n result = this.getSideByDelta(request.fConnector.hostElement, request.fNodeHost);\n } else {\n result = request.fConnector._fConnectableSide;\n }\n return result;\n }\n\n private getSideByDelta(fConnectorHost: HTMLElement | SVGElement, fNodeHost: HTMLElement | SVGElement): EFConnectableSide {\n let result: EFConnectableSide;\n\n const childRect = RectExtensions.fromElement(fConnectorHost);\n const parentRect = fNodeHost.getBoundingClientRect();\n\n const deltaLeft = childRect.gravityCenter.x - parentRect.left;\n const deltaRight = parentRect.right - childRect.gravityCenter.x;\n const deltaTop = childRect.gravityCenter.y - parentRect.top;\n const deltaBottom = parentRect.bottom - childRect.gravityCenter.y;\n\n const minDelta = Math.min(deltaLeft, deltaRight, deltaTop, deltaBottom);\n\n if (minDelta === deltaLeft) {\n result = EFConnectableSide.LEFT;\n } else if (minDelta === deltaRight) {\n result = EFConnectableSide.RIGHT;\n } else if (minDelta === deltaTop) {\n result = EFConnectableSide.TOP;\n } else {\n result = EFConnectableSide.BOTTOM;\n }\n\n return result;\n }\n}\n","import { FConnectorBase } from '../../f-connector-base';\n\nexport class CalculateConnectorConnectableSideRequest {\n\n constructor(\n public fConnector: FConnectorBase,\n public fNodeHost: HTMLElement | SVGElement\n ) {\n }\n}\n","import { Subject } from 'rxjs';\nimport { EFConnectableSide } from './e-f-connectable-side';\nimport { IHasStateChanges } from '../i-has-state-changes';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport abstract class FConnectorBase implements IHasStateChanges, IHasHostElement {\n\n public abstract id: string;\n\n public abstract disabled: boolean;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract canBeConnected: boolean;\n\n public abstract isConnected: boolean;\n\n public isSelfConnectable: boolean = true;\n\n public fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_INPUT = new InjectionToken<FNodeInputBase>('F_NODE_INPUT');\n\n@Directive()\nexport abstract class FNodeInputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public isConnected: boolean = false;\n\n public get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export function isGroup(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fGroup]');\n}\n\n","export function isNode(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNode]');\n}\n\n","import {\n Directive, ElementRef, InjectionToken\n} from \"@angular/core\";\nimport { IHasHostElement } from '../../i-has-host-element';\n\nexport const F_DRAG_HANDLE: InjectionToken<FDragHandleDirective> = new InjectionToken<FDragHandleDirective>('F_DRAG_HANDLE');\n\n@Directive({\n selector: \"[fDragHandle]\",\n host: {\n class: \"f-drag-handle f-component\"\n },\n providers: [ { provide: F_DRAG_HANDLE, useExisting: FDragHandleDirective } ],\n})\nexport class FDragHandleDirective implements IHasHostElement {\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","export enum EFResizeHandleType {\n\n LEFT_TOP = 'left-top',\n\n RIGHT_TOP = 'right-top',\n\n LEFT_BOTTOM = 'left-bottom',\n\n RIGHT_BOTTOM = 'right-bottom',\n}\n","import {\n Directive, ElementRef, HostBinding, InjectionToken, Input\n} from \"@angular/core\";\nimport { EFResizeHandleType } from './e-f-resize-handle-type';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { castToEnum } from '@foblex/utils';\n\nexport const F_RESIZE_HANDLE: InjectionToken<FResizeHandleDirective> = new InjectionToken<FResizeHandleDirective>('F_RESIZE_HANDLE');\n\n@Directive({\n selector: \"[fResizeHandle]\",\n host: {\n class: `f-resize-handle f-component`,\n '[attr.data-f-resize-handle-type]': 'type',\n },\n providers: [ { provide: F_RESIZE_HANDLE, useExisting: FResizeHandleDirective } ],\n})\nexport class FResizeHandleDirective implements IHasHostElement {\n\n public _type: EFResizeHandleType = EFResizeHandleType.LEFT_TOP;\n @Input('fResizeHandleType')\n public set type(type: EFResizeHandleType) {\n this._type = castToEnum(type, 'fResizeHandleType', EFResizeHandleType);\n }\n public get type(): EFResizeHandleType {\n return this._type;\n }\n\n @HostBinding('class')\n public get typeClass(): string {\n return `f-resize-handle-${ EFResizeHandleType[ this.type.toUpperCase() as keyof typeof EFResizeHandleType ] }`;\n }\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","import {\n Directive, ElementRef, InjectionToken, Input\n} from \"@angular/core\";\nimport { IHasHostElement } from '../../i-has-host-element';\n\n// export const F_ROTATE_HANDLE: InjectionToken<FRotateHandleDirective> = new InjectionToken<FRotateHandleDirective>('F_ROTATE_HANDLE');\n//\n// @Directive({\n// selector: \"[fRotateHandle]\",\n// host: {\n// class: `f-rotate-handle f-component`,\n// '[class.f-rotate-handle-disabled]': 'disabled',\n// },\n// providers: [ { provide: F_ROTATE_HANDLE, useExisting: FRotateHandleDirective } ],\n// })\nexport class FRotateHandleDirective implements IHasHostElement {\n\n private isDisabled: boolean = false;\n // @Input('fRotateHandleDisabled')\n // public set disabled(isDisabled: boolean | undefined | string) {\n // this.isDisabled = BooleanExtensions.castToBoolean(isDisabled);\n // }\n public get disabled(): boolean {\n return this.isDisabled;\n }\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { ICanChangeSelection } from './i-can-change-selection';\n\nexport const F_SELECTED_CLASS = 'f-selected';\n\ntype CanChangeSelectionConstructor = Constructor<ICanChangeSelection> & AbstractConstructor<ICanChangeSelection>;\n\nexport function mixinChangeSelection<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeSelectionConstructor & T;\nexport function mixinChangeSelection<T extends Constructor<IHasHostElement>>(base: T): CanChangeSelectionConstructor & T {\n return class extends base {\n\n public fId: string = '';\n\n public fSelectionDisabled: boolean = false;\n\n public deselect(): void {\n this.deselectChild?.();\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.selectChild?.();\n if (!this.isSelected()) {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n\n public selectChild(): void {\n }\n\n public deselectChild(): void {\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { ICanChangeVisibility } from './i-can-change-visibility';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { AbstractConstructor, Constructor } from '../constructor';\n\ntype CanChangeVisibilityConstructor = Constructor<ICanChangeVisibility> & AbstractConstructor<ICanChangeVisibility>;\n\nexport function mixinChangeVisibility<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T;\nexport function mixinChangeVisibility<T extends Constructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T {\n return class extends base {\n\n public show(): void {\n this.hostElement.style.display = \"unset\";\n }\n\n public hide(): void {\n this.hostElement.style.display = \"none\";\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport { IHasStateChanges } from '../i-has-state-changes';\nimport { FConnectorBase } from '../f-connectors';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { ICanChangeSelection, mixinChangeSelection } from '../mixins';\n\nexport const F_NODE = new InjectionToken<FNodeBase>('F_NODE');\n\nconst MIXIN_BASE = mixinChangeSelection(\n class {\n constructor(\n public hostElement: HTMLElement\n ) {\n }\n });\n\nexport abstract class FNodeBase extends MIXIN_BASE implements IHasStateChanges, ICanChangeSelection, IHasHostElement {\n\n public abstract override fId: string;\n\n public abstract fParentId: string | null | undefined;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n\n public abstract positionChange: EventEmitter<IPoint>;\n\n public abstract position: IPoint;\n\n protected _position: IPoint = PointExtensions.initialize();\n\n\n public abstract sizeChange: EventEmitter<IRect>;\n\n public abstract size: ISize;\n\n protected _size: ISize | undefined;\n\n\n public abstract fDraggingDisabled: boolean;\n\n public abstract override fSelectionDisabled: boolean;\n\n public abstract fConnectOnNode: boolean;\n\n public fCanBeResizedByChild: boolean = true;\n\n public abstract fIncludePadding: boolean;\n\n public abstract refresh(): void;\n\n public abstract connectors: FConnectorBase[];\n\n public abstract addConnector(connector: FConnectorBase): void;\n\n public abstract removeConnector(connector: FConnectorBase): void;\n\n protected abstract setStyle(name: string, value: string): void;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public redraw(): void {\n if (this.size) {\n this.setStyle('width', '' + this.size.width + 'px');\n this.setStyle('height', '' + this.size.height + 'px');\n }\n\n this.setStyle('transform', `translate(${ this.position.x }px,${ this.position.y }px)`);\n }\n\n public updatePosition(position: IPoint): void {\n this._position = position;\n }\n\n public updateSize(value: ISize): void {\n this._size = value;\n }\n}\n","import { Observable } from 'rxjs';\n\nexport class FResizeObserver extends Observable<ResizeObserverEntry[]> {\n\n constructor(element: HTMLElement) {\n super(subscriber => {\n const observer = new ResizeObserver(entries => {\n subscriber.next(entries);\n });\n\n observer.observe(element);\n\n return function unsubscribe() {\n observer.unobserve(element);\n observer.disconnect();\n }\n });\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { merge, Subscription } from 'rxjs';\nimport { startWith, debounceTime } from 'rxjs/operators';\nimport { FResizeObserver } from './f-resize-observer';\nimport { FComponentsStore } from '../f-storage';\nimport {\n CalculateConnectorConnectableSideHandler,\n CalculateConnectorConnectableSideRequest,\n FConnectorBase\n} from '../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { EmitTransformChangesRequest } from '../domain';\nimport { BrowserService } from '@foblex/platform';\nimport { IHasHostElement } from '../i-has-host-element';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fGroup]\",\n exportAs: \"fComponent\",\n host: {\n '[attr.data-f-group-id]': 'fId',\n class: \"f-group f-component\",\n '[class.f-group-dragging-disabled]': 'fDraggingDisabled',\n '[class.f-group-selection-disabled]': 'fSelectionDisabled',\n },\n providers: [\n { provide: F_NODE, useExisting: FGroupDirective }\n ],\n})\nexport class FGroupDirective extends FNodeBase\n implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input('fGroupId')\n public override fId: string = `f-group-${ uniqueId++ }`;\n\n @Input('fGroupParentId')\n public override fParentId: string | null | undefined = null;\n\n @Input('fGroupPosition')\n public override set position(value: IPoint) {\n this._position = PointExtensions.castToPoint(value);\n this.refresh();\n }\n public override get position(): IPoint {\n return this._position;\n }\n @Output('fGroupPositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n @Input('fGroupSize')\n public override set size(value: ISize) {\n this._size = value;\n this.refresh();\n }\n public override get size(): ISize {\n return this._size!;\n }\n @Output('fGroupSizeChange')\n public override sizeChange: EventEmitter<IRect> = new EventEmitter<IRect>();\n\n @Input('fGroupDraggingDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input('fGroupSelectionDisabled')\n public override fSelectionDisabled: boolean = false;\n\n @Input()\n public override fIncludePadding: boolean = true;\n\n @Input()\n public override fConnectOnNode: boolean = true;\n\n public override connectors: FConnectorBase[] = [];\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n super(elementReference.nativeElement);\n }\n\n public ngOnInit(): void {\n this.setStyle('position', 'absolute');\n this.setStyle('transform-origin', 'center');\n this.setStyle('user-select', 'none');\n this.setStyle('pointer-events', 'all');\n this.setStyle('left', '0');\n this.setStyle('top', '0');\n super.redraw();\n this.fComponentsStore.addComponent(this.fComponentsStore.fNodes, this);\n }\n\n protected override setStyle(styleName: string, value: string) {\n this.renderer.setStyle(this.hostElement, styleName, value);\n }\n\n public override redraw(): void {\n super.redraw();\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n return merge(new FResizeObserver(this.hostElement as HTMLElement), this.stateChanges).pipe(\n debounceTime(10), startWith(null)\n ).subscribe(() => {\n this.connectors.forEach((fConnector: FConnectorBase) => {\n fConnector.fConnectableSide = new CalculateConnectorConnectableSideHandler().handle(\n new CalculateConnectorConnectableSideRequest(fConnector, this.hostElement)\n );\n });\n this.fComponentsStore.componentDataChanged();\n });\n }\n\n public override addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.stateChanges.next();\n }\n\n public override removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.stateChanges.next();\n }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fNodes, this);\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\nimport { merge, Subscription } from 'rxjs';\nimport { startWith, debounceTime } from 'rxjs/operators';\nimport { FResizeObserver } from './f-resize-observer';\nimport { FComponentsStore } from '../f-storage';\nimport {\n CalculateConnectorConnectableSideHandler,\n CalculateConnectorConnectableSideRequest,\n FConnectorBase\n} from '../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { EmitTransformChangesRequest } from '../domain';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { IHasHostElement } from '../i-has-host-element';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNode]\",\n exportAs: \"fComponent\",\n host: {\n '[attr.data-f-node-id]': 'fId',\n class: \"f-node f-component\",\n '[class.f-node-dragging-disabled]': 'fDraggingDisabled',\n '[class.f-node-selection-disabled]': 'fSelectionDisabled',\n },\n providers: [\n { provide: F_NODE, useExisting: FNodeDirective }\n ],\n})\nexport class FNodeDirective extends FNodeBase implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input('fNodeId')\n public override fId: string = `f-node-${ uniqueId++ }`;\n\n @Input('fNodeParentId')\n public override fParentId: string | null | undefined = null;\n\n @Input('fNodePosition')\n public override set position(value: IPoint) {\n this._position = PointExtensions.castToPoint(value);\n this.refresh();\n }\n\n public override get position(): IPoint {\n return this._position;\n }\n\n @Output('fNodePositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n @Input('fNodeSize')\n public override set size(value: ISize) {\n this._size = value;\n this.refresh();\n }\n\n public override get size(): ISize {\n return this._size!;\n }\n\n @Output('fNodeSizeChange')\n public override sizeChange: EventEmitter<IRect> = new EventEmitter<IRect>();\n\n @Input('fNodeDraggingDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input('fNodeSelectionDisabled')\n public override fSelectionDisabled: boolean = false;\n\n @Input()\n public override fIncludePadding: boolean = true;\n\n //TODO: Add ability to connect to first connectable input if node is under pointer\n @Input()\n public override fConnectOnNode: boolean = true;\n\n public override connectors: FConnectorBase[] = [];\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n super(elementReference.nativeElement);\n }\n\n public ngOnInit(): void {\n this.setStyle('position', 'absolute');\n this.setStyle('transform-origin', 'center');\n this.setStyle('user-select', 'none');\n this.setStyle('pointer-events', 'all');\n this.setStyle('left', '0');\n this.setStyle('top', '0');\n super.redraw();\n this.fComponentsStore.addComponent(this.fComponentsStore.fNodes, this);\n }\n\n protected override setStyle(styleName: string, value: string) {\n this.renderer.setStyle(this.hostElement, styleName, value);\n }\n\n public override redraw(): void {\n super.redraw();\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n return merge(new FResizeObserver(this.hostElement as HTMLElement), this.stateChanges).pipe(\n debounceTime(10), startWith(null)\n ).subscribe(() => {\n this.connectors.forEach((fConnector: FConnectorBase) => {\n fConnector.fConnectableSide = new CalculateConnectorConnectableSideHandler().handle(\n new CalculateConnectorConnectableSideRequest(fConnector, this.hostElement)\n );\n });\n this.fComponentsStore.componentDataChanged();\n });\n }\n\n public override addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.stateChanges.next();\n }\n\n public override removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.stateChanges.next();\n }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fNodes, this);\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","import { FNodeDirective } from './f-node.directive';\nimport { FDragHandleDirective } from './f-drag-handle';\nimport { FResizeHandleDirective } from './f-resize-handle';\nimport { FGroupDirective } from './f-group.directive';\n\nexport const F_NODE_PROVIDERS = [\n\n FGroupDirective,\n\n FNodeDirective,\n\n FDragHandleDirective,\n\n FResizeHandleDirective,\n];\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { F_NODE_INPUT, FNodeInputBase } from './f-node-input-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { FNodeBase, F_NODE } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\nimport { castToBoolean, castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeInput]\",\n exportAs: 'fNodeInput',\n host: {\n '[attr.data-f-input-id]': 'id',\n class: \"f-component f-node-input\",\n '[class.f-node-input-multiple]': 'multiple',\n '[class.f-node-input-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_INPUT, useExisting: FNodeInputDirective } ],\n})\nexport class FNodeInputDirective extends FNodeInputBase implements OnInit, OnDestroy {\n\n @Input('fInputId')\n public override id: any = `f-node-input-${ uniqueId++ }`;\n\n @Input('fInputMultiple')\n public override multiple: boolean = true;\n\n @Input('fInputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n @Input('fInputConnectableSide')\n public set _fSide(value: EFConnectableSide | string) {\n this._fConnectableSide = castToEnum(value, 'fInputConnectableSide', EFConnectableSide);\n this.fNode.refresh();\n }\n\n public get _fSide(): EFConnectableSide {\n return this._fConnectableSide;\n }\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override isConnected: boolean = false;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n this.fComponentsStore.addComponent(this.fComponentsStore.fInputs, this);\n this.fNode.addConnector(this);\n }\n\n public override setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n this.hostElement.classList.toggle('f-node-input-connected', isConnected);\n this.hostElement.classList.toggle('f-node-input-not-connectable', !this.canBeConnected);\n }\n\n public ngOnDestroy(): void {\n this.fNode.removeConnector(this);\n this.fComponentsStore.removeComponent(this.fComponentsStore.fInputs, this);\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_OUTLET = new InjectionToken<FNodeOutletBase>('F_NODE_OUTLET');\n\n@Directive()\nexport abstract class FNodeOutletBase extends FConnectorBase {\n\n public abstract isConnectionFromOutlet: boolean;\n\n public override isConnected: boolean = false;\n\n private outputs: FConnectorBase[] = [];\n\n public get canBeConnected(): boolean {\n return !this.disabled && this.outputs.some((output) => output.canBeConnected);\n }\n\n public setOutputs(outputs: FConnectorBase[]): void {\n this.outputs = outputs;\n }\n}\n","export function isNodeOutlet(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutlet]');\n}\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { F_NODE_OUTLET, FNodeOutletBase } from './f-node-outlet-base';\nimport { F_NODE, FNodeBase } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { castToBoolean } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutlet]\",\n exportAs: 'fNodeOutlet',\n host: {\n '[attr.data-f-outlet-id]': 'id',\n class: \"f-component f-node-outlet\",\n '[class.f-node-outlet-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective } ],\n})\nexport class FNodeOutletDirective extends FNodeOutletBase implements OnInit, OnDestroy {\n\n @Input('fOutletId')\n public override id: string = `f-node-outlet-${ uniqueId++ }`;\n\n @Input('fOutletDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n public override fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n @Input()\n public override isConnectionFromOutlet: boolean = false\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n if (!this.fNode) {\n throw new Error('fNodeOutlet must be inside fNode Directive');\n }\n this.fComponentsStore.addComponent(this.fComponentsStore.fOutlets, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fOutlets, this);\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_OUTPUT = new InjectionToken<FNodeOutputBase>('F_NODE_OUTPUT');\n\n@Directive()\nexport abstract class FNodeOutputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public isConnected: boolean = false;\n\n public override get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export function isNodeOutput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutput]');\n}\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FNodeOutputBase, F_NODE_OUTPUT } from './f-node-output-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { F_NODE, FNodeBase } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\nimport { castToBoolean, castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutput]\",\n exportAs: 'fNodeOutput',\n host: {\n '[attr.data-f-output-id]': 'id',\n class: \"f-component f-node-output\",\n '[class.f-node-output-multiple]': 'multiple',\n '[class.f-node-output-disabled]': 'disabled',\n '[class.f-node-output-self-connectable]': 'isSelfConnectable',\n },\n providers: [ { provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective } ],\n})\nexport class FNodeOutputDirective extends FNodeOutputBase implements OnInit, OnDestroy {\n\n @Input('fOutputId')\n public override id: string = `f-node-output-${ uniqueId++ }`;\n\n @Input('fOutputMultiple')\n public override multiple: boolean = false;\n\n @Input('fOutputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n @Input('fOutputConnectableSide')\n public set _fSide(value: EFConnectableSide | string) {\n this._fConnectableSide = castToEnum(value, 'fOutputConnectableSide', EFConnectableSide);\n this.fNode.refresh();\n }\n\n public get _fSide(): EFConnectableSide {\n return this._fConnectableSide;\n }\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override isConnected: boolean = false;\n\n @Input()\n public override isSelfConnectable: boolean = true;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n if (!this.fNode) {\n throw new Error('fNodeOutput must be inside fNode Directive');\n }\n this.fComponentsStore.addComponent(this.fComponentsStore.fOutputs, this);\n this.fNode.addConnector(this);\n }\n\n public override setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n this.hostElement.classList.toggle('f-node-output-connected', isConnected);\n this.hostElement.classList.toggle('f-node-output-not-connectable', !this.canBeConnected);\n }\n\n public ngOnDestroy(): void {\n this.fNode.removeConnector(this);\n this.fComponentsStore.removeComponent(this.fComponentsStore.fOutputs, this);\n }\n}\n","import { FNodeInputDirective } from './f-node-input';\nimport { FNodeOutletDirective } from './f-node-outlet';\nimport { FNodeOutputDirective } from './f-node-output';\n\nexport const F_CONNECTORS_PROVIDERS = [\n\n FNodeInputDirective,\n\n FNodeOutletDirective,\n\n FNodeOutputDirective\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export function createErrorClass<T>(impl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n };\n\n const constructor = impl(_super);\n constructor.prototype = Object.create(Error.prototype);\n constructor.prototype.constructor = constructor;\n return constructor;\n}\n","import { createErrorClass } from './create-error-class';\n\nexport interface NotFoundError extends Error {\n}\n\nexport interface NotFoundCtor {\n\n new(message?: string): NotFoundError;\n}\n\nexport const NotFoundError: NotFoundCtor = createErrorClass(\n (_super) =>\n function error(this: any, message: string) {\n _super(this);\n this.message = message || 'The requested resource was not found.';\n this.code = 404;\n }\n);\n","import { createErrorClass } from './create-error-class';\n\nexport interface ConflictError extends Error {\n}\n\nexport interface ConflictErrorCtor {\n\n new(message?: string): ConflictError;\n}\n\nexport const ConflictError: ConflictErrorCtor = createErrorClass(\n (_super) =>\n function error(this: any, message: string) {\n _super(this);\n this.message = message || 'Conflict error occurred.';\n this.code = 409;\n }\n);\n","import { NotFoundError } from './not-found-error';\nimport { ConflictError } from './conflict-error';\n\nexport function OutputNotFound(id: string): Error {\n return new NotFoundError(`Output with fOutputId ${ id } not found. Make sure there is no f-connection to a non-existent fOutput.`);\n}\n\nexport function InputNotFound(id: string): Error {\n return new NotFoundError(`Input with fInputId ${ id } not found. Make sure there is no f-connection to a non-existent fInput.`);\n}\n\nexport function RequiredOutput(): Error {\n return new ConflictError(`The fNode must contain at least one fOutput if there is an fOutlet`);\n}\n","import { FNodeOutletBase } from '../../../../f-connectors';\n\nexport class GetCanBeConnectedOutputByOutletRequest {\n\n constructor(\n public outlet: FNodeOutletBase\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { GetCanBeConnectedOutputByOutletRequest } from './get-can-be-connected-output-by-outlet.request';\nimport { RequiredOutput } from '../../../../errors';\nimport { FExecutionRegister } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetCanBeConnectedOutputByOutletRequest)\nexport class GetCanBeConnectedOutputByOutletExecution\n implements IHandler<GetCanBeConnectedOutputByOutletRequest, FConnectorBase | undefined> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fOutputs(): FConnectorBase[] {\n return this.fComponentsStore.fOutputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetCanBeConnectedOutputByOutletRequest): FConnectorBase | undefined {\n const outputs = this.getConnectableOutputs(this.getNode(request.outlet));\n if (!outputs.length) {\n throw RequiredOutput();\n }\n return outputs.length > 0 ? outputs[ 0 ] : undefined;\n }\n\n private getConnectableOutputs(node: FNodeBase): FConnectorBase[] {\n return this.fOutputs.filter((x) => {\n return node.isContains(x.hostElement) && x.canBeConnected;\n });\n }\n\n private getNode(outlet: FNodeOutletBase): FNodeBase {\n return this.fNodes.find((x) => x.isContains(outlet.hostElement))!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetCanBeConnectedOutputByOutletRequest } from './get-can-be-connected-output-by-outlet.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../f-node';\nimport { FComponentsStore } from '../../../../f-storage';\n\n@Injectable()\n@FValidatorRegister(GetCanBeConnectedOutputByOutletRequest)\nexport class GetCanBeConnectedOutputByOutletValidator implements IValidator<GetCanBeConnectedOutputByOutletRequest> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetCanBeConnectedOutputByOutletRequest): boolean {\n return !!this.fNodes.find((x) => x.isContains(request.outlet.hostElement));\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FCreateConnectionEvent {\n\n constructor(\n public fOutputId: string,\n public fInputId: string | undefined,\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\n\nexport class GetInputUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler\n ) {\n }\n}\n","import { IPoint, Point } from '@foblex/2d';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { Injectable } from '@angular/core';\nimport { BrowserService } from '@foblex/platform';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\n\n\n@Injectable()\n@FExecutionRegister(GetInputUnderPointerRequest)\nexport class GetInputUnderPointerExecution\n implements IExecution<GetInputUnderPointerRequest, FConnectorBase | undefined> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fInputs(): FConnectorBase[] {\n return this.fComponentsStore.fInputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(payload: GetInputUnderPointerRequest): FConnectorBase | undefined {\n const output = (this.getOutput(payload.dragHandler) || this.getOutlet(payload.dragHandler))!;\n const inputsUnderPointer = this.getInputsUnderPointer(payload.event.getPosition(), payload.dragHandler);\n\n const connectors = output.isSelfConnectable ?\n inputsUnderPointer :\n this.filterSelfConnectable(inputsUnderPointer, output);\n return connectors.length > 0 ? connectors[0] : undefined;\n }\n\n private getOutput(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n\n private getInputsUnderPointer(position: IPoint, dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase[] {\n const result = this.getInputsInPosition(position);\n const closestInput = dragHandler.getClosetInput(this.getDifference(position));\n if (closestInput) {\n result.push(closestInput.fConnector);\n }\n const input = this.getFirstConnectableInputOfNodeInPosition(position);\n if (input) {\n result.push(input);\n }\n return result;\n }\n\n private getDifference(position: IPoint): IPoint {\n return Point.fromPoint(position).elementTransform(this.fComponentsStore.flowHost)\n .div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n }\n\n private getInputsInPosition(position: IPoint): FConnectorBase[] {\n return this.getElementsFromPoint(position).map((element) =>\n this.fInputs.find(x => x.isContains(element) && x.canBeConnected)\n ).filter((x) => !!x) as FConnectorBase[];\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n private getFirstConnectableInputOfNodeInPosition(position: IPoint): FConnectorBase | undefined {\n return this.getNodesInPosition(position).map((x) => {\n return this.fInputs.find((i) => x.isContains(i.hostElement) && i.canBeConnected);\n }).find((x) => !!x);\n }\n\n private getNodesInPosition(position: IPoint): FNodeBase[] {\n return this.getElementsFromPoint(position).map((element) => {\n return this.fNodes.find((x) => x.isContains(element) && x.fConnectOnNode)\n }).filter((x) => !!x) as FNodeBase[];\n }\n\n private filterSelfConnectable(inputs: FConnectorBase[], connector: FConnectorBase): FConnectorBase[] {\n return inputs.filter((x) => {\n const targetNode = this.fNodes.find((k) => k.isContains(x.hostElement));\n const sourceNode = this.fNodes.find((k) => k.isContains(connector!.hostElement));\n return sourceNode?.hostElement !== targetNode?.hostElement;\n })\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { OutputNotFound } from '../../../errors';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\nimport { FConnectorBase } from '../../../f-connectors';\n\n@Injectable()\n@FValidatorRegister(GetInputUnderPointerRequest)\nexport class GetInputUnderPointerValidator implements IValidator<GetInputUnderPointerRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetInputUnderPointerRequest): boolean {\n let output = this.getOutput(request.dragHandler) || this.getOutlet(request.dragHandler);\n if (!output) {\n throw OutputNotFound(request.dragHandler.fConnection.fOutputId);\n }\n return true;\n }\n\n private getOutput(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase, isNodeOutlet } from '../../../../f-connectors';\nimport { CreateConnectionFinalizeRequest } from './create-connection-finalize.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { OutputNotFound } from '../../../../errors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../get-can-be-connected-output-by-outlet';\nimport { FCreateConnectionEvent } from '../f-create-connection.event';\nimport { CreateConnectionDragHandler } from '../create-connection.drag-handler';\nimport { GetInputUnderPointerRequest } from '../../get-input-under-pointer';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFinalizeRequest)\nexport class CreateConnectionFinalizeExecution\n implements IHandler<CreateConnectionFinalizeRequest, void> {\n\n private get dragHandler(): CreateConnectionDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as CreateConnectionDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFinalizeRequest): void {\n this.emitEvent(request.event);\n this.dragHandler.complete();\n }\n\n private getTargetOutput(output: FConnectorBase | undefined): FConnectorBase {\n if (!output) {\n throw OutputNotFound(this.dragHandler.fConnection.fOutputId);\n }\n return isNodeOutlet(output.hostElement) ? this.fMediator.send<FNodeOutputBase>(\n new GetCanBeConnectedOutputByOutletRequest(output as FNodeOutletBase)\n ) : output;\n }\n\n private getOutput(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === this.dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === this.dragHandler.fConnection.fOutputId);\n }\n\n private emitEvent(event: IPointerEvent): void {\n this.fComponentsStore.fDraggable?.fCreateConnection.emit(\n new FCreateConnectionEvent(\n this.getTargetOutput(this.getOutput() || this.getOutlet()).id,\n this.getInputUnderPointer(event)?.id,\n event.getPosition()\n )\n );\n }\n\n private getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this.fMediator.send<FConnectorBase | undefined>(new GetInputUnderPointerRequest(event, this.dragHandler));\n }\n}\n","import { IDraggableItem } from '../../i-draggable-item';\nimport {\n FindClosestInputUsingSnapThresholdRequest,\n GetAllCanBeConnectedInputPositionsRequest,\n GetConnectionLineRequest,\n GetConnectorWithRectRequest,\n IConnectorWithRect\n} from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport { EFConnectableSide, FConnectorBase } from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { RoundedRect, ILine, IPoint, PointExtensions, RectExtensions, Point, } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\nexport class CreateConnectionDragHandler implements IDraggableItem {\n\n private toConnectorRect: RoundedRect = new RoundedRect();\n\n public get fConnection(): FConnectionBase {\n return this.fComponentsStore.fTempConnection!;\n }\n\n private get fSnapConnection(): FSnapConnectionComponent | undefined {\n return this.fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private fOutputWithRect!: IConnectorWithRect;\n\n private canBeConnectedInputs: IConnectorWithRect[] = [];\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n private fOutput: FConnectorBase,\n private onPointerDownPosition: IPoint,\n ) {\n }\n\n public initialize(): void {\n if (this.fSnapConnection) {\n this.fSnapConnection.fOutputId = this.fOutput.id;\n this.fSnapConnection.initialize();\n this.canBeConnectedInputs = this.fMediator.send<IConnectorWithRect[]>(\n new GetAllCanBeConnectedInputPositionsRequest(this.fOutput.id)\n );\n }\n this.fConnection.fOutputId = this.fOutput.id;\n this.fConnection.initialize();\n\n\n this.fOutputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.fOutput));\n\n this.toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.onPointerDownPosition.x, this.onPointerDownPosition.y)\n );\n\n this.fConnection.show();\n this.move(PointExtensions.initialize());\n }\n\n public move(difference: IPoint): void {\n this.drawTempConnection(this.toConnectorRect.addPoint(difference));\n if (this.fSnapConnection) {\n this.drawSnapConnection(this.getClosetInput(difference));\n }\n }\n\n private drawTempConnection(fInputRect: RoundedRect): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputRect,\n this.fConnection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n EFConnectableSide.TOP,\n )\n );\n\n this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, EFConnectableSide.TOP);\n this.fConnection.redraw();\n }\n\n private drawSnapConnection(fInputWithRect: IConnectorWithRect | undefined): void {\n if (fInputWithRect) {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputWithRect.fRect,\n this.fSnapConnection!.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fInputWithRect.fConnector.fConnectableSide\n )\n );\n this.fSnapConnection!.show();\n this.fSnapConnection!.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);\n this.fSnapConnection!.redraw();\n } else {\n this.fSnapConnection?.hide();\n }\n }\n\n public getClosetInput(difference: IPoint): IConnectorWithRect | undefined {\n if (!this.fSnapConnection) {\n return undefined;\n }\n return this.fMediator.send<IConnectorWithRect | undefined>(\n new FindClosestInputUsingSnapThresholdRequest(\n Point.fromPoint(this.toConnectorRect).add(difference),\n this.canBeConnectedInputs,\n this.fSnapConnection!.fSnapThreshold\n )\n );\n }\n\n public complete(): void {\n this.fConnection.redraw();\n this.fConnection.hide();\n this.fSnapConnection?.hide();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionFinalizeRequest } from './create-connection-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../create-connection.drag-handler';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionFinalizeRequest)\nexport class CreateConnectionFinalizeValidator implements IValidator<CreateConnectionFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CreateConnectionFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CreateConnectionDragHandler\n );\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { FConnectorBase } from '../../../../../f-connectors';\n\nexport class CreateConnectionDragHandlerRequest {\n\n constructor(\n public onPointerDownPosition: IPoint,\n public connector: FConnectorBase\n ) {\n }\n}\n","import { ITransformModel, Point } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionDragHandlerRequest } from './create-connection-drag-handler.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../../create-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionDragHandlerRequest)\nexport class CreateConnectionDragHandlerExecution\n implements IHandler<CreateConnectionDragHandlerRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionDragHandlerRequest): void {\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n const positionRelativeToFlowComponent = Point.fromPoint(request.onPointerDownPosition)\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.onPointerDownPosition = positionRelativeToFlowComponent;\n\n const positionRelativeToCanvasComponent = Point.fromPoint(positionRelativeToFlowComponent).mult(this.transform.scale)\n .sub(this.transform.position).sub(this.transform.scaledPosition).div(this.transform.scale);\n\n this.fDraggableDataContext.draggableItems = [\n new CreateConnectionDragHandler(this.fMediator, this.fComponentsStore, request.connector, positionRelativeToCanvasComponent)\n ];\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFromOutletPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutletPreparationRequest } from './create-connection-from-outlet-preparation.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase } from '../../../../../f-connectors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../../get-can-be-connected-output-by-outlet';\nimport { RequiredOutput } from '../../../../../errors';\nimport { CreateConnectionDragHandlerRequest } from '../create-connection-drag-handler';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFromOutletPreparationRequest)\nexport class CreateConnectionFromOutletPreparationExecution\n implements IHandler<CreateConnectionFromOutletPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFromOutletPreparationRequest): void {\n const { event } = request;\n const node = this.fComponentsStore.findNode(event.targetElement)!;\n\n const outlet = this.fComponentsStore.fOutlets.find((x) => {\n return x.hostElement.contains(event.targetElement);\n });\n if (!outlet) {\n throw new Error('Outlet not found');\n }\n const nodeOutputs = this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n (outlet as FNodeOutletBase).setOutputs(nodeOutputs);\n\n if (outlet.canBeConnected) {\n\n if ((outlet as FNodeOutletBase).isConnectionFromOutlet) {\n\n this.createDragHandler(event.getPosition(), outlet);\n } else {\n const output = this.fMediator.send<FNodeOutputBase>(\n new GetCanBeConnectedOutputByOutletRequest(outlet as FNodeOutletBase)\n );\n if (!output) {\n throw RequiredOutput();\n }\n this.createDragHandler(event.getPosition(), output);\n }\n }\n }\n\n private createDragHandler(position: IPoint, output: FConnectorBase): void {\n this.fMediator.send(new CreateConnectionDragHandlerRequest(position, output));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFromOutputPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation.request';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { CreateConnectionDragHandlerRequest } from '../create-connection-drag-handler';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFromOutputPreparationRequest)\nexport class CreateConnectionFromOutputPreparationExecution\n implements IHandler<CreateConnectionFromOutputPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFromOutputPreparationRequest): void {\n const { event } = request;\n\n const output = this.fComponentsStore.fOutputs.find((x) => {\n return x.hostElement.contains(event.targetElement);\n });\n if (!output) {\n throw new Error('Output not found');\n }\n if (output.canBeConnected) {\n this.createDragHandler(event.getPosition(), output);\n }\n }\n\n private createDragHandler(position: IPoint, output: FConnectorBase): void {\n this.fMediator.send(new CreateConnectionDragHandlerRequest(position, output));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation.request';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FNodeBase } from '../../../../../f-node';\nimport { FConnectorBase, isNodeOutput } from '../../../../../f-connectors';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionFromOutputPreparationRequest)\nexport class CreateConnectionFromOutputPreparationValidator implements IValidator<CreateConnectionFromOutputPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: CreateConnectionFromOutputPreparationRequest): boolean {\n return this.isNodeOutput(request.event.targetElement, this.getNode(request.event));\n }\n\n private getNode(event: IPointerEvent): FNodeBase {\n return this.fComponentsStore.findNode(event.targetElement)!;\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n return isNodeOutput(targetElement) && !this.getOutlets(node).length;\n }\n\n private getOutlets(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, isNodeOutlet, isNodeOutput } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { CreateConnectionPreparationRequest } from './create-connection-preparation.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { CreateConnectionFromOutletPreparationRequest } from './create-connection-from-outlet-preparation';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionPreparationRequest)\nexport class CreateConnectionPreparationExecution\n implements IHandler<CreateConnectionPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionPreparationRequest): void {\n if (isNodeOutlet(request.event.targetElement)) {\n this.fMediator.send<void>(new CreateConnectionFromOutletPreparationRequest(request.event));\n } else if (this.isNodeOutput(request.event.targetElement, this.getNode(request.event))) {\n this.fMediator.send<void>(new CreateConnectionFromOutputPreparationRequest(request.event));\n }\n }\n\n private getNode(event: IPointerEvent): FNodeBase {\n return this.fComponentsStore.findNode(event.targetElement)!;\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n return isNodeOutput(targetElement) && !this.getOutlets(node).length;\n }\n\n private getOutlets(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionPreparationRequest } from './create-connection-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../f-node';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionPreparationRequest)\nexport class CreateConnectionPreparationValidator implements IValidator<CreateConnectionPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CreateConnectionPreparationRequest): boolean {\n return !!this.getNode(request.event) && this.isValidConditions();\n }\n\n private getNode(event: IPointerEvent): FNodeBase | undefined {\n return this.fComponentsStore.findNode(event.targetElement);\n }\n\n private isValidConditions(): boolean {\n return !this.fDraggableDataContext.draggableItems.length && !!this.fComponentsStore.fTempConnection;\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ReassignConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FReassignConnectionEvent {\n\n constructor(\n public fConnectionId: string,\n public fOutputId: string,\n public oldFInputId: string,\n public newFInputId: string | undefined,\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionFinalizeRequest } from './reassign-connection-finalize.request';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\nimport { FDraggableBase } from '../../../f-draggable-base';\nimport { FReassignConnectionEvent } from '../f-reassign-connection.event';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FConnectorBase } from '../../../../f-connectors';\nimport { GetInputUnderPointerRequest } from '../../get-input-under-pointer';\n\n@Injectable()\n@FExecutionRegister(ReassignConnectionFinalizeRequest)\nexport class ReassignConnectionFinalizeExecution implements IExecution<ReassignConnectionFinalizeRequest, void> {\n\n private get fDraggable(): FDraggableBase {\n return this.fComponentsStore.fDraggable!;\n }\n\n private get dragHandler(): ReassignConnectionDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as ReassignConnectionDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: ReassignConnectionFinalizeRequest): void {\n this.emitEvent(request.event);\n this.dragHandler.complete();\n }\n\n private emitEvent(event: IPointerEvent): void {\n const input = this.getInputUnderPointer(event);\n if (\n !!input && !this.isReassignToDifferentInput(input)\n ) {\n return;\n }\n this.fDraggable.fReassignConnection.emit(\n new FReassignConnectionEvent(\n this.dragHandler.fConnection.fId,\n this.dragHandler.fConnection.fOutputId,\n this.dragHandler.fConnection.fInputId,\n input?.id,\n event.getPosition()\n )\n );\n }\n\n private getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this.fMediator.send<FConnectorBase | undefined>(new GetInputUnderPointerRequest(event, this.dragHandler));\n }\n\n private isReassignToDifferentInput(inputsUnderPointer: FConnectorBase): boolean {\n return this.dragHandler.fConnection.fInputId !== inputsUnderPointer.id;\n }\n}\n","import { IDraggableItem } from '../../i-draggable-item';\nimport {\n FindClosestInputUsingSnapThresholdRequest,\n GetAllCanBeConnectedInputPositionsRequest,\n GetConnectionLineRequest, GetConnectorWithRectRequest,\n IConnectorWithRect\n} from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { ILine, IPoint, Point, RectExtensions, RoundedRect } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\nexport class ReassignConnectionDragHandler implements IDraggableItem {\n\n public toConnectorRect: RoundedRect = new RoundedRect();\n\n private get fSnapConnection(): FSnapConnectionComponent | undefined {\n return this.fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private fOutputWithRect!: IConnectorWithRect;\n private fInputWithRect!: IConnectorWithRect;\n\n private canBeConnectedInputs: IConnectorWithRect[] = [];\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n public fConnection: FConnectionBase,\n ) {\n }\n\n public initialize(): void {\n if (this.fSnapConnection) {\n this.fSnapConnection.fOutputId = this.fConnection.fOutputId;\n this.fSnapConnection.initialize();\n this.canBeConnectedInputs = this.fMediator.send<IConnectorWithRect[]>(\n new GetAllCanBeConnectedInputPositionsRequest(this.fConnection.fOutputId)\n );\n }\n\n this.fOutputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getOutput()));\n this.fInputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getInput()));\n this.toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.fConnection.line.point2.x, this.fConnection.line.point2.y)\n );\n }\n\n private getOutput(): FConnectorBase {\n return this.fComponentsStore.fOutputs.find((x) => x.id === this.fConnection.fOutputId)!;\n }\n\n private getInput(): FConnectorBase {\n return this.fComponentsStore.fInputs.find((x) => x.id === this.fConnection.fInputId)!\n }\n\n public move(difference: IPoint): void {\n this.drawConnection({\n fRect: this.toConnectorRect.addPoint(difference),\n fConnector: this.fInputWithRect.fConnector\n });\n if (this.fSnapConnection) {\n this.drawSnapConnection(this.getClosetInput(difference));\n }\n }\n\n private drawConnection(fInputWithRect: IConnectorWithRect): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputWithRect.fRect,\n this.fConnection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fInputWithRect.fConnector.fConnectableSide\n )\n );\n\n this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);\n this.fConnection.redraw();\n }\n\n private drawSnapConnection(fInputWithRect: IConnectorWithRect | undefined): void {\n if (fInputWithRect) {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputWithRect.fRect,\n this.fSnapConnection!.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fInputWithRect.fConnector.fConnectableSide\n )\n );\n this.fSnapConnection!.show();\n this.fSnapConnection!.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);\n this.fSnapConnection!.redraw();\n } else {\n this.fSnapConnection?.hide();\n }\n }\n\n public getClosetInput(difference: IPoint): IConnectorWithRect | undefined {\n if (!this.fSnapConnection) {\n return undefined;\n }\n return this.fMediator.send<IConnectorWithRect | undefined>(\n new FindClosestInputUsingSnapThresholdRequest(\n Point.fromPoint(this.toConnectorRect).add(difference),\n this.canBeConnectedInputs,\n this.fSnapConnection!.fSnapThreshold\n )\n );\n }\n\n public complete(): void {\n this.drawConnection(this.fInputWithRect);\n this.fSnapConnection?.hide();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionFinalizeRequest } from './reassign-connection-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\n\n@Injectable()\n@FValidatorRegister(ReassignConnectionFinalizeRequest)\nexport class ReassignConnectionFinalizeValidator implements IValidator<ReassignConnectionFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: ReassignConnectionFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ReassignConnectionDragHandler\n );\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ReassignConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint, PointExtensions } from '@foblex/2d';\nimport { CalculateCenterBetweenPointsRequest } from './calculate-center-between-points-request';\n\nexport class CalculateCenterBetweenPointsHandler\n implements IHandler<CalculateCenterBetweenPointsRequest, IPoint> {\n\n public handle(request: CalculateCenterBetweenPointsRequest): IPoint {\n const { source, target } = request;\n\n const offsetX = Math.abs(target.x - source.x) / 2;\n const centerX = (target.x < source.x) ? target.x + offsetX : target.x - offsetX;\n\n const offsetY = Math.abs(target.y - source.y) / 2;\n const centerY = (target.y < source.y) ? target.y + offsetY : target.y - offsetY;\n\n return PointExtensions.initialize(centerX, centerY);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class CalculateCenterBetweenPointsRequest {\n\n constructor(\n public source: IPoint,\n public target: IPoint,\n ) {\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { CalculateConnectionCenterRequest } from './calculate-connection-center-request';\n\nexport class CalculateConnectionCenterHandler\n implements IHandler<CalculateConnectionCenterRequest, IPoint> {\n\n public handle(request: CalculateConnectionCenterRequest): IPoint {\n\n const { points } = request;\n let totalDistance = 0;\n let distances: number[] = [];\n\n for (let i = 0; i < points.length - 1; i++) {\n const distance = this.calculateDistance(points[ i ], points[ i + 1 ]);\n distances.push(distance);\n totalDistance += distance;\n }\n\n let accumulatedDistance = 0;\n let centerIndex = 0;\n const halfTotalDistance = totalDistance / 2;\n for (let i = 0; i < distances.length; i++) {\n accumulatedDistance += distances[ i ];\n if (accumulatedDistance >= halfTotalDistance) {\n centerIndex = i;\n break;\n }\n }\n\n const remainingDistanceToCenter = halfTotalDistance - (accumulatedDistance - distances[ centerIndex ]);\n\n return this.findPointAtDistance(points[ centerIndex ], points[ centerIndex + 1 ], remainingDistanceToCenter);\n }\n\n private calculateDistance(pointA: IPoint, pointB: IPoint): number {\n return Math.sqrt(Math.pow(pointB.x - pointA.x, 2) + Math.pow(pointB.y - pointA.y, 2));\n }\n\n private findPointAtDistance(startPoint: IPoint, endPoint: IPoint, distance: number): IPoint {\n const totalDistance = this.calculateDistance(startPoint, endPoint);\n const ratio = distance / totalDistance;\n const x = (1 - ratio) * startPoint.x + ratio * endPoint.x;\n const y = (1 - ratio) * startPoint.y + ratio * endPoint.y;\n return { x, y };\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class CalculateConnectionCenterRequest {\n\n constructor(\n public points: IPoint[],\n ) {\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\n\nexport class FBezierPathBuilder implements IFConnectionBuilder {\n\n private static getConnectorOffset(distance: number, offset: number): number {\n if (distance >= offset) {\n return distance;\n }\n return offset * Math.sqrt(offset - distance);\n }\n\n private static getAnglePoint(side: EFConnectableSide, source: IPoint, target: IPoint, offset: number): IPoint {\n\n let result: IPoint = { x: source.x, y: source.y };\n\n switch (side) {\n case EFConnectableSide.LEFT:\n result.x -= FBezierPathBuilder.getConnectorOffset(source.x - target.x, offset);\n break;\n case EFConnectableSide.RIGHT:\n result.x += FBezierPathBuilder.getConnectorOffset(target.x - source.x, offset);\n break;\n case EFConnectableSide.TOP:\n result.y -= FBezierPathBuilder.getConnectorOffset(source.y - target.y, offset);\n break;\n case EFConnectableSide.BOTTOM:\n result.y += FBezierPathBuilder.getConnectorOffset(target.y - source.y, offset);\n break;\n }\n\n return result;\n }\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, sourceSide, target, targetSide, offset } = request;\n\n const sourceAnglePoint = FBezierPathBuilder.getAnglePoint(sourceSide, source, target, offset);\n\n const targetAnglePoint = FBezierPathBuilder.getAnglePoint(targetSide, target, source, offset);\n\n const path = `M ${ source.x } ${ source.y } C ${ sourceAnglePoint.x } ${ sourceAnglePoint.y }, ${ targetAnglePoint.x } ${ targetAnglePoint.y }, ${ target.x + 0.0002 } ${ target.y + 0.0002 }`;\n\n const connectionCenter = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest([ source, sourceAnglePoint, targetAnglePoint, target ])\n );\n\n return { path, connectionCenter, penultimatePoint: targetAnglePoint };\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/2d';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport {\n CalculateCenterBetweenPointsHandler,\n CalculateCenterBetweenPointsRequest\n} from './calculate-center-between-points';\nimport { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\nimport { IMap } from '../../../domain';\n\nconst CONNECTOR_SIDE_POINT: IMap<IPoint> = {\n\n [ EFConnectableSide.LEFT ]: PointExtensions.initialize(-1, 0),\n\n [ EFConnectableSide.RIGHT ]: PointExtensions.initialize(1, 0),\n\n [ EFConnectableSide.TOP ]: PointExtensions.initialize(0, -1),\n\n [ EFConnectableSide.BOTTOM ]: PointExtensions.initialize(0, 1),\n\n [ EFConnectableSide.AUTO ]: PointExtensions.initialize(0, 0),\n};\n\nexport class FSegmentPathBuilder implements IFConnectionBuilder {\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, sourceSide, target, targetSide } = request;\n\n const { points, center } = this.getPathPoints(\n source,\n sourceSide,\n target,\n targetSide,\n request.offset\n );\n\n const path = this.buildPath(points, request.radius);\n\n const penultimatePoint = points.length > 1 ? points[ points.length - 2 ] : source;\n\n return { path, connectionCenter: center, penultimatePoint };\n }\n\n private getPathPoints(\n source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide, offset: number\n ): { points: IPoint[], center: IPoint } {\n\n const sourceDirection = CONNECTOR_SIDE_POINT[ sourceSide ];\n const targetDirection = CONNECTOR_SIDE_POINT[ targetSide ];\n\n const sourceGap: IPoint = { x: source.x + sourceDirection.x * offset, y: source.y + sourceDirection.y * offset };\n const targetGap: IPoint = { x: target.x + targetDirection.x * offset, y: target.y + targetDirection.y * offset };\n\n const direction = this.getDirection(sourceGap, sourceSide, targetGap);\n const directionAccessor = direction.x !== 0 ? 'x' : 'y';\n const currentDirection = direction[ directionAccessor ];\n\n let points: IPoint[] = [];\n const sourceGapOffset = PointExtensions.initialize();\n const targetGapOffset = PointExtensions.initialize();\n\n const centerBetweenPoints = new CalculateCenterBetweenPointsHandler().handle(\n new CalculateCenterBetweenPointsRequest(source, target)\n );\n\n if (sourceDirection[ directionAccessor ] * targetDirection[ directionAccessor ] === -1) {\n const verticalSplit: IPoint[] = [\n { x: centerBetweenPoints.x, y: sourceGap.y },\n { x: centerBetweenPoints.x, y: targetGap.y },\n ];\n const horizontalSplit: IPoint[] = [\n { x: sourceGap.x, y: centerBetweenPoints.y },\n { x: targetGap.x, y: centerBetweenPoints.y },\n ];\n\n if (sourceDirection[ directionAccessor ] === currentDirection) {\n points = directionAccessor === 'x' ? verticalSplit : horizontalSplit;\n } else {\n points = directionAccessor === 'x' ? horizontalSplit : verticalSplit;\n }\n } else {\n const sourceTarget: IPoint[] = [ { x: sourceGap.x, y: targetGap.y } ];\n const targetSource: IPoint[] = [ { x: targetGap.x, y: sourceGap.y } ];\n\n if (directionAccessor === 'x') {\n points = sourceDirection.x === currentDirection ? targetSource : sourceTarget;\n } else {\n points = sourceDirection.y === currentDirection ? sourceTarget : targetSource;\n }\n\n if (sourceSide === targetSide) {\n const diff = Math.abs(source[ directionAccessor ] - target[ directionAccessor ]);\n\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDirection[ directionAccessor ] === currentDirection) {\n sourceGapOffset[ directionAccessor ] = (sourceGap[ directionAccessor ] > source[ directionAccessor ] ? -1 : 1) * gapOffset;\n } else {\n targetGapOffset[ directionAccessor ] = (targetGap[ directionAccessor ] > target[ directionAccessor ] ? -1 : 1) * gapOffset;\n }\n }\n }\n\n if (sourceSide !== targetSide) {\n const dirAccessorOpposite = directionAccessor === 'x' ? 'y' : 'x';\n const isSameDir = sourceDirection[ directionAccessor ] === targetDirection[ dirAccessorOpposite ];\n const sourceGtTargetOppo = sourceGap[ dirAccessorOpposite ] > targetGap[ dirAccessorOpposite ];\n const sourceLtTargetOppo = sourceGap[ dirAccessorOpposite ] < targetGap[ dirAccessorOpposite ];\n const flipSourceTarget =\n (sourceDirection[ directionAccessor ] === 1 &&\n ((!isSameDir && sourceGtTargetOppo) || (isSameDir && sourceLtTargetOppo))) ||\n (sourceDirection[ directionAccessor ] !== 1 &&\n ((!isSameDir && sourceLtTargetOppo) || (isSameDir && sourceGtTargetOppo)));\n\n if (flipSourceTarget) {\n points = directionAccessor === 'x' ? sourceTarget : targetSource;\n }\n }\n }\n\n const pathPoints = [\n source,\n { x: sourceGap.x + sourceGapOffset.x, y: sourceGap.y + sourceGapOffset.y },\n ...points,\n { x: targetGap.x + targetGapOffset.x, y: targetGap.y + targetGapOffset.y },\n target,\n ];\n\n const center = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest(pathPoints)\n );\n\n return { points: pathPoints, center: center };\n }\n\n private getDirection(source: IPoint, sourceSide: EFConnectableSide, target: IPoint): IPoint {\n if (sourceSide === EFConnectableSide.LEFT || sourceSide === EFConnectableSide.RIGHT) {\n return source.x < target.x ? PointExtensions.initialize(1, 0) : PointExtensions.initialize(-1, 0);\n }\n return source.y < target.y ? PointExtensions.initialize(0, 1) : PointExtensions.initialize(0, -1);\n }\n\n private distance(a: IPoint, b: IPoint): number {\n return Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));\n }\n\n private buildPath(points: IPoint[], borderRadius: number): string {\n let path = '';\n for (let i = 0; i < points.length; i++) {\n const p = points[ i ];\n let segment = '';\n\n if (i > 0 && i < points.length - 1) {\n segment = this.getBend(points[ i - 1 ], p, points[ i + 1 ], borderRadius);\n } else if (i === points.length - 1) {\n segment = this.buildLastLineSegment(i, p);\n } else {\n segment = this.buildMoveOrLineSegment(i, p);\n }\n path += segment;\n }\n\n return path;\n }\n\n private getBend(a: IPoint, b: IPoint, c: IPoint, size: number): string {\n const bendSize = Math.min(this.distance(a, b) / 2, this.distance(b, c) / 2, size);\n const { x, y } = b;\n\n if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {\n return `L${ x } ${ y }`;\n }\n\n if (a.y === y) {\n const xDir = a.x < c.x ? -1 : 1;\n const yDir = a.y < c.y ? 1 : -1;\n return `L ${ x + bendSize * xDir },${ y }Q ${ x },${ y } ${ x },${ y + bendSize * yDir }`;\n }\n\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${ x },${ y + bendSize * yDir }Q ${ x },${ y } ${ x + bendSize * xDir },${ y }`;\n }\n\n private buildMoveOrLineSegment(index: number, point: IPoint): string {\n return `${ index === 0 ? 'M' : 'L' }${ point.x } ${ point.y }`;\n }\n\n private buildLastLineSegment(index: number, point: IPoint): string {\n return `L${ point.x + 0.0002 } ${ point.y + 0.0002 }`;\n }\n}\n","import { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\n\nexport class FStraightPathBuilder implements IFConnectionBuilder {\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, target } = request;\n const path = `M ${ source.x } ${ source.y } L ${ target.x + 0.0002 } ${ target.y + 0.0002 }`;\n\n const connectionCenter = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest([source, target])\n );\n\n return { path, connectionCenter, penultimatePoint: source };\n }\n}\n","import { normalizeDomElementId } from '@foblex/utils';\n\nexport const F_CONNECTION_IDENTIFIERS = {\n\n textId(connectionId: string): string {\n return normalizeDomElementId('connection_text_' + connectionId);\n },\n connectionForSelectionId(connectionId: string): string {\n return normalizeDomElementId('connection_for_selection_' + connectionId);\n },\n connectionId(connectionId: string): string {\n return normalizeDomElementId('connection_' + connectionId);\n },\n gradientId(connectionId: string): string {\n return normalizeDomElementId('connection_gradient_' + connectionId);\n },\n linkToGradient(connectionId: string): string {\n return `url(#${ F_CONNECTION_IDENTIFIERS.gradientId(connectionId) })`;\n },\n linkToConnection(connectionId: string): string {\n return `#${ F_CONNECTION_IDENTIFIERS.connectionId(connectionId) }`;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const F_CONNECTION = new InjectionToken('F_CONNECTION');\n","import { Directive, ElementRef, Inject, OnInit } from '@angular/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { IHasConnectionText } from '../i-has-connection-text';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { BrowserService } from '@foblex/platform';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\n@Directive({\n selector: 'textPath[f-connection-text-path]',\n host: {\n '[attr.href]': 'linkToConnection'\n }\n})\nexport class FConnectionTextPathDirective implements IHasHostElement, OnInit {\n\n public get linkToConnection(): string {\n return F_CONNECTION_IDENTIFIERS.linkToConnection(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGTextPathElement {\n return this.elementReference.nativeElement;\n }\n\n public symbolWidth: number = 8;\n public fontSize: string = '12px';\n\n constructor(\n private elementReference: ElementRef<SVGTextPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionText & IHasConnectionFromTo,\n private fBrowser: BrowserService\n ) {\n }\n\n public ngOnInit(): void {\n this.hostElement.setAttribute('startOffset', '50%');\n this.hostElement.setAttribute('text-anchor', `middle`);\n this.symbolWidth = this.getSymbolWidth(this.base.fText || '');\n }\n\n public getBBox(): DOMRect {\n return this.hostElement.getBBox();\n }\n\n private getFontStyles(element: SVGTextPathElement): { fontSize: string, fontFamily: string } {\n const computedStyles = this.fBrowser.window.getComputedStyle(element);\n return {\n fontSize: computedStyles.fontSize,\n fontFamily: computedStyles.fontFamily\n };\n }\n\n private getSymbolWidth(name: string): number {\n const text = name || 'connection';\n const { fontFamily, fontSize } = this.getFontStyles(this.hostElement);\n this.fontSize = fontSize;\n const canvas = this.fBrowser.document.createElement('canvas');\n let context;\n\n try {\n context = canvas.getContext('2d');\n } catch (e) {\n context = null;\n }\n if (!context) {\n return 0;\n }\n\n context.font = `${ fontSize } ${ fontFamily }`;\n\n const metrics = context.measureText(text);\n const symbolWidth = metrics.width / text.length;\n return symbolWidth;\n }\n}\n\n","import { ILine } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_TEXT = new InjectionToken<IConnectionText>('CONNECTION_TEXT');\n\nexport interface IConnectionText extends IHasHostElement {\n\n redraw(line: ILine): void;\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject, ViewChild\n} from \"@angular/core\";\nimport { ILine, PointExtensions } from '@foblex/2d';\nimport { FConnectionTextPathDirective } from './f-connection-text-path.directive';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionText } from '../i-has-connection-text';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_TEXT, IConnectionText } from './i-connection-text';\n\n@Component({\n selector: \"text[f-connection-text]\",\n templateUrl: \"./f-connection-text.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-text\",\n '[attr.id]': 'textId',\n },\n providers: [ { provide: CONNECTION_TEXT, useExisting: FConnectionTextComponent } ],\n})\nexport class FConnectionTextComponent implements IConnectionText {\n\n public get textId(): string {\n return F_CONNECTION_IDENTIFIERS.textId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGTextElement {\n return this.elementReference.nativeElement;\n }\n\n public get text(): string {\n return this.base.fText || '';\n }\n\n @ViewChild(FConnectionTextPathDirective, { static: true })\n public textPathDirective!: FConnectionTextPathDirective;\n\n constructor(\n private elementReference: ElementRef<SVGTextElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionText & IHasConnectionFromTo,\n ) {\n }\n\n public redraw(line: ILine): void {\n\n const isTextReverse: boolean = FConnectionTextComponent.isTextReverse(line);\n const dyValue = this.calculateDy(this.textPathDirective.fontSize, isTextReverse);\n\n this.hostElement.setAttribute('dy', dyValue);\n\n const textRect = this.textPathDirective.getBBox();\n const textRectCenter = [ textRect.x + textRect.width / 2, textRect.y + textRect.height / 2 ];\n this.hostElement.setAttribute('transform', isTextReverse ? `rotate(180, ${ textRectCenter })` : '');\n const startOffset = FConnectionTextComponent.getTextStartOffset(line, this.base.fText || '', this.textPathDirective.symbolWidth);\n if (startOffset < 0) {\n\n this.hostElement.style.display = 'none';\n } else {\n\n this.hostElement.style.display = 'unset';\n }\n }\n\n private calculateDy(fontSize: string, isTextReverse: boolean): string {\n const fontSizeNumber = parseFloat(fontSize);\n\n const dyValue = isTextReverse ? fontSizeNumber * 1.5 : fontSizeNumber * -0.8;\n\n return dyValue.toString();\n }\n\n private static isTextReverse(line: ILine): boolean {\n return line.point1.x > line.point2.x;\n }\n\n private static getTextStartOffset(line: ILine, name: string, symbolWidth: number): number {\n const vectorLength: number = PointExtensions.hypotenuse(line.point1, line.point2);\n return vectorLength / 2 - ((name || '').length * symbolWidth) / 2;\n }\n}\n\n","<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","import {\n ChangeDetectionStrategy,\n Component, ElementRef\n} from \"@angular/core\";\nimport { IPoint } from '@foblex/2d';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const F_CONNECTION_DRAG_HANDLE_CLASS = 'f-connection-drag-handle';\n\n@Component({\n selector: \"circle[f-connection-drag-handle]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'class'\n }\n})\nexport class FConnectionDragHandleComponent implements IHasHostElement {\n\n public readonly class: string = F_CONNECTION_DRAG_HANDLE_CLASS;\n\n public get hostElement(): SVGCircleElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGCircleElement>\n ) {\n }\n\n public redraw(penultimatePoint: IPoint, endPoint: IPoint): void {\n const point = this.calculateCircleCenter(penultimatePoint, endPoint, 8);\n this.hostElement.setAttribute('cx', point.x.toString());\n this.hostElement.setAttribute('cy', point.y.toString());\n }\n\n private calculateCircleCenter(start: IPoint, end: IPoint, radius: number): IPoint {\n const direction = { x: end.x - start.x, y: end.y - start.y };\n const length = Math.sqrt(direction.x * direction.x + direction.y * direction.y) || 1;\n const unitDirection = { x: direction.x / length, y: direction.y / length };\n const scaledDirection = { x: unitDirection.x * radius, y: unitDirection.y * radius };\n return { x: end.x - scaledDirection.x, y: end.y - scaledDirection.y };\n }\n}\n\n","import { ILine } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_GRADIENT = new InjectionToken<IConnectionGradient>('CONNECTION_GRADIENT');\n\nexport interface IConnectionGradient extends IHasHostElement {\n\n initialize(): void;\n\n redraw(line: ILine): void;\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject } from \"@angular/core\";\nimport { ILine, Point } from '@foblex/2d';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { IHasConnectionColor } from '../i-has-connection-color';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_GRADIENT, IConnectionGradient } from './i-connection-gradient';\n\n@Component({\n selector: \"linearGradient[fConnectionGradient]\",\n templateUrl: \"./f-connection-gradient.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-gradient\",\n '[attr.id]': 'gradientId'\n },\n providers: [ { provide: CONNECTION_GRADIENT, useExisting: FConnectionGradientComponent } ],\n})\nexport class FConnectionGradientComponent implements IConnectionGradient {\n\n public get gradientId(): string {\n return F_CONNECTION_IDENTIFIERS.gradientId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGLinearGradientElement {\n return this.elementReference.nativeElement;\n }\n\n public get stop1Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(0) as SVGStopElement;\n }\n\n public get stop2Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(1) as SVGStopElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGLinearGradientElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionColor & IHasConnectionFromTo,\n ) {\n }\n\n public initialize(): void {\n this.stop1Element.setAttribute('offset', '0%');\n this.stop2Element.setAttribute('offset', '100%');\n }\n\n private updateGradient(): void {\n this.setFromColor(this.base.fStartColor);\n this.setToColor(this.base.fEndColor);\n }\n\n private setFromColor(color: string | undefined): void {\n this.stop1Element.setAttribute('stop-color', color || 'transparent');\n }\n\n private setToColor(color: string | undefined): void {\n this.stop2Element.setAttribute('stop-color', color || 'transparent');\n }\n\n public redraw(line: ILine): void {\n const x: number = line.point2.x - line.point1.x;\n const y: number = line.point2.y - line.point1.y;\n const distance: number = Math.sqrt(x * x + y * y) || 0.01;\n\n const from = new Point(0.5 - (0.5 * x) / distance, 0.5 - (0.5 * y) / distance);\n\n this.hostElement.setAttribute('x1', from.x.toString());\n this.hostElement.setAttribute('y1', from.y.toString());\n\n const to = new Point(0.5 + (0.5 * x) / distance, 0.5 + (0.5 * y) / distance);\n this.hostElement.setAttribute('x2', to.x.toString());\n this.hostElement.setAttribute('y2', to.y.toString());\n this.updateGradient();\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:stop/>\n <svg:stop/>\n</ng-container>\n","import { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_PATH = new InjectionToken<IConnectionPath>('CONNECTION_PATH');\n\nexport interface IConnectionPath extends IHasHostElement {\n\n initialize(): void;\n\n setPath(path: string): void;\n\n select(): void;\n\n deselect(): void;\n}\n","import { normalizeDomElementId } from '@foblex/utils';\n\nexport function getMarkerStartId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerEndId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-marker-end-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedStartId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-selected-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedEndId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-selected-marker-end-${ fConnectionId }`);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject } from \"@angular/core\";\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionColor } from '../i-has-connection-color';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_PATH, IConnectionPath } from './i-connection-path';\nimport {\n getMarkerEndId,\n getMarkerSelectedEndId,\n getMarkerSelectedStartId,\n getMarkerStartId,\n} from './get-path-marker-id';\n\n@Component({\n selector: \"path[f-connection-path]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-path\",\n '[attr.id]': 'attrConnectionId',\n '[attr.data-f-path-id]': 'fPathId',\n '[attr.stroke]': 'linkToGradient',\n },\n providers: [ { provide: CONNECTION_PATH, useExisting: FConnectionPathComponent } ],\n})\nexport class FConnectionPathComponent implements IConnectionPath {\n\n public get fPathId(): string {\n return this.base.fId;\n }\n\n public get linkToGradient(): string {\n return F_CONNECTION_IDENTIFIERS.linkToGradient(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get attrConnectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionColor & IHasConnectionFromTo\n ) {\n }\n\n public initialize(): void {\n this.deselect();\n }\n\n public setPath(path: string): void {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n\n public select(): void {\n this.hostElement.setAttribute('marker-start', `url(#${ getMarkerSelectedStartId(this.base.fId) })`);\n this.hostElement.setAttribute('marker-end', `url(#${ getMarkerSelectedEndId(this.base.fId) })`);\n }\n\n public deselect(): void {\n this.hostElement.setAttribute('marker-start', `url(#${ getMarkerStartId(this.base.fId) })`);\n this.hostElement.setAttribute('marker-end', `url(#${ getMarkerEndId(this.base.fId) })`);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject\n} from \"@angular/core\";\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\n@Component({\n selector: \"path[fConnectionSelection]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-selection\",\n '[attr.id]': 'connectionForSelectionId',\n },\n})\nexport class FConnectionSelectionComponent implements IHasHostElement {\n\n public get connectionForSelectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionForSelectionId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionFromTo,\n ) {\n }\n\n public setPath(path: string) {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n}\n\n","import { InjectionToken } from '@angular/core';\nimport { IFConnectionBuilder } from './i-f-connection-builder';\n\nexport const F_CONNECTION_BUILDERS = new InjectionToken<IFConnectionBuilders>('F_CONNECTION_BUILDERS');\n\nexport interface IFConnectionBuilders {\n [key: string]: IFConnectionBuilder;\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { IFConnectionBuilder } from './i-f-connection-builder';\nimport { EFConnectionType, FBezierPathBuilder, FSegmentPathBuilder, FStraightPathBuilder } from '../common';\nimport { F_CONNECTION_BUILDERS, IFConnectionBuilders } from './f-connection-builders';\nimport { IFConnectionFactoryRequest } from './i-f-connection-factory-request';\nimport { IFConnectionBuilderResponse } from './i-f-connection-builder-response';\nimport { IMap } from '../../domain';\n\n@Injectable()\nexport class FConnectionFactory {\n\n private readonly builders: IMap<IFConnectionBuilder> = {\n\n [ EFConnectionType.STRAIGHT ]: new FStraightPathBuilder(),\n\n [ EFConnectionType.BEZIER ]: new FBezierPathBuilder(),\n\n [ EFConnectionType.SEGMENT ]: new FSegmentPathBuilder(),\n }\n\n constructor(\n @Optional() @Inject(F_CONNECTION_BUILDERS) builders: IFConnectionBuilders\n ) {\n if (builders) {\n this.builders = { ...this.builders, ...builders };\n }\n }\n\n public handle(request: IFConnectionFactoryRequest): IFConnectionBuilderResponse {\n const builder = this.builders[ request.type ];\n if (!builder) {\n throw new Error(`FConnectionBuilder not found for type ${ request.type }`);\n }\n\n return builder.handle(request.payload);\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { ILine, IPoint, LineExtensions, PointExtensions } from '@foblex/2d';\nimport { Subject } from 'rxjs';\nimport { EFConnectionBehavior } from './e-f-connection-behavior';\nimport { EFConnectionType } from './e-f-connection-type';\nimport { IHasConnectionColor } from './i-has-connection-color';\nimport { IHasConnectionFromTo } from './i-has-connection-from-to';\nimport { IHasConnectionText } from './i-has-connection-text';\nimport { IConnectionPath } from './f-path';\nimport { IConnectionGradient } from './f-gradient';\nimport { FConnectionDragHandleComponent } from './f-drag-handle';\nimport { FConnectionSelectionComponent } from './f-selection';\nimport { IConnectionText } from './f-connection-text';\nimport { IHasStateChanges } from '../../i-has-state-changes';\nimport { FMarkerBase } from '../f-marker';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport {\n ICanChangeSelection, ICanChangeVisibility,\n mixinChangeSelection, mixinChangeVisibility\n} from '../../mixins';\n\nconst MIXIN_BASE = mixinChangeSelection(\n mixinChangeVisibility(\n class {\n constructor(\n public hostElement: HTMLElement\n ) {\n }\n }));\n\n@Directive()\nexport abstract class FConnectionBase extends MIXIN_BASE\n implements IHasHostElement, ICanChangeSelection,\n ICanChangeVisibility,\n IHasStateChanges, IHasConnectionColor,\n IHasConnectionFromTo, IHasConnectionText {\n\n public abstract override fId: string;\n\n public abstract fStartColor: string;\n\n public abstract fEndColor: string;\n\n public abstract fOutputId: string;\n\n public abstract fInputId: string;\n\n public abstract fRadius: number;\n\n public abstract fOffset: number;\n\n public path: string = '';\n\n public line: ILine = LineExtensions.initialize();\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract fDraggingDisabled: boolean;\n\n public abstract override fSelectionDisabled: boolean;\n\n public abstract boundingElement: HTMLElement | SVGElement;\n\n public abstract fBehavior: EFConnectionBehavior;\n\n public abstract fType: EFConnectionType;\n\n public abstract fDefs: ElementRef<SVGDefsElement>;\n\n public abstract fPath: IConnectionPath;\n\n public abstract fGradient: IConnectionGradient;\n\n public abstract fDragHandle: FConnectionDragHandleComponent;\n\n public abstract fSelection: FConnectionSelectionComponent;\n\n public abstract fTextComponent: IConnectionText;\n\n public abstract fText: string;\n\n public abstract fConnectionCenter: ElementRef<HTMLDivElement>;\n\n private penultimatePoint: IPoint = PointExtensions.initialize();\n\n protected constructor(\n elementReference: ElementRef<HTMLElement>,\n private cFactory: FConnectionFactory\n ) {\n super(elementReference.nativeElement);\n }\n\n public initialize(): void {\n this.fPath.initialize();\n this.fGradient.initialize();\n this.redraw();\n }\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return (this.hostElement.firstChild?.lastChild as HTMLElement).contains(element);\n }\n\n public setLine(source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide): void {\n this.line = LineExtensions.initialize(source, target);\n const pathResult = this.getPathResult(source, sourceSide, target, targetSide);\n this.path = pathResult.path;\n this.penultimatePoint = pathResult.penultimatePoint || source;\n this.fConnectionCenter?.nativeElement?.setAttribute('style', this.getTransform(pathResult.connectionCenter));\n }\n\n private getPathResult(source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide): any {\n const radius = this.fRadius > 0 ? this.fRadius : 0;\n const offset = this.fOffset > 0 ? this.fOffset : 1;\n return this.cFactory.handle(\n {\n type: this.fType,\n payload: { source, sourceSide, target, targetSide, radius, offset }\n }\n );\n }\n\n private getTransform(position: IPoint): string {\n return `position: absolute; pointerEvents: all; transform: translate(-50%, -50%); left: ${ position.x }px; top: ${ position.y }px`;\n }\n\n public override selectChild(): void {\n this.fPath.select();\n }\n\n public override deselectChild(): void {\n this.fPath.deselect();\n }\n\n public redraw(): void {\n this.fPath.setPath(this.path);\n this.fSelection.setPath(this.path);\n this.fGradient.redraw(this.line);\n this.fDragHandle.redraw(this.penultimatePoint, this.line.point2);\n this.fTextComponent.redraw(this.line);\n }\n}\n","export enum EFConnectionBehavior {\n\n FIXED = 'fixed',\n\n FIXED_CENTER = 'fixed_center',\n\n FLOATING = 'floating',\n}\n","export enum EFConnectionType {\n\n SEGMENT = 'segment',\n\n STRAIGHT = 'straight',\n\n BEZIER = 'bezier',\n}\n","import {\n Directive\n} from \"@angular/core\";\n\n@Directive({\n selector: \"[fConnectionCenter]\"\n})\nexport class FConnectionCenterDirective {\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ContentChildren, ElementRef, Input, OnDestroy, OnInit, QueryList, ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { FComponentsStore } from '../../f-storage';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection-for-create\",\n templateUrl: \"./f-connection-for-create.component.html\",\n styleUrls: [ \"./f-connection-for-create.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-connection-for-create\"\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionForCreateComponent } ],\n})\nexport class FConnectionForCreateComponent\n extends FConnectionBase implements AfterViewInit, OnInit, OnDestroy {\n\n public override fId: string = `f-connection-for-create-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n private _fRadius: number = 8;\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override set fBehavior(value: EFConnectionBehavior | string) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fType(): EFConnectionType {\n return this._type;\n }\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fTempConnection = this;\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.fTempConnection = undefined;\n }\n}\n","<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\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component, ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n OnInit, QueryList,\n ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH,\n CONNECTION_TEXT,\n FConnectionDragHandleComponent,\n FConnectionSelectionComponent,\n IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FComponentsStore } from '../../f-storage';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddConnectionToStoreRequest, RemoveConnectionFromStoreRequest } from '../../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection\",\n exportAs: 'fComponent',\n templateUrl: \"./f-connection.component.html\",\n styleUrls: [ \"./f-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'fId',\n class: \"f-component f-connection\",\n '[class.f-connection-selection-disabled]': 'fSelectionDisabled',\n '[class.f-connection-reassign-disabled]': 'fDraggingDisabled',\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionComponent } ],\n})\nexport class FConnectionComponent\n extends FConnectionBase implements OnInit, OnDestroy {\n\n @Input('fConnectionId')\n public override fId: string = `f-connection-${ uniqueId++ }`;\n\n private _fText: string = '';\n @Input()\n public override set fText(value: string) {\n this._fText = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fText(): string {\n return this._fText;\n }\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n private _fOutputId!: string;\n @Input()\n public override set fOutputId(value: string) {\n this._fOutputId = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOutputId(): string {\n return this._fOutputId;\n }\n\n private _fInputId!: string;\n @Input()\n public override set fInputId(value: string) {\n this._fInputId = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fInputId(): string {\n return this._fInputId;\n }\n\n private _fRadius: number = 8;\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n @Input()\n public override set fBehavior(value: string | EFConnectionBehavior) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = value as unknown as EFConnectionType; //castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fType(): EFConnectionType {\n return this._type;\n }\n\n @Input('fReassignDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input()\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fMediator.send(new AddConnectionToStoreRequest(this));\n }\n\n public ngOnDestroy(): void {\n this.fMediator.send(new RemoveConnectionFromStoreRequest(this));\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"overflow: visible; display: block; vertical-align: middle;\">\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 <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n","export enum EFMarkerType {\n\n START = 'f-connection-marker-start',\n\n END = 'f-connection-marker-end',\n\n SELECTED_START = 'f-connection-selected-marker-start',\n\n SELECTED_END = 'f-connection-selected-marker-end',\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../i-has-host-element';\n\nexport const F_MARKER = new InjectionToken('F_MARKER');\n\n@Directive()\nexport abstract class FMarkerBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract width: number;\n\n public abstract height: number;\n\n public abstract refX: number;\n\n public abstract refY: number;\n\n public abstract type: string;\n\n public abstract orient: 'auto' | 'auto-start-reverse' | string;\n\n public abstract markerUnits: 'strokeWidth' | 'userSpaceOnUse';\n}\n","import {\n Directive, ElementRef, Input, OnDestroy, OnInit\n} from \"@angular/core\";\nimport { F_MARKER, FMarkerBase } from './f-marker-base';\nimport { EFMarkerType } from './e-f-marker-type';\nimport { FComponentsStore } from '../../f-storage';\n\n@Directive({\n selector: \"svg[fMarker]\",\n host: {\n class: \"f-component f-marker\"\n },\n providers: [ { provide: F_MARKER, useExisting: FMarkerDirective } ],\n})\nexport class FMarkerDirective extends FMarkerBase implements OnInit, OnDestroy {\n\n @Input()\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override width: number = 0;\n\n @Input()\n public override height: number = 0;\n\n @Input()\n public override refX: number = 0;\n\n @Input()\n public override refY: number = 0;\n\n @Input()\n public override type: string = EFMarkerType.START;\n\n @Input()\n public override orient: 'auto' | 'auto-start-reverse' | 'calculated' | string = 'auto';\n\n @Input()\n public override markerUnits: 'strokeWidth' | 'userSpaceOnUse' = 'strokeWidth';\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private elementReference: ElementRef<HTMLElement>,\n ) {\n super();\n this.hostElement.style.display = 'none';\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.addComponent(this.fComponentsStore.fMarkers, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fMarkers, this);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ContentChildren, ElementRef, Input, OnDestroy, OnInit, QueryList, ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { FComponentsStore } from '../../f-storage';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-snap-connection\",\n templateUrl: \"./f-snap-connection.component.html\",\n styleUrls: [ \"./f-snap-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-snap-connection\"\n },\n providers: [ { provide: F_CONNECTION, useExisting: FSnapConnectionComponent } ],\n})\nexport class FSnapConnectionComponent\n extends FConnectionBase implements AfterViewInit, OnInit, OnDestroy {\n\n public override fId: string = `f-snap-connection-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n @Input()\n public fSnapThreshold: number = 20;\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n private _fRadius: number = 8;\n\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override set fBehavior(value: EFConnectionBehavior | string) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fType(): EFConnectionType {\n return this._type;\n }\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fSnapConnection = this;\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.fSnapConnection = undefined;\n }\n}\n","<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\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n","import {\n FConnectionDragHandleComponent,\n FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent,\n FConnectionTextComponent,\n FConnectionTextPathDirective\n} from './common';\nimport { FConnectionComponent } from './f-connection';\nimport { FConnectionCenterDirective } from './f-connection-center';\nimport { FConnectionForCreateComponent } from './f-connection-for-create';\nimport { FMarkerDirective } from './f-marker';\nimport { FSnapConnectionComponent } from './f-snap-connection';\n\nexport const F_CONNECTION_PROVIDERS = [\n\n FConnectionTextComponent,\n FConnectionTextPathDirective,\n FConnectionDragHandleComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent,\n FConnectionSelectionComponent,\n\n FConnectionComponent,\n FConnectionCenterDirective,\n FConnectionForCreateComponent,\n FMarkerDirective,\n FSnapConnectionComponent\n];\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionPreparationRequest } from './reassign-connection-preparation.request';\nimport { IPoint, ITransformModel, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { UpdateItemAndChildrenLayersRequest } from '../../../../domain';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS, FConnectionBase } from '../../../../f-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ReassignConnectionPreparationRequest)\nexport class ReassignConnectionPreparationExecution implements IExecution<ReassignConnectionPreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ReassignConnectionPreparationRequest): void {\n const connectionToReassign = this.getConnectionHandler(\n this.getDragHandleElement(request.event.getPosition())\n )!;\n if (connectionToReassign.fDraggingDisabled) {\n return;\n }\n\n this.fMediator.send<void>(\n new UpdateItemAndChildrenLayersRequest(\n connectionToReassign, this.fComponentsStore.fCanvas!.fConnectionsContainer.nativeElement\n )\n );\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n\n this.fDraggableDataContext.draggableItems = [\n new ReassignConnectionDragHandler(this.fMediator, this.fComponentsStore, connectionToReassign)\n ];\n }\n\n private getDragHandleElement(position: IPoint): HTMLElement {\n return this.getElementsFromPoint(position).filter((x) => {\n return !!this.getConnectionHandler(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\n }).find((x) => !!x)!;\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n public getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fConnections.find(c => c.isContains(element));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionPreparationRequest } from './reassign-connection-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS, FConnectionBase } from '../../../../f-connection';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IPoint } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FValidatorRegister(ReassignConnectionPreparationRequest)\nexport class ReassignConnectionPreparationValidator implements IValidator<ReassignConnectionPreparationRequest> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ReassignConnectionPreparationRequest): boolean {\n return !!this.getDragHandleElements(request.event.getPosition()).length\n && !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getDragHandleElements(position: IPoint): HTMLElement[] {\n return this.getElementsFromPoint(position).filter((x) => {\n return !!this.getConnectionHandler(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\n });\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n public getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fConnections.find(c => c.isContains(element));\n }\n}\n","import {\n CreateConnectionDragHandlerExecution,\n CreateConnectionFinalizeExecution,\n CreateConnectionFinalizeValidator,\n CreateConnectionFromOutletPreparationExecution,\n CreateConnectionFromOutputPreparationExecution,\n CreateConnectionFromOutputPreparationValidator,\n CreateConnectionPreparationExecution,\n CreateConnectionPreparationValidator,\n GetCanBeConnectedOutputByOutletExecution,\n GetCanBeConnectedOutputByOutletValidator\n} from './create-connection';\nimport {\n ReassignConnectionFinalizeExecution,\n ReassignConnectionFinalizeValidator,\n ReassignConnectionPreparationExecution, ReassignConnectionPreparationValidator,\n} from './reassign-connection';\nimport { GetInputUnderPointerExecution, GetInputUnderPointerValidator } from './get-input-under-pointer';\n\nexport const CONNECTIONS_PROVIDERS = [\n\n GetInputUnderPointerExecution,\n\n GetInputUnderPointerValidator,\n\n CreateConnectionFinalizeExecution,\n\n CreateConnectionFinalizeValidator,\n\n CreateConnectionDragHandlerExecution,\n\n CreateConnectionFromOutletPreparationExecution,\n\n GetCanBeConnectedOutputByOutletExecution,\n\n GetCanBeConnectedOutputByOutletValidator,\n\n CreateConnectionFromOutputPreparationExecution,\n\n CreateConnectionFromOutputPreparationValidator,\n\n CreateConnectionPreparationExecution,\n\n CreateConnectionPreparationValidator,\n\n ReassignConnectionFinalizeExecution,\n\n ReassignConnectionFinalizeValidator,\n\n ReassignConnectionPreparationExecution,\n\n ReassignConnectionPreparationValidator,\n];\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNodePaddingRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodePaddingRequest } from './get-node-padding.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(GetNodePaddingRequest)\nexport class GetNodePaddingExecution\n implements IExecution<GetNodePaddingRequest, [ number, number, number, number ]> {\n\n constructor(\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: GetNodePaddingRequest): [ number, number, number, number ] {\n return request.fNode.fIncludePadding ? this.getPaddingData(request.fNode, request.rect) : [ 0, 0, 0, 0 ];\n }\n\n private getPaddingData(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n const style = this.fBrowser.window.getComputedStyle(node.hostElement);\n return [\n this.fBrowser.toPixels(style.paddingLeft, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingTop, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingRight, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingBottom, rect.width, rect.height, style.fontSize)\n ];\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedNodeRectRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedNodeRectRequest } from './get-normalized-node-rect.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedNodeRectRequest)\nexport class GetNormalizedNodeRectExecution\n implements IExecution<GetNormalizedNodeRectRequest, IRect> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetNormalizedNodeRectRequest): IRect {\n return this.normalizeRect(RectExtensions.fromElement(request.fNode.hostElement), request.fNode.position);\n }\n\n private normalizeRect(scaledRect: IRect, position: IPoint): IRect {\n const rect = RectExtensions.div(scaledRect, this.fComponentsStore.fCanvas!.transform.scale);\n\n return RectExtensions.initialize(position.x, position.y, rect.width, rect.height);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedParentNodeRectRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedParentNodeRectRequest } from './get-normalized-parent-node-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { GetNormalizedNodeRectRequest } from '../get-normalized-node-rect';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { GetNodePaddingRequest } from '../get-node-padding';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedParentNodeRectRequest)\nexport class GetNormalizedParentNodeRectExecution\n implements IExecution<GetNormalizedParentNodeRectRequest, IRect> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNormalizedParentNodeRectRequest): IRect {\n let result = RectExtensions.initialize(-Infinity, -Infinity, Infinity, Infinity);\n const parentNode = this.getNode(request.fNode.fParentId);\n if (parentNode) {\n result = this.getParentRect(parentNode);\n }\n return result;\n }\n\n private getNode(fId?: string | null): FNodeBase | undefined {\n return this.fComponentsStore.fNodes.find((x) => x.fId === fId);\n }\n\n private getParentRect(node: FNodeBase): IRect {\n const rect = this.getNormalizedNodeRect(node);\n const padding = this.getNodePadding(node, rect);\n return RectExtensions.initialize(\n rect.x + padding[0],\n rect.y + padding[1],\n rect.width - padding[0] - padding[2],\n rect.height - padding[1] - padding[3]\n );\n }\n\n private getNormalizedNodeRect(node: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(node));\n }\n\n private getNodePadding(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this.fMediator.send<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetParentNodesRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetParentNodesRequest } from './get-parent-nodes.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetParentNodesRequest)\nexport class GetParentNodesExecution\n implements IExecution<GetParentNodesRequest, FNodeBase[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetParentNodesRequest): FNodeBase[] {\n return this.getParentNodes(request.fNode, new Set<string>(), []);\n }\n\n private getParentNodes(fNode: FNodeBase, visited: Set<string>, result: FNodeBase[]): FNodeBase[] {\n if (visited.has(fNode.fId)) {\n throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fNode.fId);\n }\n visited.add(fNode.fId);\n\n const parent = this.fComponentsStore.fNodes.find((x) => x.fId === fNode.fParentId);\n if (!parent) {\n return result;\n }\n\n result.push(parent);\n return this.getParentNodes(parent, visited, result);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class IsArrayHasParentNodeRequest {\n\n constructor(\n public fNode: FNodeBase,\n public fNodes: FNodeBase[]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IsArrayHasParentNodeRequest } from './is-array-has-parent-node.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { GetParentNodesRequest } from '../get-parent-nodes';\n\n@Injectable()\n@FExecutionRegister(IsArrayHasParentNodeRequest)\nexport class IsArrayHasParentNodeExecution\n implements IExecution<IsArrayHasParentNodeRequest, boolean> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: IsArrayHasParentNodeRequest): boolean {\n return this.isParentNodeInArray(this.getParentNodeIds(request.fNode), request.fNodes);\n }\n\n private getParentNodeIds(fNode: FNodeBase): string[] {\n return this.getParentNodes(fNode).map((x) => x.fId);\n }\n\n private getParentNodes(fNode: FNodeBase): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetParentNodesRequest(fNode));\n }\n\n private isParentNodeInArray(parentNodeIds: string[], fNodes: FNodeBase[]): boolean {\n return fNodes.some((x) => parentNodeIds.includes(x.fId));\n }\n}\n\n\n","import { GetNormalizedNodeRectExecution } from './get-normalized-node-rect';\nimport { GetParentNodesExecution } from './get-parent-nodes';\nimport { IsArrayHasParentNodeExecution } from './is-array-has-parent-node';\nimport { GetNormalizedParentNodeRectExecution } from './get-normalized-parent-node-rect';\nimport { GetNodePaddingExecution } from './get-node-padding';\n\nexport const DRAG_AND_DROP_COMMON_PROVIDERS = [\n\n GetNodePaddingExecution,\n\n GetNormalizedNodeRectExecution,\n\n GetNormalizedParentNodeRectExecution,\n\n GetParentNodesExecution,\n\n IsArrayHasParentNodeExecution\n];\n","import { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\n\nexport class PutInputConnectionHandlersToArrayRequest {\n\n constructor(\n public nodeDragHandler: NodeDragHandler,\n public outputIds: string[],\n public result: IDraggableItem[]\n ) {\n }\n}\n","import { IDraggableItem } from '../i-draggable-item';\nimport { FConnectionBase } from '../../f-connection';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { Directive } from '@angular/core';\nimport { INodeMoveRestrictions } from './create-move-nodes-drag-model-from-selection';\nimport { ILine, IPoint } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetConnectorWithRectRequest, IConnectorWithRect } from '../../domain';\n\n@Directive()\nexport abstract class ConnectionBaseDragHandler implements IDraggableItem {\n\n protected fOutputWithRect!: IConnectorWithRect;\n protected fInputWithRect!: IConnectorWithRect;\n\n protected constructor(\n protected fMediator: FMediator,\n protected fComponentsStore: FComponentsStore,\n public connection: FConnectionBase,\n ) {\n }\n\n public initialize(): void {\n this.fOutputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getOutput()));\n this.fInputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getInput()));\n }\n\n private getOutput(): FConnectorBase {\n return this.fComponentsStore.fOutputs.find((x) => x.id === this.connection.fOutputId)!;\n }\n\n private getInput(): FConnectorBase {\n return this.fComponentsStore.fInputs.find((x) => x.id === this.connection.fInputId)!\n }\n\n public abstract move(difference: IPoint): void;\n\n protected getDifference(difference: IPoint, restrictions: INodeMoveRestrictions): IPoint {\n return {\n x: Math.min(Math.max(difference.x, restrictions.min.x), restrictions.max.x),\n y: Math.min(Math.max(difference.y, restrictions.min.y), restrictions.max.y)\n }\n }\n\n protected redrawConnection(line: ILine): void {\n this.connection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, this.fInputWithRect.fConnector.fConnectableSide);\n this.connection.redraw();\n }\n}\n","import { ILine, IPoint, RoundedRect } from '@foblex/2d';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport {\n GetConnectionLineRequest,\n} from '../../domain';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { INodeMoveRestrictions } from './create-move-nodes-drag-model-from-selection';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionDragHandler extends ConnectionBaseDragHandler {\n\n private sourceRestrictions!: INodeMoveRestrictions;\n private targetRestrictions!: INodeMoveRestrictions;\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public setOutputRestrictions(min: IPoint, max: IPoint) {\n this.sourceRestrictions = { min, max };\n }\n\n public setInputRestrictions(min: IPoint, max: IPoint) {\n this.targetRestrictions = { min, max };\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n RoundedRect.fromRoundedRect(this.fOutputWithRect.fRect).addPoint(this.getDifference({ ...difference }, this.sourceRestrictions)),\n RoundedRect.fromRoundedRect(this.fInputWithRect.fRect).addPoint(this.getDifference({ ...difference }, this.targetRestrictions)),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { ILine, IPoint, RoundedRect } from '@foblex/2d';\nimport {\n GetConnectionLineRequest,\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionTargetDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n public minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n RoundedRect.fromRoundedRect(this.fOutputWithRect.fRect),\n RoundedRect.fromRoundedRect(this.fInputWithRect.fRect).addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PutInputConnectionHandlersToArrayRequest } from './put-input-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\nimport { ConnectionDragHandler } from '../../../connection.drag-handler';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { FConnectionBase } from '../../../../../f-connection';\nimport { ConnectionTargetDragHandler } from '../../../connection-target.drag-handler';\n\n@Injectable()\n@FExecutionRegister(PutInputConnectionHandlersToArrayRequest)\nexport class PutInputConnectionHandlersToArrayExecution\n implements IExecution<PutInputConnectionHandlersToArrayRequest, void> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: PutInputConnectionHandlersToArrayRequest): void {\n this.getInputConnections(request.nodeDragHandler.fNode).forEach((connection) => {\n const index = this.getExistingConnectionHandlerIndex(request.result, connection);\n if (index !== -1) {\n this.updateExistingConnectionHandler(request.result, index, request.nodeDragHandler);\n } else {\n request.result.push(this.createNewConnectionHandler(request.nodeDragHandler, request.outputIds, connection));\n }\n });\n }\n\n public getInputConnections(node: FNodeBase): FConnectionBase[] {\n const inputIds = new Set(this.getInputsForNode(node).map((x) => x.id));\n return this.fConnections.filter((x) => inputIds.has(x.fInputId));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getExistingConnectionHandlerIndex(result: IDraggableItem[], connection: FConnectionBase): number {\n return result.findIndex(\n (x) => x instanceof ConnectionDragHandler && x.connection.fId === connection.fId\n );\n }\n\n private createNewConnectionHandler(nodeDragHandler: NodeDragHandler, outputIds: string[], connection: FConnectionBase): IDraggableItem {\n let result: IDraggableItem;\n if (outputIds.includes(connection.fOutputId)) {\n result = this.getNewConnectionHandler(connection, nodeDragHandler);\n } else {\n result = this.getNewSourceConnectionHandler(connection, nodeDragHandler);\n }\n return result;\n }\n\n private getNewConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionDragHandler {\n const handler = new ConnectionDragHandler(this.fMediator, this.fComponentsStore, connection);\n handler.setInputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n return handler;\n }\n\n private updateExistingConnectionHandler(result: IDraggableItem[], index: number, nodeDragHandler: NodeDragHandler): void {\n (result[ index ] as ConnectionDragHandler).setInputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n\n private getNewSourceConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionTargetDragHandler {\n return new ConnectionTargetDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n}\n\n","import { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\n\nexport class PutOutputConnectionHandlersToArrayRequest {\n\n constructor(\n public nodeDragHandler: NodeDragHandler,\n public inputIds: string[],\n public result: IDraggableItem[]\n ) {\n }\n}\n","import { ILine, IPoint, RoundedRect } from '@foblex/2d';\nimport {\n GetConnectionLineRequest\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionSourceDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n public minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n RoundedRect.fromRoundedRect(this.fOutputWithRect.fRect).addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n RoundedRect.fromRoundedRect(this.fInputWithRect.fRect),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PutOutputConnectionHandlersToArrayRequest } from './put-output-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\nimport { ConnectionDragHandler } from '../../../connection.drag-handler';\nimport { ConnectionSourceDragHandler } from '../../../connection-source.drag-handler';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { FConnectionBase } from '../../../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(PutOutputConnectionHandlersToArrayRequest)\nexport class PutOutputConnectionHandlersToArrayExecution\n implements IExecution<PutOutputConnectionHandlersToArrayRequest, void> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: PutOutputConnectionHandlersToArrayRequest): void {\n this.getOutputConnections(request.nodeDragHandler.fNode).forEach((connection) => {\n const index = this.getExistingConnectionHandlerIndex(request.result, connection);\n if (index !== -1) {\n this.updateExistingConnectionHandler(request.result, index, request.nodeDragHandler);\n } else {\n request.result.push(this.createNewConnectionHandler(request.nodeDragHandler, request.inputIds, connection));\n }\n });\n }\n\n public getOutputConnections(node: FNodeBase): FConnectionBase[] {\n const outputsIds = new Set(this.getOutputsForNode(node).map((x) => x.id));\n return this.fConnections.filter((x) => outputsIds.has(x.fOutputId));\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getExistingConnectionHandlerIndex(result: IDraggableItem[], connection: FConnectionBase): number {\n return result.findIndex(\n (x) => x instanceof ConnectionDragHandler && x.connection.fId === connection.fId\n );\n }\n\n private createNewConnectionHandler(nodeDragHandler: NodeDragHandler, inputIds: string[], connection: FConnectionBase): IDraggableItem {\n let result: IDraggableItem;\n if (inputIds.includes(connection.fInputId)) {\n result = this.getNewConnectionHandler(connection, nodeDragHandler);\n } else {\n result = this.getNewSourceConnectionHandler(connection, nodeDragHandler);\n }\n return result;\n }\n\n private getNewConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionDragHandler {\n const handler = new ConnectionDragHandler(this.fMediator, this.fComponentsStore, connection);\n handler.setOutputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n return handler;\n }\n\n private updateExistingConnectionHandler(result: IDraggableItem[], index: number, nodeDragHandler: NodeDragHandler): void {\n (result[ index ] as ConnectionDragHandler).setOutputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n\n private getNewSourceConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionSourceDragHandler {\n return new ConnectionSourceDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n}\n\n","import { FNodeBase } from '../../../../../f-node';\n\nexport class GetNodeMoveRestrictionsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public hasParentNodeInSelected: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodeMoveRestrictionsRequest } from './get-node-move-restrictions.request';\nimport { IRect, PointExtensions } from '@foblex/2d';\nimport { INodeMoveRestrictions } from './i-node-move-restrictions';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNormalizedNodeRectRequest, GetNormalizedParentNodeRectRequest } from '../../../../domain';\nimport { FNodeBase } from '../../../../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetNodeMoveRestrictionsRequest)\nexport class GetNodeMoveRestrictionsExecution\n implements IExecution<GetNodeMoveRestrictionsRequest, INodeMoveRestrictions> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNodeMoveRestrictionsRequest): INodeMoveRestrictions {\n if (request.fNode.fParentId && !request.hasParentNodeInSelected) {\n const fParentNodeRect = this.getParentNodeRect(request.fNode);\n const fCurrentNodeRect = this.getCurrentNodeRect(request.fNode);\n return {\n min: PointExtensions.initialize(fParentNodeRect.x - fCurrentNodeRect.x, fParentNodeRect.y - fCurrentNodeRect.y),\n max: PointExtensions.initialize(\n (fParentNodeRect.x + fParentNodeRect.width) - (fCurrentNodeRect.x + fCurrentNodeRect.width),\n (fParentNodeRect.y + fParentNodeRect.height) - (fCurrentNodeRect.y + fCurrentNodeRect.height),\n )\n };\n }\n return { ...DEFAULT_RESTRICTIONS };\n }\n\n private getCurrentNodeRect(fNode: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(fNode));\n }\n\n private getParentNodeRect(fNode: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedParentNodeRectRequest(fNode));\n }\n}\n\nconst DEFAULT_RESTRICTIONS: INodeMoveRestrictions = {\n min: PointExtensions.initialize(-Infinity, -Infinity),\n max: PointExtensions.initialize(Infinity, Infinity)\n};\n","export class CreateMoveNodesDragModelFromSelectionRequest {\n\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { FNodeBase } from '../../f-node';\nimport {\n INodeMoveRestrictions\n} from './create-move-nodes-drag-model-from-selection';\n\nexport class NodeDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n public fNode: FNodeBase,\n public minDistance: IPoint,\n public maxDistance: IPoint,\n ) {\n this.onPointerDownPosition = { ...fNode.position };\n }\n\n public move(difference: IPoint): void {\n const restrictedDifference = this.getDifference(difference, { min: this.minDistance, max: this.maxDistance });\n\n this.redrawNode(this.getNewPosition(restrictedDifference));\n this.fDraggableDataContext.fLineAlignment?.handle(restrictedDifference);\n }\n\n private getNewPosition(difference: IPoint): IPoint {\n return Point.fromPoint(this.onPointerDownPosition).add(difference);\n }\n\n private getDifference(difference: IPoint, restrictions: INodeMoveRestrictions): IPoint {\n return {\n x: Math.min(Math.max(difference.x, restrictions.min.x), restrictions.max.x),\n y: Math.min(Math.max(difference.y, restrictions.min.y), restrictions.max.y)\n }\n }\n\n private redrawNode(position: IPoint): void {\n this.fNode.updatePosition(position);\n this.fNode.redraw();\n }\n\n public complete(): void {\n this.fNode.positionChange.emit(this.fNode.position);\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n//TODO: Implement this class\nexport class NodeResizeByChildDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n\n }\n\n\n public move(difference: IPoint): void {\n\n }\n\n public complete(): void {\n\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from './create-move-nodes-drag-model-from-selection.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { NodeDragHandler } from '../node.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { INodeWithDistanceRestrictions } from './i-node-with-distance-restrictions';\nimport { GetNodeMoveRestrictionsRequest, INodeMoveRestrictions } from './domain/get-node-move-restrictions';\nimport { PutOutputConnectionHandlersToArrayRequest } from './domain/put-output-connection-handlers-to-array';\nimport {\n PutInputConnectionHandlersToArrayRequest\n} from './domain/put-input-connection-handlers-to-array';\nimport { NodeResizeByChildDragHandler } from '../node-resize-by-child.drag-handler';\nimport { GetParentNodesRequest, IsArrayHasParentNodeRequest } from '../../domain';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../../domain';\nimport { flatMap } from '@foblex/utils';\n\n@Injectable()\n@FExecutionRegister(CreateMoveNodesDragModelFromSelectionRequest)\nexport class CreateMoveNodesDragModelFromSelectionExecution\n implements IExecution<CreateMoveNodesDragModelFromSelectionRequest, IDraggableItem[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: CreateMoveNodesDragModelFromSelectionRequest): IDraggableItem[] {\n const itemsToDrag = this.getNodesWithRestrictions(this.getSelectedNodes());\n return this.getDragHandlersWithConnections(\n this.getDragHandlersFromNodes(itemsToDrag),\n this.getAllOutputIds(itemsToDrag),\n this.getAllInputIds(itemsToDrag)\n );\n }\n\n private getSelectedNodes(): FNodeBase[] {\n return this.fDraggableDataContext.selectedItems\n .map((x) => this.fComponentsStore.findNode(x.hostElement))\n .filter((x): x is FNodeBase => !!x);\n }\n\n private getNodesWithRestrictions(selectedNodes: FNodeBase[]): INodeWithDistanceRestrictions[] {\n const result: INodeWithDistanceRestrictions[] = [];\n\n selectedNodes.forEach((x) => {\n const hasParentNodeInSelected = this.fMediator.send<boolean>(new IsArrayHasParentNodeRequest(x, selectedNodes));\n const restrictions = this.fMediator.send<INodeMoveRestrictions>(new GetNodeMoveRestrictionsRequest(x, hasParentNodeInSelected));\n const parentNodes = this.fMediator.send<FNodeBase[]>(new GetParentNodesRequest(x));\n result.push({ node: x, parentNodes, ...restrictions }, ...this.getChildrenItemsToDrag(x, restrictions));\n });\n\n return result;\n }\n\n private getChildrenItemsToDrag(node: FNodeBase, restrictions: INodeMoveRestrictions): INodeWithDistanceRestrictions[] {\n return this.getChildrenNodes(node.fId).map((x) => ({ node: x, ...restrictions }));\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private getAllOutputIds(items: INodeWithDistanceRestrictions[]): string[] {\n return flatMap(items, (item: INodeWithDistanceRestrictions) => this.getOutputsForNode(item.node).map((x) => x.id));\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getAllInputIds(items: INodeWithDistanceRestrictions[]): string[] {\n return flatMap(items, (item: INodeWithDistanceRestrictions) => this.getInputsForNode(item.node).map((x) => x.id));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getDragHandlersFromNodes(items: INodeWithDistanceRestrictions[]): IDraggableItem[] {\n let result: IDraggableItem[] = [];\n\n items.forEach((node) => {\n result.push(\n new NodeDragHandler(this.fDraggableDataContext, node.node, node.min, node.max),\n ...(node.parentNodes || []).map((parent) => new NodeResizeByChildDragHandler(this.fDraggableDataContext))\n );\n });\n return result;\n }\n\n private getDragHandlersWithConnections(\n handlers: IDraggableItem[], outputIds: string[], inputIds: string[]\n ): IDraggableItem[] {\n let result: IDraggableItem[] = handlers;\n handlers.filter((x) => x instanceof NodeDragHandler).forEach((dragHandler) => {\n this.fMediator.send(new PutOutputConnectionHandlersToArrayRequest(dragHandler as NodeDragHandler, inputIds, result));\n this.fMediator.send(new PutInputConnectionHandlersToArrayRequest(dragHandler as NodeDragHandler, outputIds, result));\n });\n return result;\n }\n}\n","import { CreateMoveNodesDragModelFromSelectionExecution } from './create-move-nodes-drag-model-from-selection.execution';\nimport { GetNodeMoveRestrictionsExecution } from './domain/get-node-move-restrictions';\nimport { PutInputConnectionHandlersToArrayExecution } from './domain/put-input-connection-handlers-to-array';\nimport { PutOutputConnectionHandlersToArrayExecution } from './domain/put-output-connection-handlers-to-array';\n\nexport const CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS = [\n\n GetNodeMoveRestrictionsExecution,\n\n PutInputConnectionHandlersToArrayExecution,\n\n PutOutputConnectionHandlersToArrayExecution,\n\n CreateMoveNodesDragModelFromSelectionExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMovePreparationRequest } from './node-move-preparation.request';\nimport { ITransformModel, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { NodeDragHandler } from '../node.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from '../create-move-nodes-drag-model-from-selection';\nimport { SelectAndUpdateNodeLayerRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(NodeMovePreparationRequest)\nexport class NodeMovePreparationExecution implements IExecution<NodeMovePreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: NodeMovePreparationRequest): void {\n this.selectAndUpdateNodeLayer(request.event.targetElement);\n\n const itemsToDrag: IDraggableItem[] = this.createDragModelFromSelection();\n\n this.initializeLineAlignment(this.filterNodesFromDraggableItems(itemsToDrag));\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.draggableItems = itemsToDrag;\n }\n\n private selectAndUpdateNodeLayer(targetElement: HTMLElement) {\n this.fMediator.send(\n new SelectAndUpdateNodeLayerRequest(this.getNode(targetElement))\n );\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase {\n return this.fComponentsStore.findNode(targetElement)!;\n }\n\n private createDragModelFromSelection(): IDraggableItem[] {\n return this.fMediator.send(new CreateMoveNodesDragModelFromSelectionRequest());\n }\n\n private initializeLineAlignment(nodesToDrag: FNodeBase[]): void {\n this.fDraggableDataContext.fLineAlignment?.initialize(\n this.fComponentsStore.fNodes,\n nodesToDrag\n );\n }\n\n private filterNodesFromDraggableItems(items: IDraggableItem[]): FNodeBase[] {\n return items.filter((x) => x instanceof NodeDragHandler).map(x => (x as NodeDragHandler).fNode);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMovePreparationRequest } from './node-move-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\nimport { isClosestElementHasClass } from '@foblex/utils';\n\n@Injectable()\n@FValidatorRegister(NodeMovePreparationRequest)\nexport class NodeMovePreparationValidator implements IValidator<NodeMovePreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeMovePreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isDragHandleElement(request.event.targetElement)\n && this.isNodeCanBeDragged(this.getNode(request.event.targetElement));\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n return this.fComponentsStore.findNode(targetElement);\n }\n\n private isNodeCanBeDragged(node: FNodeBase | undefined): boolean {\n return !!node && !node.fDraggingDisabled;\n }\n\n private isDragHandleElement(targetElement: HTMLElement): boolean {\n return isClosestElementHasClass(targetElement, '.f-drag-handle');\n }\n}\n","import { NodeMovePreparationExecution } from './node-move-preparation.execution';\nimport { NodeMovePreparationValidator } from './node-move-preparation.validator';\n\nexport const NODE_MOVE_PREPARATION_PROVIDERS = [\n\n NodeMovePreparationExecution,\n\n NodeMovePreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export class IsConnectionUnderNodeRequest {\n\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMoveFinalizeRequest } from './node-move-finalize.request';\nimport { IPoint, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n IsConnectionUnderNodeRequest\n} from '../../../domain/is-connection-under-node/is-connection-under-node.request';\n\n@Injectable()\n@FExecutionRegister(NodeMoveFinalizeRequest)\nexport class NodeMoveFinalizeExecution implements IExecution<NodeMoveFinalizeRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: NodeMoveFinalizeRequest): void {\n const difference = this.getDifferenceWithLineAlignment(\n this.getDifferenceBetweenPreparationAndFinalize(request.event.getPosition())\n );\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.move({ ...difference });\n x.complete?.();\n });\n this.fMediator.send(new IsConnectionUnderNodeRequest());\n this.fDraggableDataContext.fLineAlignment?.complete();\n }\n\n private getDifferenceBetweenPreparationAndFinalize(position: IPoint): Point {\n return Point.fromPoint(position).elementTransform(this.flowHost)\n .div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n }\n\n private getDifferenceWithLineAlignment(difference: IPoint): IPoint {\n const intersection = this.fDraggableDataContext.fLineAlignment?.findNearestCoordinate(difference);\n if (intersection) {\n difference.x = intersection.xResult.value ? (difference.x - intersection.xResult.distance!) : difference.x;\n difference.y = intersection.yResult.value ? (difference.y - intersection.yResult.distance!) : difference.y;\n }\n return difference;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMoveFinalizeRequest } from './node-move-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeDragHandler } from '../node.drag-handler';\n\n@Injectable()\n@FValidatorRegister(NodeMoveFinalizeRequest)\nexport class NodeMoveFinalizeValidator implements IValidator<NodeMoveFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeMoveFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) => x instanceof NodeDragHandler);\n }\n}\n","import { NodeMoveFinalizeExecution } from './node-move-finalize.execution';\nimport { NodeMoveFinalizeValidator } from './node-move-finalize.validator';\n\nexport const NODE_MOVE_FINALIZE_PROVIDERS = [\n\n NodeMoveFinalizeExecution,\n\n NodeMoveFinalizeValidator,\n];\n","import { CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS } from './create-move-nodes-drag-model-from-selection';\nimport { NODE_MOVE_FINALIZE_PROVIDERS } from './node-move-finalize';\nimport { NODE_MOVE_PREPARATION_PROVIDERS } from './node-move-preparation';\n\nexport const NODE_PROVIDERS = [\n\n ...CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS,\n\n ...NODE_MOVE_FINALIZE_PROVIDERS,\n\n ...NODE_MOVE_PREPARATION_PROVIDERS,\n];\n","import { IRect } from '@foblex/2d';\n\nexport class ApplyChildResizeRestrictionsRequest {\n\n constructor(\n public rect: IRect,\n public restrictionsRect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplyChildResizeRestrictionsRequest } from './apply-child-resize-restrictions.request';\nimport { IRect } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\nconst OFFSET = 0;\n\n@Injectable()\n@FExecutionRegister(ApplyChildResizeRestrictionsRequest)\nexport class ApplyChildResizeRestrictionsExecution\n implements IExecution<ApplyChildResizeRestrictionsRequest, void> {\n\n public handle(request: ApplyChildResizeRestrictionsRequest): void {\n this.applyRestrictions(request.rect, request.restrictionsRect);\n }\n\n private applyRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.left(rect, restrictionsRect);\n this.top(rect, restrictionsRect);\n this.right(rect, restrictionsRect);\n this.bottom(rect, restrictionsRect);\n }\n\n private left(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x > restrictionsRect.x - OFFSET) {\n rect.width += rect.x - restrictionsRect.x - OFFSET;\n rect.x = restrictionsRect.x - OFFSET;\n }\n }\n\n private top(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y > restrictionsRect.y - OFFSET) {\n rect.height += rect.y - restrictionsRect.y - OFFSET;\n rect.y = restrictionsRect.y - OFFSET;\n }\n }\n\n private right(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x + rect.width <= restrictionsRect.x + restrictionsRect.width + OFFSET) {\n rect.width = restrictionsRect.x + restrictionsRect.width - rect.x + OFFSET;\n }\n }\n\n private bottom(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y + rect.height <= restrictionsRect.y + restrictionsRect.height + OFFSET) {\n rect.height = restrictionsRect.y + restrictionsRect.height - rect.y + OFFSET;\n }\n }\n}\n","import { IRect } from '@foblex/2d';\n\nexport class ApplyParentResizeRestrictionsRequest {\n\n constructor(\n public rect: IRect,\n public restrictionsRect: IRect,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplyParentResizeRestrictionsRequest } from './apply-parent-resize-restrictions.request';\nimport { IRect } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\nconst OFFSET = 0;\n\n@Injectable()\n@FExecutionRegister(ApplyParentResizeRestrictionsRequest)\nexport class ApplyParentResizeRestrictionsExecution\n implements IExecution<ApplyParentResizeRestrictionsRequest, void> {\n\n public handle(request: ApplyParentResizeRestrictionsRequest): void {\n this.applyRestrictions(request.rect, request.restrictionsRect);\n }\n\n private applyRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.left(rect, restrictionsRect);\n this.top(rect, restrictionsRect);\n this.right(rect, restrictionsRect);\n this.bottom(rect, restrictionsRect);\n }\n\n private left(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x <= restrictionsRect.x + OFFSET) {\n rect.width -= restrictionsRect.x - rect.x + OFFSET;\n rect.x = restrictionsRect.x + OFFSET;\n }\n }\n\n private top(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y <= restrictionsRect.y + OFFSET) {\n rect.height -= restrictionsRect.y - rect.y + OFFSET;\n rect.y = restrictionsRect.y + OFFSET;\n }\n }\n\n private right(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x + rect.width > restrictionsRect.x + restrictionsRect.width - OFFSET) {\n rect.width = restrictionsRect.x + restrictionsRect.width - rect.x - OFFSET;\n }\n }\n\n private bottom(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y + rect.height > restrictionsRect.y + restrictionsRect.height - OFFSET) {\n rect.height = restrictionsRect.y + restrictionsRect.height - rect.y - OFFSET;\n }\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { EFResizeHandleType } from '../../../f-node';\n\nexport class CalculateChangedPositionRequest {\n\n constructor(\n public originalRect: IRect,\n public changedRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { EFResizeHandleType } from '../../f-node';\n\nexport const RESIZE_DIRECTIONS = {\n\n [ EFResizeHandleType.LEFT_TOP ]: { x: -1, y: -1 },\n\n [ EFResizeHandleType.RIGHT_TOP ]: { x: 1, y: -1 },\n\n [ EFResizeHandleType.RIGHT_BOTTOM ]: { x: 1, y: 1 },\n\n [ EFResizeHandleType.LEFT_BOTTOM ]: { x: -1, y: 1 },\n};\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedPositionRequest } from './calculate-changed-position.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedPositionRequest)\nexport class CalculateChangedPositionExecution\n implements IExecution<CalculateChangedPositionRequest, IRect> {\n\n public handle(request: CalculateChangedPositionRequest): IRect {\n return this.change(request.originalRect, request.difference, RESIZE_DIRECTIONS[request.fResizeHandleType], request.changedRect);\n }\n\n private change(originalRect: IRect, difference: IPoint, direction: IPoint, changedRect: IRect): IRect {\n return RectExtensions.initialize(\n originalRect.x + (direction.x === -1 ? difference.x : 0) + changedRect.x,\n originalRect.y + (direction.y === -1 ? difference.y : 0) + changedRect.y,\n changedRect.width,\n changedRect.height\n );\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { EFResizeHandleType } from '../../../f-node';\n\nexport class CalculateChangedSizeRequest {\n\n constructor(\n public originalRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedSizeRequest)\nexport class CalculateChangedSizeExecution\n implements IExecution<CalculateChangedSizeRequest, IRect> {\n\n public handle(request: CalculateChangedSizeRequest): IRect {\n return this.change(\n request.originalRect,\n request.difference,\n RESIZE_DIRECTIONS[request.fResizeHandleType],\n );\n }\n\n private change(rect: IRect, difference: IPoint, direction: IPoint): IRect {\n const result = RectExtensions.initialize(\n 0, 0,\n rect.width + direction.x * difference.x,\n rect.height + direction.y * difference.y\n );\n\n\n if (result.width < 0) {\n result.x = result.width;\n result.width = Math.abs(result.width);\n }\n\n if (result.height < 0) {\n result.y = result.height;\n result.height = Math.abs(result.height);\n }\n\n return RectExtensions.copy(result);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedChildrenNodesRectRequest {\n\n constructor(\n public fNode: FNodeBase,\n public paddings: [ number, number, number, number ]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedChildrenNodesRectRequest } from './get-normalized-children-nodes-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { GetNormalizedNodeRectRequest } from '../../domain';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedChildrenNodesRectRequest)\nexport class GetNormalizedChildrenNodesRectExecution\n implements IExecution<GetNormalizedChildrenNodesRectRequest, IRect | null> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNormalizedChildrenNodesRectRequest): IRect | null {\n const childNodeRect = RectExtensions.union(\n this.getChildrenNodes(request.fNode.fId).map((x) => this.normalizeRect(x))\n );\n return childNodeRect ?\n this.concatRectWithParentPadding(childNodeRect, request.paddings) : null;\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private normalizeRect(node: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(node));\n }\n\n private concatRectWithParentPadding(rect: IRect, padding: [ number, number, number, number ]): IRect {\n return RectExtensions.initialize(\n rect.x - padding[0],\n rect.y - padding[1],\n rect.width + padding[0] + padding[2],\n rect.height + + padding[1] + padding[3]\n );\n }\n}\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNodeResizeRestrictionsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodeResizeRestrictionsRequest } from './get-node-resize-restrictions.request';\nimport { IRect, SizeExtensions } from '@foblex/2d';\nimport { INodeResizeRestrictions } from './i-node-resize-restrictions';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNodePaddingRequest, GetNormalizedParentNodeRectRequest } from '../../domain';\nimport { GetNormalizedChildrenNodesRectRequest } from '../get-normalized-children-nodes-rect';\nimport { FNodeBase } from '../../../f-node';\n\n\n@Injectable()\n@FExecutionRegister(GetNodeResizeRestrictionsRequest)\nexport class GetNodeResizeRestrictionsExecution\n implements IExecution<GetNodeResizeRestrictionsRequest, INodeResizeRestrictions> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNodeResizeRestrictionsRequest): INodeResizeRestrictions {\n const fNodePaddings = this.getNodePaddings(request.fNode, request.rect);\n const childRect = this.fMediator.send<IRect | null>(new GetNormalizedChildrenNodesRectRequest(request.fNode, fNodePaddings));\n const parentRect = this.fMediator.send<IRect>(new GetNormalizedParentNodeRectRequest(request.fNode));\n\n return {\n parentRect,\n childRect,\n minSize: SizeExtensions.initialize(fNodePaddings[0] + fNodePaddings[2], fNodePaddings[1] + fNodePaddings[3])\n }\n }\n\n private getNodePaddings(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this.fMediator.send<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeResizeFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizeFinalizeRequest } from './node-resize-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\n\n@Injectable()\n@FExecutionRegister(NodeResizeFinalizeRequest)\nexport class NodeResizeFinalizeExecution implements IExecution<NodeResizeFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: NodeResizeFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","import { IPoint, IRect, ISize, RectExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../f-node';\nimport { FMediator } from '@foblex/mediator';\nimport { GetNormalizedNodeRectRequest } from '../domain';\nimport { GetNodeResizeRestrictionsRequest, INodeResizeRestrictions } from './get-node-resize-restrictions';\nimport { ApplyChildResizeRestrictionsRequest } from './apply-child-resize-restrictions';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size';\nimport { CalculateChangedPositionRequest } from './calculate-changed-position';\nimport { ApplyParentResizeRestrictionsRequest } from './apply-parent-resize-restrictions';\n\nexport class NodeResizeDragHandler implements IDraggableItem {\n\n private originalRect!: IRect;\n\n private restrictions!: INodeResizeRestrictions;\n\n private childRestrictions: (rect: IRect, restrictionsRect: IRect) => void = () => {\n };\n\n constructor(\n private fMediator: FMediator,\n public fNode: FNodeBase,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n\n public initialize(): void {\n this.originalRect = this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(this.fNode));\n\n this.restrictions = this.fMediator.send<INodeResizeRestrictions>(new GetNodeResizeRestrictionsRequest(this.fNode, this.originalRect));\n if (this.restrictions.childRect) {\n this.childRestrictions = (rect: IRect, restrictionsRect: IRect) => {\n this.applyChildRestrictions(rect, restrictionsRect);\n };\n }\n }\n\n public move(difference: IPoint): void {\n const changedRect = this.changePosition(difference, this.changeSize(difference, this.restrictions.minSize));\n\n this.childRestrictions(changedRect, this.restrictions.childRect!);\n this.applyParentRestrictions(changedRect, this.restrictions.parentRect);\n\n this.fNode.updatePosition(changedRect);\n this.fNode.updateSize(changedRect);\n this.fNode.redraw();\n }\n\n private changeSize(difference: IPoint, minSize: ISize): IRect {\n return this.fMediator.send<IRect>(\n new CalculateChangedSizeRequest(this.originalRect, difference, this.fResizeHandleType)\n );\n }\n\n private changePosition(difference: IPoint, changedRect: IRect): IRect {\n return this.fMediator.send<IRect>(\n new CalculateChangedPositionRequest(this.originalRect, changedRect, difference, this.fResizeHandleType)\n );\n }\n\n private applyChildRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.fMediator.send(\n new ApplyChildResizeRestrictionsRequest(rect, restrictionsRect)\n );\n }\n\n private applyParentRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.fMediator.send(\n new ApplyParentResizeRestrictionsRequest(rect, restrictionsRect)\n );\n }\n\n public complete(): void {\n this.fNode.sizeChange.emit(\n RectExtensions.initialize(\n this.fNode.position.x, this.fNode.position.y, this.fNode.size?.width, this.fNode.size?.height\n )\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizeFinalizeRequest } from './node-resize-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\n\n@Injectable()\n@FValidatorRegister(NodeResizeFinalizeRequest)\nexport class NodeResizeFinalizeValidator implements IValidator<NodeResizeFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeResizeFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) =>\n x instanceof NodeResizeDragHandler\n );\n }\n}\n","import { NodeResizeFinalizeExecution } from './node-resize-finalize.execution';\nimport { NodeResizeFinalizeValidator } from './node-resize-finalize.validator';\n\nexport const NODE_RESIZE_FINALIZE_PROVIDERS = [\n\n NodeResizeFinalizeExecution,\n\n NodeResizeFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeResizePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizePreparationRequest } from './node-resize-preparation.request';\nimport { ITransformModel, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n SelectAndUpdateNodeLayerRequest,\n} from '../../../domain';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../../f-node';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\nimport { getDataAttrValueFromClosestElementWithClass } from '@foblex/utils';\n\n@Injectable()\n@FExecutionRegister(NodeResizePreparationRequest)\nexport class NodeResizePreparationExecution implements IExecution<NodeResizePreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: NodeResizePreparationRequest): void {\n this.selectAndUpdateNodeLayer(request.event.targetElement);\n\n const handleType = getDataAttrValueFromClosestElementWithClass(request.event.targetElement, 'fResizeHandleType', '.f-resize-handle');\n const itemsToDrag: IDraggableItem[] = [\n new NodeResizeDragHandler(\n this.fMediator,\n this.getNode(request.event.targetElement),\n EFResizeHandleType[ handleType as keyof typeof EFResizeHandleType ]\n )\n ];\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.draggableItems = itemsToDrag;\n }\n\n private selectAndUpdateNodeLayer(targetElement: HTMLElement) {\n this.fMediator.send(\n new SelectAndUpdateNodeLayerRequest(this.getNode(targetElement))\n );\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase {\n return this.fComponentsStore.findNode(targetElement)!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizePreparationRequest } from './node-resize-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\nimport { isClosestElementHasClass } from '@foblex/utils';\n\n@Injectable()\n@FValidatorRegister(NodeResizePreparationRequest)\nexport class NodeResizePreparationValidator implements IValidator<NodeResizePreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeResizePreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isDragHandleElement(request.event.targetElement)\n && this.isNodeCanBeDragged(this.getNode(request.event.targetElement));\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n return this.fComponentsStore.findNode(targetElement);\n }\n\n private isNodeCanBeDragged(node: FNodeBase | undefined): boolean {\n return !!node && !node.fDraggingDisabled;\n }\n\n private isDragHandleElement(targetElement: HTMLElement): boolean {\n return isClosestElementHasClass(targetElement, '.f-resize-handle');\n }\n}\n","import { NodeResizePreparationExecution } from './node-resize-preparation.execution';\nimport { NodeResizePreparationValidator } from './node-resize-preparation.validator';\n\nexport const NODE_RESIZE_PREPARATION_PROVIDERS = [\n\n NodeResizePreparationExecution,\n\n NodeResizePreparationValidator,\n];\n","import { NODE_RESIZE_FINALIZE_PROVIDERS } from './node-resize-finalize';\nimport { NODE_RESIZE_PREPARATION_PROVIDERS } from './node-resize-preparation';\nimport { GetNodeResizeRestrictionsExecution } from './get-node-resize-restrictions';\nimport { ApplyChildResizeRestrictionsExecution } from './apply-child-resize-restrictions';\nimport { ApplyParentResizeRestrictionsExecution } from './apply-parent-resize-restrictions';\nimport { CalculateChangedSizeExecution } from './calculate-changed-size';\nimport { CalculateChangedPositionExecution } from './calculate-changed-position';\nimport { GetNormalizedChildrenNodesRectExecution } from './get-normalized-children-nodes-rect';\n\nexport const NODE_RESIZE_PROVIDERS = [\n\n ApplyChildResizeRestrictionsExecution,\n\n ApplyParentResizeRestrictionsExecution,\n\n CalculateChangedPositionExecution,\n\n CalculateChangedSizeExecution,\n\n GetNormalizedChildrenNodesRectExecution,\n\n GetNodeResizeRestrictionsExecution,\n\n ...NODE_RESIZE_FINALIZE_PROVIDERS,\n\n ...NODE_RESIZE_PREPARATION_PROVIDERS,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class SingleSelectRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { SingleSelectRequest } from './single-select.request';\nimport { UpdateItemAndChildrenLayersRequest } from '../../domain';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FConnectionBase } from '../../f-connection';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { EOperationSystem, PlatformService } from '@foblex/platform';\nimport { ICanChangeSelection } from '../../mixins';\n\n@Injectable()\n@FExecutionRegister(SingleSelectRequest)\nexport class SingleSelectExecution implements IExecution<SingleSelectRequest, void> {\n\n constructor(\n private fPlatform: PlatformService,\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: SingleSelectRequest): void {\n const { event } = request;\n\n const item = this.getSelectableItem(event);\n if (item) {\n this.fMediator.send<void>(new UpdateItemAndChildrenLayersRequest(item, item.hostElement.parentElement!));\n }\n\n this.isMultiselectEnabled(event) ? this.multiSelect(item) : this.singleSelect(item);\n }\n\n private getSelectableItem(event: IPointerEvent): ICanChangeSelection | undefined {\n return this.fComponentsStore.findNode(event.targetElement) || this.getConnectionHandler(event.targetElement);\n }\n\n private getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fComponentsStore.fConnections.find(c => c.isContains(element) || c.fConnectionCenter?.nativeElement?.contains(element));\n }\n\n private isMultiselectEnabled(event: IPointerEvent): boolean {\n return this.isCommandButton(this.fPlatform.getOS()!, event.originalEvent) ||\n this.isShiftPressed(event.originalEvent);\n }\n\n private isShiftPressed(event: { shiftKey: boolean }): boolean {\n return event.shiftKey;\n }\n\n private isCommandButton(platform: EOperationSystem, event: { metaKey: boolean, ctrlKey: boolean }): boolean {\n return platform === EOperationSystem.MAC_OS ? event.metaKey : event.ctrlKey;\n }\n\n private singleSelect(item: ICanChangeSelection | undefined): void {\n if (item) {\n if (!item.isSelected() && !item.fSelectionDisabled) {\n this.clearSelection();\n this.selectItem(item);\n }\n } else {\n this.clearSelection();\n }\n }\n\n private multiSelect(item: ICanChangeSelection | undefined): void {\n if (item && !item.fSelectionDisabled) {\n item.isSelected() ? this.deselectItem(item) : this.selectItem(item);\n }\n }\n\n private deselectItem(item: ICanChangeSelection): void {\n const index = this.fDraggableDataContext.selectedItems.indexOf(item);\n if (index > -1) {\n this.fDraggableDataContext.selectedItems.splice(index, 1);\n }\n item.deselect();\n this.fDraggableDataContext.markSelectionAsChanged();\n }\n\n private selectItem(item: ICanChangeSelection): void {\n this.fDraggableDataContext.selectedItems.push(item);\n item.select();\n this.fDraggableDataContext.markSelectionAsChanged();\n }\n\n private clearSelection(): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n this.fDraggableDataContext.markSelectionAsChanged();\n });\n this.fDraggableDataContext.selectedItems = [];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { SingleSelectRequest } from './single-select.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n@Injectable()\n@FValidatorRegister(SingleSelectRequest)\nexport class SingleSelectValidator implements IValidator<SingleSelectRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SingleSelectRequest): boolean {\n return this.fComponentsStore.fFlow!.hostElement.contains(request.event.targetElement)\n && !this.fDraggableDataContext.draggableItems.length;\n }\n}\n","import { SingleSelectExecution } from './single-select.execution';\nimport { SingleSelectValidator } from './single-select.validator';\n\nexport const SINGLE_SELECT_PROVIDERS = [\n\n SingleSelectExecution,\n\n SingleSelectValidator\n];\n","import { Directive, EventEmitter, } from '@angular/core';\nimport { FCreateConnectionEvent, FReassignConnectionEvent } from './connections';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FCreateNodeEvent } from '../f-external-item';\nimport { DragAndDropBase, ICanRunOutsideAngular } from '@foblex/drag-toolkit';\n\n@Directive()\nexport abstract class FDraggableBase extends DragAndDropBase {\n\n public abstract fSelectionChange: EventEmitter<FSelectionChangeEvent>;\n\n public abstract fCreateNode: EventEmitter<FCreateNodeEvent>;\n\n public abstract fReassignConnection: EventEmitter<FReassignConnectionEvent>;\n\n public abstract fCreateConnection: EventEmitter<FCreateConnectionEvent>;\n\n protected constructor(\n ngZone: ICanRunOutsideAngular | undefined\n ) {\n super(ngZone);\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ExternalItemFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IRect } from '@foblex/2d';\n\nexport class FCreateNodeEvent<TData = any> {\n\n constructor(\n public rect: IRect,\n public data: TData,\n ) {\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { ExternalItemFinalizeRequest } from './external-item-finalize.request';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\nimport { FCreateNodeEvent } from '../f-create-node.event';\nimport { GetElementRectInFlowRequest } from '../../../domain';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ExternalItemFinalizeRequest)\nexport class ExternalItemFinalizeExecution implements IExecution<ExternalItemFinalizeRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n private get fCreateNode(): EventEmitter<FCreateNodeEvent> {\n return this.fComponentsStore.fDraggable!.fCreateNode;\n }\n\n private get dragHandler(): ExternalItemDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as ExternalItemDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ExternalItemFinalizeRequest): void {\n this.emitEvent(\n this.getExternalItemElementsFromPoint(request.event.getPosition())\n );\n\n this.dragHandler.complete();\n }\n\n private getExternalItemElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y)\n .filter(x => !x.closest('.f-external-item')) as HTMLElement[];\n }\n\n private emitEvent(elements: HTMLElement[]): void {\n if (this.isPointerInCanvasRect(elements)) {\n this.fCreateNode.emit(\n new FCreateNodeEvent(this.getRectInCanvas(), this.dragHandler.externalItem.fData)\n );\n }\n }\n\n private isPointerInCanvasRect(elements: HTMLElement[]): boolean {\n return elements.length ? this.flowHost.contains(elements[ 0 ]) : false;\n }\n\n private getRectInCanvas(): IRect {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(this.dragHandler.placeholder!));\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FExternalItemBase } from '../../f-external-item';\nimport { IDraggableItem } from '../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\nimport { deepCloneNode } from '@foblex/utils';\n\nexport class ExternalItemDragHandler implements IDraggableItem {\n\n public placeholder: HTMLElement | SVGElement | undefined;\n\n private onPointerDownRect: IRect = RectExtensions.initialize();\n\n private difference: IPoint = PointExtensions.initialize();\n\n constructor(\n public externalItem: FExternalItemBase,\n private fBrowser: BrowserService\n ) {\n }\n\n private getStyle(position: IPoint): string {\n return `position: absolute; left: 0; top: 0; transform: translate(${ position.x }px, ${ position.y }px)`;\n }\n\n public initialize(): void {\n this.onPointerDownRect = this.getExternalItemRect();\n this.placeholder = deepCloneNode(this.externalItem.hostElement);\n this.placeholder.setAttribute('style', this.getStyle(Point.fromPoint(this.onPointerDownRect)));\n this.fBrowser.document.body.appendChild(this.placeholder);\n }\n\n private getExternalItemRect(): IRect {\n const rect = this.externalItem.hostElement.getBoundingClientRect();\n const scrollTop = this.fBrowser.window.pageYOffset || this.fBrowser.document.documentElement.scrollTop;\n const scrollLeft = this.fBrowser.window.pageXOffset || this.fBrowser.document.documentElement.scrollLeft;\n const offsetTop = rect.top + scrollTop;\n const offsetLeft = rect.left + scrollLeft;\n return RectExtensions.initialize(offsetLeft, offsetTop, rect.width, rect.height);\n }\n\n public move(difference: IPoint): void {\n this.difference = difference;\n const position = Point.fromPoint(this.onPointerDownRect).add(this.difference);\n this.placeholder!.setAttribute('style', this.getStyle(position));\n }\n\n public complete(): void {\n this.fBrowser.document.body.removeChild(this.placeholder!);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemFinalizeRequest } from './external-item-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\n\n\n@Injectable()\n@FValidatorRegister(ExternalItemFinalizeRequest)\nexport class ExternalItemFinalizeValidator implements IValidator<ExternalItemFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: ExternalItemFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ExternalItemDragHandler\n );\n }\n}\n","import { ExternalItemFinalizeExecution } from './external-item-finalize.execution';\nimport { ExternalItemFinalizeValidator } from './external-item-finalize.validator';\n\nexport const EXTERNAL_ITEM_FINALIZE_PROVIDERS = [\n\n ExternalItemFinalizeExecution,\n\n ExternalItemFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ExternalItemPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemPreparationRequest } from './external-item-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExternalItemBase, FExternalItemService, getExternalItem } from '../../../f-external-item';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ExternalItemPreparationRequest)\nexport class ExternalItemPreparationExecution implements IExecution<ExternalItemPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fExternalItemService: FExternalItemService,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ExternalItemPreparationRequest): void {\n this.fDraggableDataContext.onPointerDownScale = 1;\n\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition()).elementTransform(this.flowHost);\n\n this.fDraggableDataContext.draggableItems = [\n new ExternalItemDragHandler(this.getExternalItem(request.event.targetElement), this.fBrowser)\n ];\n }\n\n private getExternalItem(targetElement: HTMLElement): FExternalItemBase<any> {\n return this.fExternalItemService.getItem(getExternalItem(targetElement))!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemPreparationRequest } from './external-item-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FExternalItemBase, FExternalItemService, getExternalItem, isExternalItem } from '../../../f-external-item';\n\n@Injectable()\n@FValidatorRegister(ExternalItemPreparationRequest)\nexport class ExternalItemPreparationValidator implements IValidator<ExternalItemPreparationRequest> {\n\n\n constructor(\n private fExternalItemService: FExternalItemService\n ) {\n }\n\n public handle(request: ExternalItemPreparationRequest): boolean {\n const externalItem = this.getExternalItem(request.event.targetElement);\n return isExternalItem(request.event.targetElement) && !!externalItem && !externalItem.fDisabled;\n }\n\n private getExternalItem(targetElement: HTMLElement): FExternalItemBase<any> | undefined {\n return this.fExternalItemService.getItem(getExternalItem(targetElement));\n }\n}\n","import { ExternalItemPreparationExecution } from './external-item-preparation.execution';\nimport { ExternalItemPreparationValidator } from './external-item-preparation.validator';\n\nexport const EXTERNAL_ITEM_PREPARATION_PROVIDERS = [\n\n ExternalItemPreparationExecution,\n\n ExternalItemPreparationValidator,\n];\n","import { EXTERNAL_ITEM_PREPARATION_PROVIDERS } from './external-item-preparation';\nimport { EXTERNAL_ITEM_FINALIZE_PROVIDERS } from './external-item-finalize';\n\nexport const F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS = [\n\n ...EXTERNAL_ITEM_FINALIZE_PROVIDERS,\n\n ...EXTERNAL_ITEM_PREPARATION_PROVIDERS,\n];\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_EXTERNAL_ITEM = new InjectionToken<FExternalItemBase>('F_EXTERNAL_ITEM');\n\n@Directive()\nexport abstract class FExternalItemBase<TData = any> implements IHasHostElement {\n\n public abstract fExternalItemId: string;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract fData: TData | undefined;\n\n public abstract fDisabled: boolean;\n}\n","export function isExternalItem(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fExternalItem]');\n}\n\nexport function getExternalItem(element: HTMLElement | SVGElement): HTMLElement | SVGElement {\n return element.closest('[fExternalItem]') as HTMLElement | SVGElement;\n}\n","import { Injectable } from '@angular/core';\nimport { FExternalItemBase } from './f-external-item-base';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FExternalItemService {\n\n private items: FExternalItemBase[] = [];\n\n public registerItem(item: FExternalItemBase): void {\n this.items.push(item);\n }\n\n public getItem(element: HTMLElement | SVGElement): FExternalItemBase | undefined {\n return this.items.find(item => item.hostElement === element);\n }\n\n public removeItem(item: FExternalItemBase): void {\n const index = this.items.indexOf(item);\n if (index !== -1) {\n this.items.splice(index, 1);\n }\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FExternalItemBase, F_EXTERNAL_ITEM } from './f-external-item-base';\nimport { FExternalItemService } from './f-external-item.service';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fExternalItem]\",\n host: {\n '[attr.id]': 'fExternalItemId',\n class: \"f-component f-external-item\",\n '[class.f-external-item-disabled]': 'fDisabled',\n },\n providers: [\n { provide: F_EXTERNAL_ITEM, useExisting: FExternalItemDirective }\n ],\n})\nexport class FExternalItemDirective<TData> extends FExternalItemBase<TData> implements OnInit, OnDestroy {\n\n @Input()\n public override fExternalItemId: string = `f-external-item-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override fData: TData | undefined;\n\n @Input()\n public override fDisabled: boolean = false;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fExternalItemService: FExternalItemService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fExternalItemService.registerItem(this);\n this.disablePointerEvents(Array.from(this.hostElement.children) as HTMLElement[]);\n }\n\n private disablePointerEvents(children: HTMLElement[]): void {\n children.forEach((x) => {\n x.style.pointerEvents = 'none';\n this.disablePointerEvents(Array.from(x.children) as HTMLElement[]);\n });\n }\n\n public ngOnDestroy(): void {\n this.fExternalItemService.removeItem(this);\n }\n}\n","import { FExternalItemDirective } from './f-external-item.directive';\n\nexport const F_EXTERNAL_ITEM_PROVIDERS = [\n FExternalItemDirective\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_DRAG_AND_DROP_PLUGIN: InjectionToken<IFDragAndDropPlugin> = new InjectionToken<IFDragAndDropPlugin>('F_DRAG_AND_DROP_PLUGIN');\n\nexport interface IFDragAndDropPlugin {\n\n onSelect?(event: Event): void;\n\n onPointerDown?(event: IPointerEvent): void;\n\n prepareDragSequence?(event: IPointerEvent): void;\n\n onPointerUp?(event: IPointerEvent): void;\n}\n","import {\n AfterViewInit, ContentChildren,\n Directive,\n ElementRef,\n EventEmitter, Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit, Optional, Output, QueryList\n} from \"@angular/core\";\nimport { FDraggableBase } from './f-draggable-base';\nimport { FComponentsStore } from '../f-storage';\nimport { FDraggableDataContext } from './f-draggable-data-context';\nimport { Subscription } from 'rxjs';\nimport { IPoint, Point } from '@foblex/2d';\nimport { NodeMoveFinalizeRequest, NodeMovePreparationRequest } from './node';\nimport { CanvasMoveFinalizeRequest, CanvasMovePreparationRequest } from './canvas';\nimport {\n FCreateConnectionEvent,\n FReassignConnectionEvent,\n ReassignConnectionPreparationRequest,\n ReassignConnectionFinalizeRequest,\n CreateConnectionPreparationRequest,\n CreateConnectionFinalizeRequest\n} from './connections';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FMediator } from '@foblex/mediator';\nimport { EmitTransformChangesRequest, GetSelectionRequest } from '../domain';\nimport {\n ExternalItemFinalizeRequest,\n ExternalItemPreparationRequest,\n FCreateNodeEvent,\n isExternalItem\n} from '../f-external-item';\nimport { SingleSelectRequest } from './single-select';\nimport { NodeResizeFinalizeRequest, NodeResizePreparationRequest } from './node-resize';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from './i-f-drag-and-drop-plugin';\nimport { BrowserService } from '@foblex/platform';\nimport { ICanRunOutsideAngular, IPointerEvent } from '@foblex/drag-toolkit';\n\n@Directive({\n selector: \"f-flow[fDraggable]\",\n exportAs: 'fDraggable'\n})\nexport class FDraggableDirective extends FDraggableBase implements OnInit, AfterViewInit, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input('fDraggableDisabled')\n public override disabled: boolean = false;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Output()\n public override fSelectionChange: EventEmitter<FSelectionChangeEvent> = new EventEmitter<FSelectionChangeEvent>();\n\n // @Output()\n // public override fConnectionIntersectNode: EventEmitter<ConnectionIntersectNodeEvent> = new EventEmitter<ConnectionIntersectNodeEvent>();\n\n @Output()\n public override fCreateNode: EventEmitter<FCreateNodeEvent> = new EventEmitter<FCreateNodeEvent>();\n\n @Output()\n public override fReassignConnection: EventEmitter<FReassignConnectionEvent> = new EventEmitter<FReassignConnectionEvent>();\n\n @Output()\n public override fCreateConnection: EventEmitter<FCreateConnectionEvent> = new EventEmitter<FCreateConnectionEvent>();\n\n @ContentChildren(F_DRAG_AND_DROP_PLUGIN, { descendants: true })\n private plugins!: QueryList<IFDragAndDropPlugin>;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fDraggableDataContext: FDraggableDataContext,\n @Inject(NgZone) @Optional() ngZone: ICanRunOutsideAngular,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n super(ngZone);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fDraggable = this;\n }\n\n public ngAfterViewInit(): void {\n super.subscribe(this.fBrowser.document);\n }\n\n public override onPointerDown(event: IPointerEvent): boolean {\n this.fDraggableDataContext.reset();\n let result: boolean = event.isMouseLeftButton();\n\n this.plugins.forEach((p) => {\n p.onPointerDown?.(event);\n });\n\n this.fMediator.send<void>(new SingleSelectRequest(event));\n\n this.fMediator.send<void>(new ReassignConnectionPreparationRequest(event));\n\n this.fMediator.send<void>(new CreateConnectionPreparationRequest(event));\n\n if (!result) {\n this.finalizeDragSequence();\n }\n return result;\n }\n\n protected override prepareDragSequence(event: IPointerEvent) {\n\n this.plugins.forEach((p) => {\n p.prepareDragSequence?.(event);\n });\n\n this.fMediator.send<void>(new NodeResizePreparationRequest(event));\n\n this.fMediator.send<void>(new NodeMovePreparationRequest(event));\n\n this.fMediator.send<void>(new CanvasMovePreparationRequest(event));\n\n this.fMediator.send<void>(new ExternalItemPreparationRequest(event));\n\n this.fDraggableDataContext.draggableItems.forEach((item) => {\n item.initialize?.();\n });\n\n if (this.fDraggableDataContext.draggableItems.length > 0) {\n this.hostElement.classList.add('f-dragging');\n this.emitSelectionChangeEvent();\n }\n }\n\n protected override onSelect(event: Event): void {\n\n this.plugins.forEach((p) => {\n p.onSelect?.(event);\n });\n\n if (this.isTargetItemExternal(event)) {\n event.preventDefault();\n }\n }\n\n private isTargetItemExternal(event: Event): boolean {\n let isTargetItemExternal = this.isExternalItem(event.target as HTMLElement);\n let isTargetParentItemExternal = this.isExternalItem((event.target as Node).parentNode as HTMLElement);\n return isTargetItemExternal || isTargetParentItemExternal;\n }\n\n private isExternalItem(target: HTMLElement): boolean {\n let result = false;\n try {\n result = isExternalItem(target);\n } catch (e) {\n }\n return result;\n }\n\n public override onPointerMove(event: IPointerEvent): void {\n const pointerPositionInCanvas = Point.fromPoint(event.getPosition()).elementTransform(this.hostElement);\n const difference: IPoint = pointerPositionInCanvas.div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n this.fDraggableDataContext.draggableItems.forEach((item) => {\n item.move({ ...difference });\n });\n }\n\n public override onPointerUp(event: IPointerEvent): void {\n\n this.plugins.forEach((p) => {\n p.onPointerUp?.(event);\n });\n\n this.fMediator.send<void>(new ReassignConnectionFinalizeRequest(event));\n\n this.fMediator.send<void>(new CreateConnectionFinalizeRequest(event));\n\n this.fMediator.send<void>(new NodeResizeFinalizeRequest(event));\n\n this.fMediator.send<void>(new NodeMoveFinalizeRequest(event));\n\n this.fMediator.send<void>(new CanvasMoveFinalizeRequest(event));\n\n this.fMediator.send<void>(new ExternalItemFinalizeRequest(event));\n\n this.hostElement.classList.remove('f-dragging');\n\n this.fDraggableDataContext.reset();\n }\n\n protected override finalizeDragSequence(): void {\n this.emitSelectionChangeEvent();\n }\n\n private emitSelectionChangeEvent(): void {\n if (\n !this.fDraggableDataContext.isSelectedChanged\n ) {\n return;\n }\n this.fSelectionChange.emit(this.fMediator.send<FSelectionChangeEvent>(new GetSelectionRequest()));\n this.fDraggableDataContext.isSelectedChanged = false;\n this.fMediator.send<void>(new EmitTransformChangesRequest());\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n this.subscriptions$.unsubscribe();\n }\n}\n\n","export class FSelectionChangeEvent {\n\n constructor(\n public nodes: string[],\n public connections: string[],\n ) {\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { FMinimapData } from '../f-minimap-data';\n\nexport class CalculateFlowPointFromMinimapPointRequest {\n\n constructor(\n public flowRect: IRect,\n public canvasPosition: IPoint,\n public eventPoint: IPoint,\n public minimap: FMinimapData\n ) {\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FMinimapData } from '../f-minimap-data';\n\n@Injectable()\n@FExecutionRegister(CalculateFlowPointFromMinimapPointRequest)\nexport class CalculateFlowPointFromMinimapPointExecution\n implements IExecution<CalculateFlowPointFromMinimapPointRequest, IPoint> {\n\n private get canvasScale(): number {\n return this.fComponentsStore.fCanvas!.transform.scale;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(payload: CalculateFlowPointFromMinimapPointRequest): IPoint {\n return PointExtensions.sub(\n payload.canvasPosition,\n PointExtensions.sub(\n this.getPositionInViewBox(payload.eventPoint, payload.minimap),\n this.getNormalizedFlowCenter(payload.flowRect)\n )\n );\n }\n\n private getNormalizedFlowCenter(flowRect: IRect): IPoint {\n return Point.fromPoint(flowRect.gravityCenter).sub(flowRect);\n }\n\n private getPositionInViewBox(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n const eventPointInFlow = this.normalizeEventPoint(eventPoint, minimap);\n return PointExtensions.sum(\n eventPointInFlow,\n RectExtensions.mult(minimap.viewBox, this.canvasScale)\n );\n }\n\n public normalizeEventPoint(point: IPoint, minimap: FMinimapData): Point {\n return this.getEventPointInMinimap(point, minimap)\n .mult(minimap.scale).mult(this.canvasScale);\n }\n\n private getEventPointInMinimap(eventPoint: IPoint, minimap: FMinimapData): Point {\n return Point.fromPoint(eventPoint).elementTransform(minimap.element as unknown as HTMLElement);\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class MinimapDragFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragFinalizeRequest } from './minimap-drag-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(MinimapDragFinalizeRequest)\nexport class MinimapDragFinalizeExecution implements IExecution<MinimapDragFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: MinimapDragFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","import { IPoint, IRect, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { IDraggableItem } from '../../f-draggable';\nimport { FMediator } from '@foblex/mediator';\nimport { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point';\nimport { FMinimapData } from './f-minimap-data';\n\nexport class FMinimapDragHandler implements IDraggableItem {\n\n private lastDifference: IPoint | null = null;\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private flowRect: IRect,\n private canvasPosition: IPoint,\n private eventPoint: IPoint,\n private minimap: FMinimapData\n ) {\n }\n\n public initialize(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.add('f-scaled-animate');\n }\n\n public move(difference: IPoint): void {\n if (this.lastDifference && this.isSamePoint(difference, this.lastDifference)) {\n return;\n }\n\n this.lastDifference = difference;\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(Point.fromPoint(this.eventPoint).add(difference)));\n this.fComponentsStore.fCanvas!.redraw();\n }\n\n private isSamePoint(point1: IPoint, point2: IPoint): boolean {\n return point1.x === point2.x && point1.y === point2.y;\n }\n\n private getNewPosition(eventPoint: IPoint): IPoint {\n return this.fMediator.send<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.flowRect, this.canvasPosition, eventPoint, this.minimap\n ));\n }\n\n public complete(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.remove('f-scaled-animate');\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragFinalizeRequest } from './minimap-drag-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\n\n@Injectable()\n@FValidatorRegister(MinimapDragFinalizeRequest)\nexport class MinimapDragFinalizeValidator implements IValidator<MinimapDragFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: MinimapDragFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FMinimapDragHandler\n );\n }\n}\n","import { MinimapDragFinalizeExecution } from './minimap-drag-finalize.execution';\nimport { MinimapDragFinalizeValidator } from './minimap-drag-finalize.validator';\n\nexport const MINIMAP_DRAG_FINALIZE_PROVIDERS = [\n\n MinimapDragFinalizeExecution,\n\n MinimapDragFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FMinimapData } from '../f-minimap-data';\n\nexport class MinimapDragPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public minimap: FMinimapData\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragPreparationRequest } from './minimap-drag-preparation.request';\nimport { IPoint, IRect, Point, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { CalculateFlowPointFromMinimapPointRequest } from '../calculate-flow-point-from-minimap-point';\nimport { FMinimapData } from '../f-minimap-data';\n\n@Injectable()\n@FExecutionRegister(MinimapDragPreparationRequest)\nexport class MinimapDragPreparationExecution implements IExecution<MinimapDragPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: MinimapDragPreparationRequest): void {\n const eventPoint = request.event.getPosition();\n const startCanvasPosition = Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position);\n\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(eventPoint, request.minimap));\n this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(eventPoint).elementTransform(this.flowHost);\n this.fDraggableDataContext.draggableItems = [\n new FMinimapDragHandler(\n this.fComponentsStore, this.fMediator, this.getFlowRect(),\n startCanvasPosition, eventPoint, request.minimap,\n )\n ];\n }\n\n private getNewPosition(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n return this.fMediator.send<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.getFlowRect(),\n Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position),\n eventPoint, minimap,\n ));\n }\n\n private getFlowRect(): IRect {\n return RectExtensions.fromElement(this.flowHost);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragPreparationRequest } from './minimap-drag-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FValidatorRegister(MinimapDragPreparationRequest)\nexport class MinimapDragPreparationValidator implements IValidator<MinimapDragPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: MinimapDragPreparationRequest): boolean {\n return !this.fDraggableDataContext.draggableItems.length &&\n !!request.event.targetElement.closest('.f-minimap') &&\n this.fComponentsStore.flowHost.contains(request.event.targetElement);\n }\n}\n","import { MinimapDragPreparationExecution } from './minimap-drag-preparation.execution';\nimport { MinimapDragPreparationValidator } from './minimap-drag-preparation.validator';\n\nexport const MINIMAP_DRAG_PREPARATION_PROVIDERS = [\n\n MinimapDragPreparationExecution,\n\n MinimapDragPreparationValidator,\n];\n","import { IRect, RectExtensions } from '@foblex/2d';\n\nexport function checkRectIsFinite(rect: IRect): IRect {\n if (!Number.isFinite(rect.width) || !Number.isFinite(rect.height) || !Number.isFinite(rect.x) || !Number.isFinite(rect.y)) {\n return RectExtensions.initialize(0, 0, 0, 0);\n }\n return rect;\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\n\nexport class FMinimapData {\n\n constructor(\n public element: SVGSVGElement,\n public scale: number = 1,\n public viewBox: IRect = RectExtensions.initialize(0, 0, 0, 0)\n ) {\n }\n}\n","import { MINIMAP_DRAG_PREPARATION_PROVIDERS } from './minimap-drag-preparation';\nimport { MINIMAP_DRAG_FINALIZE_PROVIDERS } from './minimap-drag-finalize';\nimport { CalculateFlowPointFromMinimapPointExecution } from './calculate-flow-point-from-minimap-point';\n\nexport const F_MINIMAP_DRAG_AND_DROP_PROVIDERS = [\n\n CalculateFlowPointFromMinimapPointExecution,\n\n ...MINIMAP_DRAG_FINALIZE_PROVIDERS,\n\n ...MINIMAP_DRAG_PREPARATION_PROVIDERS,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class SelectionAreaFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaFinalizeRequest } from './selection-area-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaFinalizeRequest)\nexport class SelectionAreaFinalizeExecution implements IExecution<SelectionAreaFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectionAreaFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","export class GetCanBeSelectedItemsRequest {\n}\n","import { IPoint, Point, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { EmitTransformChangesRequest, ISelectableWithRect } from '../../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { GetCanBeSelectedItemsRequest } from '../../domain/get-can-be-selected-items/get-can-be-selected-items-request';\nimport { FDraggableDataContext, IDraggableItem } from '../../f-draggable';\nimport { FSelectionAreaBase } from '../f-selection-area-base';\nimport { ICanChangeSelection } from '../../mixins';\n\nexport class SelectionAreaDragHandle implements IDraggableItem {\n\n private canBeSelected: ISelectableWithRect[] = [];\n\n private selectedByMove: ICanChangeSelection[] = [];\n\n private get canvasPosition(): Point {\n return Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position).add(this.fComponentsStore.fCanvas!.transform.scaledPosition);\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fSelectionArea: FSelectionAreaBase,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public initialize(): void {\n this.canBeSelected = this.fMediator.send(new GetCanBeSelectedItemsRequest());\n\n this.fSelectionArea.show();\n this.fSelectionArea.draw(\n RectExtensions.initialize(\n this.fDraggableDataContext.onPointerDownPosition.x,\n this.fDraggableDataContext.onPointerDownPosition.y\n )\n );\n }\n\n public move(difference: IPoint): void {\n const currentPoint = Point.fromPoint(difference).add(this.fDraggableDataContext.onPointerDownPosition);\n const x: number = Math.min(this.fDraggableDataContext.onPointerDownPosition.x, currentPoint.x);\n const y: number = Math.min(this.fDraggableDataContext.onPointerDownPosition.y, currentPoint.y);\n\n const width = Math.abs(difference.x);\n const height = Math.abs(difference.y);\n\n this.fSelectionArea.draw(\n RectExtensions.initialize(x, y, width, height)\n );\n this.selectedByMove = [];\n this.canBeSelected.forEach((item) => {\n item.element.deselect();\n\n const itemRect = RectExtensions.addPoint(item.rect, this.canvasPosition);\n\n const isIntersect = RectExtensions.intersectionWithRect(itemRect, RectExtensions.initialize(x, y, width, height));\n if (isIntersect) {\n\n item.element.select();\n this.selectedByMove.push(item.element);\n }\n });\n this.fMediator.send<void>(new EmitTransformChangesRequest());\n }\n\n public complete(): void {\n this.fSelectionArea.hide();\n this.fDraggableDataContext.selectedItems.push(...this.selectedByMove);\n if (this.selectedByMove.length > 0) {\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaFinalizeRequest } from './selection-area-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\n\n@Injectable()\n@FValidatorRegister(SelectionAreaFinalizeRequest)\nexport class SelectionAreaFinalizeValidator implements IValidator<SelectionAreaFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SelectionAreaFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) =>\n x instanceof SelectionAreaDragHandle\n );\n }\n}\n","import { SelectionAreaFinalizeExecution } from './selection-area-finalize.execution';\nimport { SelectionAreaFinalizeValidator } from './selection-area-finalize.validator';\n\nexport const SELECTION_AREA_FINALIZE_PROVIDERS = [\n\n SelectionAreaFinalizeExecution,\n\n SelectionAreaFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FSelectionAreaBase } from '../../f-selection-area-base';\n\nexport class SelectionAreaPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fSelectionArea: FSelectionAreaBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaPreparationRequest } from './selection-area-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaPreparationRequest)\nexport class SelectionAreaPreparationExecution implements IExecution<SelectionAreaPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: SelectionAreaPreparationRequest): void {\n this.fDraggableDataContext.draggableItems = [\n new SelectionAreaDragHandle(\n this.fComponentsStore, request.fSelectionArea, this.fDraggableDataContext, this.fMediator\n )\n ];\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaPreparationRequest } from './selection-area-preparation.request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\n\n@Injectable()\n@FValidatorRegister(SelectionAreaPreparationRequest)\nexport class SelectionAreaPreparationValidator implements IValidator<SelectionAreaPreparationRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SelectionAreaPreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isShiftPressed(request.event.originalEvent);\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private isShiftPressed(event: { shiftKey: boolean }): boolean {\n return event.shiftKey;\n }\n}\n","import { SelectionAreaPreparationExecution } from './selection-area-preparation.execution';\nimport { SelectionAreaPreparationValidator } from './selection-area-preparation.validator';\n\nexport const SELECTION_AREA_PREPARATION_PROVIDERS = [\n\n SelectionAreaPreparationExecution,\n\n SelectionAreaPreparationValidator,\n];\n","import { SELECTION_AREA_FINALIZE_PROVIDERS } from './selection-area-finalize';\nimport { SELECTION_AREA_PREPARATION_PROVIDERS } from './selection-area-preparation';\n\nexport const F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS = [\n\n ...SELECTION_AREA_FINALIZE_PROVIDERS,\n\n ...SELECTION_AREA_PREPARATION_PROVIDERS\n];\n","import { IRect } from '@foblex/2d';\nimport { Directive } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\n@Directive()\nexport abstract class FSelectionAreaBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract hide(): void;\n\n public abstract show(): void;\n\n public abstract draw(object: IRect): void;\n}\n","import { Component, ElementRef, OnInit } from '@angular/core';\nimport { FSelectionAreaBase } from './f-selection-area-base';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { SelectionAreaFinalizeRequest, SelectionAreaPreparationRequest } from './domain';\n\n@Component({\n selector: \"f-selection-area\",\n template: ``,\n styleUrls: [ './f-selection-area.component.scss' ],\n host: {\n 'class': 'f-selection-area f-component'\n },\n providers: [\n { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },\n ],\n})\nexport class FSelectionAreaComponent extends FSelectionAreaBase implements OnInit, IFDragAndDropPlugin {\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FMediator\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.hostElement.style.display = 'none';\n }\n\n public override hide(): void {\n this.hostElement.style.display = 'none';\n }\n\n public override show(): void {\n this.hostElement.style.display = 'block';\n }\n\n public override draw(object: IRect): void {\n const style = this.hostElement.style;\n style.left = object.x + 'px';\n style.top = object.y + 'px';\n style.width = object.width + 'px';\n style.height = object.height + 'px';\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this.fMediator.send(new SelectionAreaPreparationRequest(event, this));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this.fMediator.send(new SelectionAreaFinalizeRequest(event));\n }\n}\n","import { FSelectionAreaComponent } from './f-selection-area.component';\n\nexport const F_SELECTION_AREA_PROVIDERS = [\n\n FSelectionAreaComponent\n];\n","import { CANVAS_PROVIDERS } from './canvas';\nimport { CONNECTIONS_PROVIDERS } from './connections';\nimport { SINGLE_SELECT_PROVIDERS } from './single-select';\nimport { NODE_PROVIDERS } from './node';\nimport { NODE_RESIZE_PROVIDERS } from './node-resize';\nimport { F_MINIMAP_DRAG_AND_DROP_PROVIDERS } from '../f-minimap/domain';\nimport { F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS } from '../f-external-item';\nimport { F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS } from '../f-selection-area';\nimport { DRAG_AND_DROP_COMMON_PROVIDERS } from './domain';\n\nexport const F_DRAGGABLE_PROVIDERS = [\n\n ...CANVAS_PROVIDERS,\n\n ...CONNECTIONS_PROVIDERS,\n\n ...DRAG_AND_DROP_COMMON_PROVIDERS,\n\n ...SINGLE_SELECT_PROVIDERS,\n\n ...F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS,\n\n ...NODE_PROVIDERS,\n\n ...NODE_RESIZE_PROVIDERS,\n\n ...F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS,\n\n ...F_MINIMAP_DRAG_AND_DROP_PROVIDERS\n];\n","import { ClearSelectionRequest } from './clear-selection.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(ClearSelectionRequest)\nexport class ClearSelectionExecution implements IExecution<ClearSelectionRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: ClearSelectionRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => x.deselect());\n this.fDraggableDataContext.selectedItems = [];\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class GetSelectionRequest {\n\n}\n","import { GetSelectionRequest } from './get-selection.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext, FSelectionChangeEvent } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(GetSelectionRequest)\nexport class GetSelectionExecution implements IExecution<GetSelectionRequest, FSelectionChangeEvent> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(): FSelectionChangeEvent {\n\n let selectedNodes: string[] = [];\n let selectedConnections: string[] = [];\n\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n if (x.hostElement.classList.contains('f-node')) {\n selectedNodes.push(x.hostElement.dataset['fNodeId']!)\n } else {\n selectedConnections.push(x.hostElement.id);\n }\n });\n\n return new FSelectionChangeEvent(selectedNodes, selectedConnections);\n }\n}\n","export class SelectRequest {\n\n constructor(\n public nodes: string[],\n public connections: string[]\n ) {\n }\n}\n","import { SelectRequest } from './select.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectRequest)\nexport class SelectExecution implements IExecution<SelectRequest, void> {\n\n constructor(\n private fDataContext: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n });\n this.fDraggableDataContext.selectedItems = [];\n\n request.nodes.forEach((key) => {\n const node = this.fDataContext.fNodes.find((x) => x.fId === key);\n if(node) {\n node.select();\n this.fDraggableDataContext.selectedItems.push(node);\n }\n });\n\n request.connections.forEach((key) => {\n const connection = this.fDataContext.fConnections.find((x) => x.fId === key);\n if(connection) {\n connection.select();\n this.fDraggableDataContext.selectedItems.push(connection);\n }\n });\n\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class SelectAllRequest {\n\n}\n","import { SelectAllRequest } from './select-all.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectAllRequest)\nexport class SelectAllExecution implements IExecution<SelectAllRequest, void> {\n\n constructor(\n private fDataContext: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectAllRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n });\n this.fDraggableDataContext.selectedItems = [];\n this.fDataContext.fNodes.forEach((x) => {\n x.select();\n this.fDraggableDataContext.selectedItems.push(x);\n });\n this.fDataContext.fConnections.forEach((x) => {\n x.select();\n this.fDraggableDataContext.selectedItems.push(x);\n });\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class SelectAndUpdateNodeLayerRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","export class MoveFrontElementsBeforeTargetElementRequest {\n\n constructor(\n public fItemsContainer: HTMLElement, // fGroupsContainer || fNodesContainer || fConnectionsContainer\n public allElements: Element[],\n public elementsThatShouldBeInFront: Element[],\n public targetIndex: number\n ) {\n }\n}\n","import { MoveFrontElementsBeforeTargetElementRequest } from './move-front-elements-before-target-element.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(MoveFrontElementsBeforeTargetElementRequest)\nexport class MoveFrontElementsBeforeTargetElementExecution implements IExecution<MoveFrontElementsBeforeTargetElementRequest, void> {\n\n public handle(request: MoveFrontElementsBeforeTargetElementRequest): void {\n const elementsToMove: Element[] = [];\n for (let i = request.targetIndex + 1; i < request.allElements.length; i++) {\n const element = request.allElements[ i ];\n if (!request.elementsThatShouldBeInFront.includes(element)) {\n elementsToMove.push(element);\n }\n }\n elementsToMove.forEach((x) => {\n request.fItemsContainer.removeChild(x);\n request.fItemsContainer.insertBefore(x, request.allElements[ request.targetIndex ]);\n });\n }\n}\n","import { ICanChangeSelection } from '../../mixins';\n\nexport class UpdateItemAndChildrenLayersRequest {\n\n constructor(\n public item: ICanChangeSelection,\n public itemContainer: HTMLElement,\n ) {\n }\n}\n","export class GetDeepChildrenNodesAndGroupsRequest {\n\n constructor(\n public fId: string\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetDeepChildrenNodesAndGroupsRequest } from './get-deep-children-nodes-and-groups.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FNodeBase } from '../../f-node';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetDeepChildrenNodesAndGroupsRequest)\nexport class GetDeepChildrenNodesAndGroupsExecution\n implements IExecution<GetDeepChildrenNodesAndGroupsRequest, FNodeBase[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetDeepChildrenNodesAndGroupsRequest): FNodeBase[] {\n return this.getChildrenNodes(request.fId);\n }\n\n private getChildrenNodes(fId: string, visited: Set<string> = new Set()): FNodeBase[] {\n if (visited.has(fId)) {\n throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fId);\n }\n visited.add(fId);\n\n const result = this.fComponentsStore.fNodes.filter((x) => x.fParentId === fId);\n result.forEach((x) => {\n result.push(...this.getChildrenNodes(x.fId, visited));\n });\n return result;\n }\n}\n","import { UpdateItemAndChildrenLayersRequest } from './update-item-and-children-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport { FNodeBase } from '../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../get-deep-children-nodes-and-groups';\nimport { MoveFrontElementsBeforeTargetElementRequest } from './move-front-elements-before-target-element';\n\n@Injectable()\n@FExecutionRegister(UpdateItemAndChildrenLayersRequest)\nexport class UpdateItemAndChildrenLayersExecution implements IExecution<UpdateItemAndChildrenLayersRequest, void> {\n\n private get fGroupsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement;\n }\n\n private get fNodesContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement;\n }\n\n private get fConnectionsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fConnectionsContainer.nativeElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: UpdateItemAndChildrenLayersRequest): void {\n\n switch (request.itemContainer) {\n case this.fGroupsContainer:\n this.handleGroup(request);\n break;\n case this.fNodesContainer:\n this.handleNode(request);\n break;\n case this.fConnectionsContainer:\n this.handleConnection(request);\n break;\n default:\n throw new Error('Unknown container');\n }\n }\n\n private handleGroup(request: UpdateItemAndChildrenLayersRequest): void {\n const childrenNodesAndGroups = this.getChildrenNodesAndGroups(request.item.fId);\n const childrenGroups = this.getChildrenGroups(childrenNodesAndGroups);\n this.updateLayers(this.fGroupsContainer, request.item.hostElement as HTMLElement, childrenGroups);\n const childrenNodes = this.getChildrenNodes(childrenNodesAndGroups);\n if (childrenNodes.length) {\n this.updateLayers(this.fNodesContainer, childrenNodes[ 0 ], childrenNodes);\n }\n }\n\n private handleNode(request: UpdateItemAndChildrenLayersRequest): void {\n const childrenNodesAndGroups = this.getChildrenNodesAndGroups(request.item.fId);\n const childrenNodes = this.getChildrenNodes(childrenNodesAndGroups);\n this.updateLayers(request.itemContainer, request.item.hostElement as HTMLElement, childrenNodes);\n }\n\n private handleConnection(request: UpdateItemAndChildrenLayersRequest): void {\n this.updateLayers(request.itemContainer, request.item.hostElement as HTMLElement, []);\n }\n\n private updateLayers(itemContainer: HTMLElement, item: HTMLElement, elementsThatShouldBeInFront: HTMLElement[]): void {\n const allElements = Array.from(itemContainer.children) as HTMLElement[];\n const targetIndex = allElements.findIndex((x) => x === item);\n if (this.isAnythingNeedToBeMoved(allElements, targetIndex, elementsThatShouldBeInFront)) {\n this.fMediator.send(\n new MoveFrontElementsBeforeTargetElementRequest(itemContainer, allElements, elementsThatShouldBeInFront, targetIndex)\n );\n }\n }\n\n private isAnythingNeedToBeMoved(allElements: HTMLElement[], targetIndex: number, elementsThatShouldBeInFront: HTMLElement[]): boolean {\n for (let i = targetIndex + 1; i < allElements.length; i++) {\n if (!elementsThatShouldBeInFront.includes(allElements[ i ])) {\n return true;\n }\n }\n return false;\n }\n\n private getChildrenGroups(elements: HTMLElement[]): HTMLElement[] {\n const allElements = Array.from(this.fGroupsContainer.children) as HTMLElement[];\n return elements.filter((x) => this.fGroupsContainer.contains(x))\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodes(elements: HTMLElement[]): HTMLElement[] {\n const allElements = Array.from(this.fNodesContainer.children) as HTMLElement[];\n return elements.filter((x) => this.fNodesContainer.contains(x))\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodesAndGroups(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId)).map((x) => x.hostElement);\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { SelectAndUpdateNodeLayerRequest } from './select-and-update-node-layer.request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { UpdateItemAndChildrenLayersRequest } from '../../update-item-and-children-layers';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(SelectAndUpdateNodeLayerRequest)\nexport class SelectAndUpdateNodeLayerExecution implements IHandler<SelectAndUpdateNodeLayerRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n public handle(request: SelectAndUpdateNodeLayerRequest): void {\n this.selectNodeIfNotSelected(request.fNode);\n\n this.fMediator.send<void>(\n new UpdateItemAndChildrenLayersRequest(request.fNode, request.fNode.hostElement.parentElement as HTMLElement)\n );\n }\n\n private selectNodeIfNotSelected(fNode: FNodeBase) {\n if (!this.fDraggableDataContext.selectedItems.includes(fNode) && !fNode.fSelectionDisabled) {\n this.fDraggableDataContext.selectedItems.push(fNode);\n fNode.select();\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","import { ClearSelectionExecution } from './clear-selection';\nimport { GetSelectionExecution } from './get-selection';\nimport { SelectExecution } from './select';\nimport { SelectAllExecution } from './select-all';\nimport {\n SelectAndUpdateNodeLayerExecution\n} from './select-and-update-node-layer/select-and-update-node-layer.execution';\n\nexport const F_SELECTION_FEATURES = [\n\n ClearSelectionExecution,\n\n GetSelectionExecution,\n\n SelectExecution,\n\n SelectAllExecution,\n\n SelectAndUpdateNodeLayerExecution\n];\n","import { Injectable } from '@angular/core';\nimport { IRect, ITransformModel, RectExtensions } from '@foblex/2d';\nimport { ISelectableWithRect } from './i-selectable-with-rect';\nimport { GetCanBeSelectedItemsRequest } from './get-can-be-selected-items-request';\nimport { FNodeBase } from '../../f-node';\nimport { FConnectionBase } from '../../f-connection';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(GetCanBeSelectedItemsRequest)\nexport class GetCanBeSelectedItemsExecution implements IExecution<void, ISelectableWithRect[]> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(): ISelectableWithRect[] {\n return [ ...this.getNodesWithRects(), ...this.getConnectionsWithRects() ].filter((x) => {\n return !this.fDraggableDataContext.selectedItems.includes(x.element);\n });\n }\n\n private getNodesWithRects(): ISelectableWithRect[] {\n return this.fNodes.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n rect: RectExtensions.mult(\n this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement)),\n this.transform.scale\n )\n };\n });\n }\n\n private getConnectionsWithRects(): ISelectableWithRect[] {\n return this.fConnections.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n rect: RectExtensions.mult(\n this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.boundingElement)),\n this.transform.scale\n )\n };\n });\n }\n}\n","import { EFConnectionBehavior } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { IRoundedRect } from '@foblex/2d';\n\nexport class GetConnectionLineRequest {\n\n constructor(\n public outputRect: IRoundedRect,\n public inputRect: IRoundedRect,\n public behavior: EFConnectionBehavior | string,\n public outputSide: EFConnectableSide,\n public inputSide: EFConnectableSide,\n ) {\n\n }\n}\n","import { GetConnectionLineRequest } from './get-connection-line.request';\nimport { Injectable } from '@angular/core';\nimport { EFConnectionBehavior } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetIntersections, ILine, IPoint, IRect, IRoundedRect, Line, Point } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(GetConnectionLineRequest)\nexport class GetConnectionLineExecution implements IExecution<GetConnectionLineRequest, ILine> {\n\n private behaviorHandlers = {\n\n [ EFConnectionBehavior.FLOATING.toString() ]: this.floatingBehavior,\n\n [ EFConnectionBehavior.FIXED_CENTER.toString() ]: this.fixedCenterBehavior,\n\n [ EFConnectionBehavior.FIXED.toString() ]: this.fixedOutboundBehaviour,\n }\n\n public handle(payload: GetConnectionLineRequest): ILine {\n return this.behaviorHandlers[ payload.behavior ](payload);\n }\n\n private floatingBehavior(payload: GetConnectionLineRequest): ILine {\n const fromResult = GetIntersections.getRoundedRectIntersections(payload.outputRect.gravityCenter, payload.inputRect.gravityCenter, payload.outputRect)[ 0 ];\n const toResult = GetIntersections.getRoundedRectIntersections(payload.inputRect.gravityCenter, payload.outputRect.gravityCenter, payload.inputRect)[ 0 ];\n return new Line(\n fromResult ? fromResult : payload.outputRect.gravityCenter,\n toResult ? toResult : payload.inputRect.gravityCenter\n );\n }\n\n private fixedCenterBehavior(payload: GetConnectionLineRequest): ILine {\n return new Line(\n payload.outputRect.gravityCenter,\n payload.inputRect.gravityCenter\n );\n }\n\n private fixedOutboundBehaviour(payload: GetConnectionLineRequest): ILine {\n return new Line(\n positionFixedOutbound[ payload.outputSide === EFConnectableSide.AUTO ? EFConnectableSide.BOTTOM : payload.outputSide ](payload.outputRect as IRoundedRect),\n positionFixedOutbound[ payload.inputSide === EFConnectableSide.AUTO ? EFConnectableSide.TOP : payload.inputSide ](payload.inputRect as IRoundedRect)\n );\n }\n}\n\nconst positionFixedOutbound = {\n [ EFConnectableSide.TOP ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.y = rect.y;\n result.x = rect.x + rect.width / 2;\n return result;\n },\n [ EFConnectableSide.BOTTOM ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.y = rect.y + rect.height;\n result.x = rect.x + rect.width / 2;\n return result;\n },\n [ EFConnectableSide.LEFT ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.x = rect.x;\n result.y = rect.y + rect.height / 2;\n return result;\n },\n [ EFConnectableSide.RIGHT ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.x = rect.x + rect.width;\n result.y = rect.y + rect.height / 2;\n return result;\n },\n};\n\n\n\n\n","export class GetFlowStateConnectionsRequest {\n\n}\n","import { Injectable } from '@angular/core';\nimport { GetFlowStateConnectionsRequest } from './get-flow-state-connections-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IFFlowStateConnection } from '../i-f-flow-state-connection';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateConnectionsRequest)\nexport class GetFlowStateConnectionsExecution implements IExecution<GetFlowStateConnectionsRequest, IFFlowStateConnection[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetFlowStateConnectionsRequest): IFFlowStateConnection[] {\n return this.fComponentsStore.fConnections.map((x) => {\n return {\n id: x.fId,\n fOutputId: x.fOutputId,\n fInputId: x.fInputId,\n fType: x.fType,\n fBehavior: x.fBehavior,\n isSelected: x.isSelected()\n }\n });\n }\n}\n","import { Type } from '@angular/core';\n\nexport class GetFlowStateNodesRequest {\n\n constructor(\n public type: Type<any>\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetFlowStateNodesRequest } from './get-flow-state-nodes-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IFFlowStateNode } from '../i-f-flow-state-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IFFlowStateConnector } from '../i-f-flow-state-connector';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateNodesRequest)\nexport class GetFlowStateNodesExecution implements IExecution<GetFlowStateNodesRequest, IFFlowStateNode[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetFlowStateNodesRequest): IFFlowStateNode[] {\n return this.fComponentsStore.fNodes.filter((x) => x instanceof request.type).map((x) => {\n return {\n id: x.fId,\n parent: x.fParentId,\n position: x.position,\n size: x.size,\n fOutputs: this.getOutputs(x.hostElement),\n fInputs: this.getInputs(x.hostElement),\n isSelected: x.isSelected()\n };\n });\n }\n\n private getOutputs(hostElement: HTMLElement): IFFlowStateConnector[] {\n return this.fComponentsStore.fOutputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {\n return {\n id: x.id,\n fConnectableSide: x.fConnectableSide\n }\n });\n }\n\n private getInputs(hostElement: HTMLElement): IFFlowStateConnector[] {\n return this.fComponentsStore.fInputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {\n return {\n id: x.id,\n fConnectableSide: x.fConnectableSide\n }\n });\n }\n}\n","export class GetFlowStateRequest {\n}\n","import { GetFlowStateRequest } from './get-flow-state.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IFFlowState } from './i-f-flow-state';\nimport { FComponentsStore } from '../../f-storage';\nimport { FGroupDirective, FNodeDirective } from '../../f-node';\nimport { IPoint, ITransformModel, PointExtensions } from '@foblex/2d';\nimport { GetFlowStateNodesRequest } from './get-flow-state-nodes';\nimport { GetFlowStateConnectionsRequest } from './get-flow-state-connections';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateRequest)\nexport class GetFlowStateExecution implements IExecution<GetFlowStateRequest, IFFlowState> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(payload: GetFlowStateRequest): IFFlowState {\n return {\n position: this.getCanvasPosition(this.fComponentsStore.fCanvas!.transform),\n scale: this.fComponentsStore.fCanvas!.transform.scale,\n nodes: this.fMediator.send(new GetFlowStateNodesRequest(FNodeDirective)),\n groups: this.fMediator.send(new GetFlowStateNodesRequest(FGroupDirective)),\n connections: this.fMediator.send(new GetFlowStateConnectionsRequest())\n }\n }\n\n private getCanvasPosition(transform: ITransformModel): IPoint {\n return PointExtensions.sum(transform.position, transform.scaledPosition);\n }\n}\n\n\n\n","import { GetFlowStateExecution } from './get-flow-state.execution';\nimport { GetFlowStateNodesExecution } from './get-flow-state-nodes';\nimport { GetFlowStateConnectionsExecution } from './get-flow-state-connections';\n\nexport const GET_FLOW_STATE_PROVIDERS = [\n\n GetFlowStateExecution,\n\n GetFlowStateNodesExecution,\n\n GetFlowStateConnectionsExecution\n];\n","export class GetScaledNodeRectsWithFlowPositionRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { GetScaledNodeRectsWithFlowPositionRequest } from './get-scaled-node-rects-with-flow-position.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetScaledNodeRectsWithFlowPositionRequest)\nexport class GetScaledNodeRectsWithFlowPositionExecution implements IExecution<GetScaledNodeRectsWithFlowPositionRequest, IRect | null> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetScaledNodeRectsWithFlowPositionRequest): IRect | null {\n return RectExtensions.union(this.getNodesRects());\n }\n\n private getNodesRects(): IRect[] {\n return this.getNodes().map((x) => {\n const rect = RectExtensions.fromElement(x.hostElement);\n return RectExtensions.initialize(x.position.x, x.position.y, rect.width, rect.height);\n });\n }\n\n private getNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n}\n","export class GetNodesRectRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { GetNodesRectRequest } from './get-nodes-rect.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetNodesRectRequest)\nexport class GetNodesRectExecution implements IExecution<GetNodesRectRequest, IRect | null> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetNodesRectRequest): IRect | null {\n return RectExtensions.union(this.getNodesRects());\n }\n\n private getNodesRects(): IRect[] {\n return this.getNodes().map((x) => RectExtensions.fromElement(x.hostElement));\n }\n\n private getNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class GetPositionInFlowRequest {\n constructor(\n public position: IPoint\n ) {\n }\n}\n","import { IPoint, ITransformModel, Point } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { GetPositionInFlowRequest } from './get-position-in-flow-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetPositionInFlowRequest)\nexport class GetPositionInFlowExecution implements IExecution<GetPositionInFlowRequest, IPoint> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetPositionInFlowRequest): IPoint {\n return Point.fromPoint(request.position).elementTransform(this.flowHost)\n .sub(this.transform.scaledPosition).sub(this.transform.position).div(this.transform.scale);\n }\n}\n","import { IRect, ITransformModel } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IsConnectionUnderNodeRequest } from './is-connection-under-node.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext, NodeDragHandler } from '../../f-draggable';\nimport { FNodeBase } from '../../f-node';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FConnectionBase } from '../../f-connection';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(IsConnectionUnderNodeRequest)\nexport class IsConnectionUnderNodeExecution implements IExecution<IsConnectionUnderNodeRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n // private getOutgoingConnectionsHandler: GetOutgoingConnectionsHandler,\n // private getIncomingConnectionsHandler: GetIncomingConnectionsHandler\n ) {\n }\n\n public handle(): void {\n\n const isValid = this.isValidRequest();\n if (!isValid) {\n return;\n }\n\n const fNode = (this.fDraggableDataContext.draggableItems[ 0 ] as NodeDragHandler).fNode;\n\n const outputsOfNode = this.getOutputsForNode(fNode);\n const inputsOfNode = this.getInputsForNode(fNode);\n\n const isCantBeConnectedByOutput = outputsOfNode.some((x) => !x.canBeConnected);\n\n const isCantBeConnectedByInput = this.fComponentsStore.fConnections.some((x) => {\n return inputsOfNode.find((input) => input.id === x.fInputId);\n });\n\n if (!isCantBeConnectedByInput && outputsOfNode.length && !isCantBeConnectedByOutput && inputsOfNode.length) {\n const output = outputsOfNode[ 0 ];\n const input = inputsOfNode[ 0 ];\n // const outgoingConnections = this.getOutgoingConnectionsHandler.handle([ output ]);\n // const incomingConnections = this.getIncomingConnectionsHandler.handle([ input ]);\n // if (outgoingConnections.length === 0 && incomingConnections.length === 0) {\n // const connections = this.findConnectionsUnderNode(fNode);\n // if (connections.length) {\n // //TODO: need to implement\n // }\n // }\n }\n }\n\n private isValidRequest(): boolean {\n const result =\n this.fDraggableDataContext.draggableItems.length === 1 &&\n this.fDraggableDataContext.draggableItems[ 0 ] instanceof NodeDragHandler;\n\n return result;\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private findConnectionsUnderNode(node: FNodeBase): FConnectionBase[] {\n const nodeRect = this.fMediator.send<IRect>(new GetElementRectInFlowRequest(node.hostElement));\n return this.fComponentsStore.fConnections.filter((x) => {\n // const intersection = [];// RectExtensions.intersectionWithVector(nodeRect, x.line.point1, x.line.point2, 0, 0, 0, 0);\n return ([]).length > 0\n });\n }\n}\n// @Injectable()\n// export class GetIncomingConnectionsHandler implements IHandler<FConnectorBase[], FConnectionBase[]> {\n//\n// private get fConnections(): FConnectionBase[] {\n// return this.fComponentsStore.fConnections;\n// }\n//\n// constructor(\n// private fComponentsStore: FComponentsStore,\n// ) {\n// }\n//\n// public handle(inputs: FConnectorBase[]): FConnectionBase[] {\n// const inputsIds = inputs.map((x) => x.id);\n// return this.fConnections.filter((x) => {\n// return inputsIds.includes(x.fInputId);\n// })!;\n// }\n// }\n// @Injectable()\n// export class GetOutgoingConnectionsHandler implements IHandler<FConnectorBase[], FConnectionBase[]> {\n//\n// private get fConnections(): FConnectionBase[] {\n// return this.fComponentsStore.fConnections;\n// }\n//\n// constructor(\n// private fComponentsStore: FComponentsStore,\n// ) {\n// }\n//\n// public handle(outputs: FConnectorBase[]): FConnectionBase[] {\n// const outputsIds = outputs.map((x) => x.id);\n// return this.fConnections.filter((x) => {\n// return outputsIds.includes(x.fOutputId);\n// })!;\n// }\n// }\n","export class RedrawConnectionsRequest {\n}\n","import { ILine } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { RedrawConnectionsRequest } from './redraw-connections-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetConnectionLineRequest } from '../get-connection-line';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FConnectionBase } from '../../f-connection';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\nimport { CreateConnectionMarkersRequest } from '../create-connection-markers';\nimport { IRoundedRect } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(RedrawConnectionsRequest)\nexport class RedrawConnectionsExecution implements IExecution<RedrawConnectionsRequest, void> {\n\n constructor(\n private readonly fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: RedrawConnectionsRequest): void {\n this.resetConnectors();\n\n if (this.fComponentsStore.fTempConnection) {\n this.setMarkers(this.fComponentsStore.fTempConnection);\n }\n\n if(this.fComponentsStore.fSnapConnection) {\n this.setMarkers(this.fComponentsStore.fSnapConnection);\n }\n\n this.fComponentsStore.fConnections.forEach((connection) => {\n const output = this.fComponentsStore.fOutputs.find((x) => x.id === connection.fOutputId);\n const input = this.fComponentsStore.fInputs.find((x) => x.id === connection.fInputId);\n if (output && input) {\n this.setupConnection(output, input, connection);\n }\n });\n }\n\n private resetConnectors(): void {\n this.fComponentsStore.fOutputs.forEach((output) => output.setConnected(false));\n this.fComponentsStore.fInputs.forEach((input) => input.setConnected(false));\n }\n\n private setupConnection(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): void {\n output.setConnected(true);\n input.setConnected(true);\n\n const line = this.getLine(output, input, connection);\n\n this.setMarkers(connection);\n\n connection.setLine(line.point1, output.fConnectableSide, line.point2, input.fConnectableSide);\n\n connection.initialize();\n connection.isSelected() ? connection.select() : null;\n }\n\n private getLine(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): ILine {\n const outputRect = this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(output.hostElement));\n const inputRect = this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(input.hostElement));\n return this.fMediator.send(new GetConnectionLineRequest(\n outputRect,\n inputRect,\n connection.fBehavior,\n output.fConnectableSide,\n input.fConnectableSide\n )\n );\n }\n\n private setMarkers(connection: FConnectionBase): void {\n this.fMediator.send(\n new CreateConnectionMarkersRequest(connection)\n );\n }\n}\n","export class ShowConnectionsAfterCalculationsRequest {\n}\n","import { Injectable } from '@angular/core';\nimport { ShowConnectionsAfterCalculationsRequest } from './show-connections-after-calculations-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(ShowConnectionsAfterCalculationsRequest)\nexport class ShowConnectionsAfterCalculationsExecution implements IExecution<ShowConnectionsAfterCalculationsRequest, void> {\n\n constructor(\n private readonly fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: ShowConnectionsAfterCalculationsRequest): void {\n this.fComponentsStore.fConnections.forEach((connection) => {\n connection.hostElement.style.display = 'unset';\n });\n }\n}\n","export class SortNodeLayersRequest {\n\n}\n","import { SortNodeLayersRequest } from './sort-node-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../get-deep-children-nodes-and-groups';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(SortNodeLayersRequest)\nexport class SortNodeLayersExecution implements IExecution<SortNodeLayersRequest, void> {\n\n private get fGroupsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement;\n }\n\n private get fNodesContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement;\n }\n\n private get fNodesContainerElements(): HTMLElement[] {\n return Array.from(this.fNodesContainer.children) as HTMLElement[];\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n }\n\n public handle(request: SortNodeLayersRequest): void {\n this.getGroups().forEach((parent: FNodeBase) => {\n this.moveChildrenNodes(this.getSortedChildrenNodes(parent));\n });\n }\n\n private getGroups(): FNodeBase[] {\n return this.fComponentsStore.fNodes.filter((x) => this.fGroupsContainer.contains(x.hostElement));\n }\n\n private getSortedChildrenNodes(\n parent: FNodeBase,\n ): HTMLElement[] {\n const allElements = this.fNodesContainerElements;\n return this.getChildrenNodes(parent.fId)\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodes(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId))\n .filter((x) => this.fNodesContainer.contains(x.hostElement)).map((x) => x.hostElement);\n }\n\n private moveChildrenNodes(\n sortedChildrenGroups: HTMLElement[],\n ): void {\n const fragment = this.fBrowser.document.createDocumentFragment();\n sortedChildrenGroups.forEach((childGroup: HTMLElement) => {\n fragment.appendChild(childGroup); // Append automatically removes the element from its current position\n });\n this.fNodesContainer.appendChild(fragment);\n }\n}\n","export class SortItemsByParentRequest {\n\n constructor(\n public fItemsContainer: HTMLElement // fGroupsContainer || fNodesContainer\n ) {\n }\n}\n","import { SortItemsByParentRequest } from './sort-items-by-parent.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../get-deep-children-nodes-and-groups';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(SortItemsByParentRequest)\nexport class SortItemsByParentExecution implements IExecution<SortItemsByParentRequest, void> {\n\n private fItemsContainer!: HTMLElement;\n\n private get fItemsFromContainer(): HTMLElement[] {\n return Array.from(this.fItemsContainer.children) as HTMLElement[];\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: SortItemsByParentRequest): void {\n this.fItemsContainer = request.fItemsContainer;\n this.getItems().forEach((parent: FNodeBase) => {\n this.moveChildrenItems(this.getSortedChildrenItems(parent), parent);\n });\n }\n\n private getItems(): FNodeBase[] {\n return this.fComponentsStore.fNodes.filter((x) => this.fItemsContainer.contains(x.hostElement));\n }\n\n private getSortedChildrenItems(\n parent: FNodeBase,\n ): HTMLElement[] {\n const allElements = this.fItemsFromContainer;\n const parentIndex = allElements.indexOf(parent.hostElement);\n return this.getChildrenGroups(parent.fId)\n .filter((child: HTMLElement) => allElements.indexOf(child) < parentIndex)\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenGroups(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId))\n .filter((x) => this.fItemsContainer.contains(x.hostElement)).map((x) => x.hostElement);\n }\n\n private moveChildrenItems(\n sortedChildrenItems: HTMLElement[],\n parent: FNodeBase,\n ): void {\n let nextSibling = parent.hostElement.nextElementSibling;\n\n const fragment = this.fBrowser.document.createDocumentFragment();\n\n sortedChildrenItems.forEach((child: HTMLElement) => {\n fragment.appendChild(child); // Append automatically removes the element from its current position\n });\n this.fItemsContainer.insertBefore(fragment, nextSibling);\n }\n}\n","export class SortItemLayersRequest {\n\n}\n","import { SortItemLayersRequest } from './sort-item-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { SortNodeLayersRequest } from './sort-node-layers-by-groups';\nimport { SortItemsByParentRequest } from './sort-items-by-parent';\nimport { FComponentsStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(SortItemLayersRequest)\nexport class SortItemLayersExecution implements IExecution<SortItemLayersRequest, void> {\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: SortItemLayersRequest): void {\n this.fMediator.send(new SortItemsByParentRequest(this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement));\n this.fMediator.send(new SortNodeLayersRequest());\n this.fMediator.send(new SortItemsByParentRequest(this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement));\n }\n}\n","export class SubscribeOnTransformChangesRequest {\n\n}\n","import { SubscribeOnTransformChangesRequest } from './subscribe-on-transform-changes.request';\nimport { Injectable } from '@angular/core';\nimport { merge, Observable } from 'rxjs';\nimport { FComponentsStore, FTransformStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(SubscribeOnTransformChangesRequest)\nexport class SubscribeOnTransformChangesExecution\n implements IExecution<SubscribeOnTransformChangesRequest, Observable<void>> {\n\n constructor(\n private fTransformStore: FTransformStore,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: SubscribeOnTransformChangesRequest): Observable<void> {\n return merge(\n this.fTransformStore.changes,\n this.fComponentsStore.componentsData$,\n this.fComponentsStore.componentsCount$\n );\n }\n}\n","export const F_CANVAS_ANIMATION_DURATION = 150;\n","import { BrowserService } from '@foblex/platform';\n\nexport function createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","import { GetConnectionLineExecution } from './get-connection-line';\nimport { RedrawConnectionsExecution } from './redraw-connections';\nimport { GetNodesRectExecution } from './get-nodes-rect';\nimport { GetElementRectInFlowExecution } from './get-element-rect-in-flow';\nimport {\n MoveFrontElementsBeforeTargetElementExecution,\n UpdateItemAndChildrenLayersExecution\n} from './update-item-and-children-layers';\nimport { GetPositionInFlowExecution } from './get-position-in-flow';\nimport { CreateConnectionMarkersExecution } from './create-connection-markers';\nimport { GetCanBeSelectedItemsExecution } from './get-can-be-selected-items';\nimport { IsConnectionUnderNodeExecution } from './is-connection-under-node';\nimport { GetScaledNodeRectsWithFlowPositionExecution } from './get-scaled-node-rects-with-flow-position';\nimport { EmitTransformChangesExecution } from './emit-transform-changes';\nimport { SubscribeOnTransformChangesExecution } from './subscribe-on-transform-changes';\nimport { SortItemLayersExecution, SortItemsByParentExecution, SortNodeLayersExecution } from './sort-item-layers';\nimport { GetDeepChildrenNodesAndGroupsExecution } from './get-deep-children-nodes-and-groups';\nimport { CreateRoundedRectFromElementExecution } from './create-rounded-rect-from-element';\nimport { GET_FLOW_STATE_PROVIDERS } from './get-flow-state';\nimport { ShowConnectionsAfterCalculationsExecution } from './show-connections-after-calculations';\nimport { F_SELECTION_FEATURES } from './f-selection';\nimport { F_BACKGROUND_FEATURES } from './f-background';\nimport { F_CANVAS_FEATURES } from './f-canvas';\nimport { F_CONNECTION_FEATURES } from './f-connection';\n\nexport const COMMON_PROVIDERS = [\n\n ...F_CANVAS_FEATURES,\n\n ...F_CONNECTION_FEATURES,\n\n ...F_BACKGROUND_FEATURES,\n\n CreateConnectionMarkersExecution,\n\n CreateRoundedRectFromElementExecution,\n\n EmitTransformChangesExecution,\n\n ...F_SELECTION_FEATURES,\n\n GetCanBeSelectedItemsExecution,\n\n GetDeepChildrenNodesAndGroupsExecution,\n\n GetConnectionLineExecution,\n\n GetElementRectInFlowExecution,\n\n ...GET_FLOW_STATE_PROVIDERS,\n\n GetScaledNodeRectsWithFlowPositionExecution,\n\n GetNodesRectExecution,\n\n GetPositionInFlowExecution,\n\n IsConnectionUnderNodeExecution,\n\n RedrawConnectionsExecution,\n\n ShowConnectionsAfterCalculationsExecution,\n\n SortItemLayersExecution,\n\n SortItemsByParentExecution,\n\n SortNodeLayersExecution,\n\n SubscribeOnTransformChangesExecution,\n\n UpdateItemAndChildrenLayersExecution,\n\n MoveFrontElementsBeforeTargetElementExecution,\n];\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef, Input, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport {\n IPoint, ISize, ITransformModel,\n PointExtensions, SizeExtensions, TransformModelExtensions\n} from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { Subject, Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { createSVGElement } from '../../domain';\nimport { BrowserService } from '@foblex/platform';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-rect-pattern\",\n template: ``,\n host: {\n '[attr.id]': 'id'\n },\n providers: [\n { provide: F_BACKGROUND_PATTERN, useExisting: FRectPatternComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FRectPatternComponent implements OnInit, OnDestroy, IFBackgroundPattern {\n\n private _subscription$: Subscription = new Subscription();\n\n private _stateChanges: Subject<void> = new Subject<void>();\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n private _vColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set vColor(value: string) {\n this._vColor = value;\n this._stateChanges.next();\n }\n\n private _hColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set hColor(value: string) {\n this._vColor = value;\n this._stateChanges.next();\n }\n\n private _vSize: number = 20;\n\n @Input()\n public set vSize(value: number) {\n this._vSize = value;\n this._stateChanges.next();\n }\n\n private _hSize: number = 20;\n\n @Input()\n public set hSize(value: number) {\n this._hSize = value;\n this._stateChanges.next();\n }\n\n private _transform: ITransformModel = TransformModelExtensions.default();\n\n private _position: IPoint = PointExtensions.initialize();\n\n private _size: ISize = SizeExtensions.initialize(this._hSize, this._vSize);\n\n private _pattern!: SVGPatternElement;\n private _vLine!: SVGLineElement;\n private _hLine!: SVGLineElement;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fBrowser: BrowserService\n ) {\n this.createPattern();\n }\n\n private createPattern(): void {\n this._pattern = createSVGElement('pattern', this.fBrowser);\n this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');\n this.hostElement.appendChild(this._pattern);\n\n this._vLine = createSVGElement('line', this.fBrowser);\n this._pattern.appendChild(this._vLine);\n\n this._hLine = createSVGElement('line', this.fBrowser);\n this._pattern.appendChild(this._hLine);\n }\n\n public ngOnInit(): void {\n this._subscription$.add(this.subscribeToStateChanges());\n }\n\n private subscribeToStateChanges(): Subscription {\n return this._stateChanges.pipe(startWith(null)).subscribe(() => {\n this.redraw();\n });\n }\n\n private calculatePattern(): void {\n this._position.x = this._transform.position.x + this._transform.scaledPosition.x;\n this._position.y = this._transform.position.y + this._transform.scaledPosition.y;\n this._size = SizeExtensions.initialize(this._hSize * this._transform.scale, this._vSize * this._transform.scale);\n }\n\n private redraw(): void {\n this.calculatePattern();\n this.redrawPattern();\n\n this.redrawLine(this._vLine, this._vColor, this._size.width, 0, this._size.width, this._size.height);\n this.redrawLine(this._hLine, this._hColor, 0, this._size.height, this._size.width, this._size.height);\n }\n\n private redrawPattern(): void {\n this._pattern.setAttribute('x', `${ this._position.x }`);\n this._pattern.setAttribute('y', `${ this._position.y }`);\n this._pattern.setAttribute('width', `${ this._size.width }`);\n this._pattern.setAttribute('height', `${ this._size.height }`);\n }\n\n private redrawLine(line: SVGLineElement, color: string, x1: number, y1: number, x2: number, y2: number): void {\n line.setAttribute('stroke', `${ color }`);\n line.setAttribute('x1', `${ x1 }`);\n line.setAttribute('x2', `${ x2 }`);\n line.setAttribute('y1', `${ y1 }`);\n line.setAttribute('y2', `${ y2 }`);\n }\n\n public setTransform(transform: ITransformModel): void {\n this._transform = transform;\n this._stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this._subscription$.unsubscribe();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef, Input, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport {\n IPoint,\n ITransformModel,\n PointExtensions,\n TransformModelExtensions\n} from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../../domain';\nimport { Subject, Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-circle-pattern\",\n template: ``,\n host: {\n '[attr.id]': 'id'\n },\n providers: [\n { provide: F_BACKGROUND_PATTERN, useExisting: FCirclePatternComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FCirclePatternComponent implements OnInit, OnDestroy, IFBackgroundPattern {\n\n private _subscription$: Subscription = new Subscription();\n\n private _stateChanges: Subject<void> = new Subject<void>();\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n\n private _color: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set color(value: string) {\n this._color = value;\n this._stateChanges.next();\n }\n\n private _radius: number = 20;\n private _scaledRadius: number = 20;\n\n @Input()\n public set radius(value: number) {\n this._radius = value;\n this._stateChanges.next();\n }\n\n private _transform: ITransformModel = TransformModelExtensions.default();\n\n private _position: IPoint = PointExtensions.initialize();\n\n private _pattern!: SVGPatternElement;\n private _circle!: SVGCircleElement;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fBrowser: BrowserService\n ) {\n this.createPattern();\n }\n\n private createPattern(): void {\n this._pattern = createSVGElement('pattern', this.fBrowser);\n this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');\n this.hostElement.appendChild(this._pattern);\n\n this._circle = createSVGElement('circle', this.fBrowser);\n this._pattern.appendChild(this._circle);\n }\n\n public ngOnInit(): void {\n this._subscription$.add(this.subscribeToStateChanges());\n }\n\n private subscribeToStateChanges(): Subscription {\n return this._stateChanges.pipe(startWith(null)).subscribe(() => {\n this.redraw();\n });\n }\n\n private calculatePattern(): void {\n this._position.x = this._transform.position.x + this._transform.scaledPosition.x;\n this._position.y = this._transform.position.y + this._transform.scaledPosition.y;\n this._scaledRadius = this._radius * this._transform.scale;\n }\n\n private redraw(): void {\n this.calculatePattern();\n this.redrawPattern();\n this.redrawElement();\n }\n\n private redrawPattern(): void {\n this._pattern.setAttribute('x', `${ this._position.x }`);\n this._pattern.setAttribute('y', `${ this._position.y }`);\n this._pattern.setAttribute('width', `${ this._scaledRadius }`);\n this._pattern.setAttribute('height', `${ this._scaledRadius }`);\n }\n\n private redrawElement(): void {\n this._circle.setAttribute('fill', this._color);\n this._circle.setAttribute('cx', `${ this._scaledRadius / 2 }`);\n this._circle.setAttribute('cy', `${ this._scaledRadius / 2 }`);\n this._circle.setAttribute('r', `${ this._scaledRadius / this._radius }`);\n }\n\n public setTransform(transform: ITransformModel): void {\n this._transform = transform;\n this._stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this._subscription$.unsubscribe();\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { ITransformModel } from '@foblex/2d';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_BACKGROUND = new InjectionToken<FBackgroundBase>('F_BACKGROUND');\n\n@Directive()\nexport abstract class FBackgroundBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract isBackgroundElement(element: HTMLElement | SVGElement): boolean;\n\n public abstract setTransform(transform: ITransformModel): void;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ContentChild,\n ElementRef, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport { F_BACKGROUND, FBackgroundBase } from './f-background-base';\nimport { ITransformModel } from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from './domain';\nimport { FComponentsStore } from '../f-storage';\nimport { FMediator } from '@foblex/mediator';\nimport { AddPatternToBackgroundRequest } from '../domain';\n\n@Component({\n selector: \"f-background\",\n template: \"<svg><ng-content></ng-content></svg>\",\n styleUrls: [ \"./f-background.component.scss\" ],\n host: {\n 'class': 'f-component f-background'\n },\n providers: [ { provide: F_BACKGROUND, useExisting: FBackgroundComponent } ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FBackgroundComponent extends FBackgroundBase implements OnInit, AfterContentInit, OnDestroy {\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @ContentChild(F_BACKGROUND_PATTERN, { static: false })\n public fBackgroundPattern: IFBackgroundPattern | undefined;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fBackground = this;\n }\n\n public ngAfterContentInit(): void {\n this.fMediator.send(new AddPatternToBackgroundRequest(this.fBackgroundPattern!));\n }\n\n public override isBackgroundElement(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setTransform(transform: ITransformModel): void {\n this.fBackgroundPattern?.setTransform(transform);\n }\n\n public ngOnDestroy() {\n this.fComponentsStore.fBackground = undefined;\n }\n}\n","import { FBackgroundComponent } from './f-background.component';\nimport { FRectPatternComponent } from './f-rect-pattern';\nimport { FCirclePatternComponent } from './f-circle-pattern';\n\nexport const F_BACKGROUND_PROVIDERS = [\n\n FBackgroundComponent,\n\n FRectPatternComponent,\n\n FCirclePatternComponent\n];\n","import { IPoint } from '@foblex/2d';\n\nexport class FCanvasChangeEvent {\n constructor(\n public readonly position: IPoint,\n public readonly scale: number,\n ) {\n }\n}\n","import { PointExtensions, TransformModelExtensions, IPoint } from '@foblex/2d';\nimport { Directive, ElementRef, EventEmitter, InjectionToken } from '@angular/core';\nimport { FCanvasChangeEvent } from './domain';\nimport { FNodeBase } from '../f-node';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_CANVAS = new InjectionToken<FCanvasBase>('F_CANVAS');\n\n\n@Directive()\nexport abstract class FCanvasBase implements IHasHostElement {\n\n public abstract fCanvasChange: EventEmitter<FCanvasChangeEvent>;\n\n public abstract fNodes: FNodeBase[];\n\n public abstract hostElement: HTMLElement;\n\n public abstract fGroupsContainer: ElementRef<HTMLElement>;\n\n public abstract fNodesContainer: ElementRef<HTMLElement>;\n\n public abstract fConnectionsContainer: ElementRef<HTMLElement>;\n\n public transform = TransformModelExtensions.default();\n\n public abstract redraw(): void;\n\n public abstract redrawWithAnimation(): void;\n\n public getPosition(): IPoint {\n return this.transform.position;\n }\n\n public setPosition(position: IPoint): void {\n this.transform.position = position;\n }\n\n public abstract setZoom(scale: number, toPosition: IPoint): void;\n\n public abstract resetZoom(): void;\n\n public emitCanvasChangeEvent(): void {\n this.fCanvasChange.emit(\n new FCanvasChangeEvent(PointExtensions.sum(this.transform.position, this.transform.scaledPosition), this.transform.scale)\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild,\n} from \"@angular/core\";\nimport {\n FCanvasBase, F_CANVAS\n} from './f-canvas-base';\nimport { IPoint, PointExtensions, TransformModelExtensions } from '@foblex/2d';\nimport {\n FCanvasChangeEvent,\n} from './domain';\nimport { FComponentsStore } from '../f-storage';\nimport { FNodeBase } from '../f-node';\nimport { FMediator } from '@foblex/mediator';\nimport {\n CenterGroupOrNodeRequest,\n EmitTransformChangesRequest,\n F_CANVAS_ANIMATION_DURATION,\n FitToFlowRequest,\n InputCanvasPositionRequest,\n InputCanvasScaleRequest,\n ResetScaleAndCenterRequest, ResetScaleRequest, UpdateScaleRequest,\n} from '../domain';\n\n@Component({\n selector: 'f-canvas',\n templateUrl: './f-canvas.component.html',\n styleUrls: [ './f-canvas.component.scss' ],\n exportAs: 'fComponent',\n host: {\n 'class': 'f-component f-canvas',\n },\n providers: [\n { provide: F_CANVAS, useExisting: FCanvasComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FCanvasComponent extends FCanvasBase implements OnInit {\n\n @Output()\n public override fCanvasChange: EventEmitter<FCanvasChangeEvent> = new EventEmitter<FCanvasChangeEvent>();\n\n @Input()\n public set position(value: IPoint | undefined) {\n this.fMediator.send(new InputCanvasPositionRequest(this.transform, value));\n }\n\n @Input()\n public set scale(value: number | undefined) {\n this.fMediator.send(new InputCanvasScaleRequest(this.transform, value));\n }\n\n public override get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @ViewChild('fGroupsContainer', { static: true })\n public override fGroupsContainer!: ElementRef<HTMLElement>;\n\n @ViewChild('fNodesContainer', { static: true })\n public override fNodesContainer!: ElementRef<HTMLElement>;\n\n @ViewChild('fConnectionsContainer', { static: true })\n public override fConnectionsContainer!: ElementRef<HTMLElement>;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n this.fComponentsStore.fCanvas = this;\n }\n\n public override redraw(): void {\n this.fComponentsStore.fBackground?.setTransform(this.transform);\n this.hostElement.setAttribute(\"style\", `transform: ${ TransformModelExtensions.toString(this.transform) }`);\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public override redrawWithAnimation(): void {\n let duration = F_CANVAS_ANIMATION_DURATION;\n if (this.isMobile()) {\n duration = 80;\n }\n this.fComponentsStore.fBackground?.setTransform(this.transform);\n this.hostElement.setAttribute(\"style\", `transition: transform ${ duration }ms ease-in-out; transform: ${ TransformModelExtensions.toString(this.transform) }`);\n setTimeout(() => this.redraw(), F_CANVAS_ANIMATION_DURATION);\n }\n\n private isMobile(): boolean {\n // @ts-ignore\n const userAgent = navigator.userAgent || navigator.vendor || window[ 'opera' ];\n return /android|iPad|iPhone|iPod/i.test(userAgent);\n }\n\n public centerGroupOrNode(id: string, animated: boolean = true): void {\n this.fMediator.send(new CenterGroupOrNodeRequest(id, animated));\n }\n\n public fitToScreen(toCenter: IPoint = PointExtensions.initialize(), animated: boolean = true): void {\n this.fMediator.send(new FitToFlowRequest(toCenter, animated));\n }\n\n public resetScaleAndCenter(animated: boolean = true): void {\n this.fMediator.send(new ResetScaleAndCenterRequest(animated));\n }\n\n public override setZoom(scale: number, toPosition: IPoint = PointExtensions.initialize()): void {\n this.fMediator.send(new UpdateScaleRequest(scale, toPosition));\n }\n\n public override resetZoom(): void {\n this.fMediator.send(new ResetScaleRequest());\n }\n}\n","<ng-container>\n <div #fGroupsContainer>\n <ng-content select=\"[fGroup]\"></ng-content>\n </div>\n <div #fConnectionsContainer>\n <ng-content select=\"f-snap-connection\"></ng-content>\n <ng-content select=\"f-connection\"></ng-content>\n <ng-content select=\"f-connection-for-create\"></ng-content>\n </div>\n\n <div #fNodesContainer>\n <ng-content select=\"[fNode]\"></ng-content>\n </div>\n</ng-container>\n","import { FCanvasComponent } from './f-canvas.component';\n\nexport const F_CANVAS_PROVIDERS = [\n\n FCanvasComponent,\n];\n","import { ILineAlignmentRect } from './i-line-alignment-rect';\nimport { BrowserService } from '@foblex/platform';\n\nexport class LineElement {\n\n private readonly element: HTMLElement;\n\n constructor(\n fBrowser: BrowserService,\n private readonly hostElement: HTMLElement,\n ) {\n this.element = fBrowser.document.createElement('div');\n this.hostElement.appendChild(this.element);\n this.element.classList.add('f-line');\n }\n\n public hide(): void {\n this.element.style.display = 'none';\n }\n\n public show(): void {\n this.element.style.display = 'block'\n }\n\n public draw(object: Partial<ILineAlignmentRect>): void {\n this.element.style.position = 'absolute';\n Object.keys(object).forEach((key: string) => {\n // @ts-ignore\n this.element.style[ key ] = object[ key ] + 'px';\n });\n }\n}\n\n","import { ISize, ITransformModel } from '@foblex/2d';\nimport { LineElement } from './line-element';\nimport { BrowserService } from '@foblex/platform';\n\nexport class LineService {\n\n private fHorizontalLine: LineElement;\n private fVerticalLine: LineElement;\n\n constructor(fBrowser: BrowserService, private hostElement: HTMLElement) {\n this.fHorizontalLine = new LineElement(fBrowser, this.hostElement);\n this.fVerticalLine = new LineElement(fBrowser, this.hostElement);\n this.fHorizontalLine.hide();\n this.fVerticalLine.hide();\n }\n\n public drawVerticalLine(x: number, size: ISize, transform: ITransformModel): void {\n this.fVerticalLine.show();\n this.fVerticalLine.draw({\n left: x * transform.scale + transform.position.x + transform.scaledPosition.x,\n top: 0,\n width: 1,\n height: size.height\n });\n }\n\n public drawHorizontalLine(y: number, size: ISize, transform: ITransformModel): void {\n this.fHorizontalLine.show();\n this.fHorizontalLine.draw({\n left: 0,\n top: y * transform.scale + transform.position.y + transform.scaledPosition.y,\n width: size.width,\n height: 1\n });\n }\n\n public hideVerticalLine(): void {\n this.fVerticalLine.hide();\n }\n\n public hideHorizontalLine(): void {\n this.fHorizontalLine.hide();\n }\n}\n","import { IRect } from '@foblex/2d';\nimport { INearestCoordinateResult } from './i-nearest-coordinate-result';\n\n/**\n * A class to find the nearest coordinate.\n */\nexport class NearestCoordinateFinder {\n\n\n private elements: IRect[];\n private target: IRect;\n\n /**\n * Constructor to initialize the NearestCoordinateFinder.\n * @param elements - The array of IRect elements.\n * @param target - The target IRect element.\n * @param alignThreshold - The threshold to align the elements.\n */\n constructor(elements: IRect[], target: IRect, private alignThreshold: number = 10) {\n this.elements = elements;\n this.target = target;\n }\n\n /**\n * Finds the nearest coordinate on a specified axis.\n * @returns The nearest coordinate and its distance.\n */\n public findNearestCoordinateByX(): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of this.elements) {\n const distanceLeftLeft = this.target.x - element.x;\n const distanceLeftRight = this.target.x - (element.x + element.width);\n const distanceCenterCenter = this.target.gravityCenter.x - element.gravityCenter.x;\n const distanceRightLeft = (this.target.x + this.target.width) - element.x;\n const distanceRightRight = (this.target.x + this.target.width) - (element.x + element.width);\n\n if (\n Math.abs(distanceLeftLeft) <= this.alignThreshold ||\n Math.abs(distanceLeftRight) <= this.alignThreshold ||\n Math.abs(distanceCenterCenter) <= this.alignThreshold ||\n Math.abs(distanceRightLeft) <= this.alignThreshold ||\n Math.abs(distanceRightRight) <= this.alignThreshold\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.x;\n }\n if (Math.abs(distanceLeftLeft) < Math.abs(minDistance)) {\n minDistance = distanceLeftLeft;\n nearest = element.x;\n }\n if (Math.abs(distanceRightRight) < Math.abs(minDistance)) {\n minDistance = distanceRightRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceLeftRight) < Math.abs(minDistance)) {\n minDistance = distanceLeftRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceRightLeft) < Math.abs(minDistance)) {\n minDistance = distanceRightLeft;\n nearest = element.x;\n }\n }\n }\n return { value: nearest, distance: minDistance };\n }\n\n\n /**\n * Finds the nearest coordinate on a specified axis.\n * @returns The nearest coordinate and its distance.\n */\n public findNearestCoordinateByY(): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of this.elements) {\n const distanceTopTop = this.target.y - element.y;\n const distanceTopBottom = this.target.y - (element.y + element.height);\n const distanceCenterCenter = this.target.gravityCenter.y - element.gravityCenter.y;\n const distanceBottomTop = (this.target.y + this.target.height) - element.y;\n const distanceBottomBottom = (this.target.y + this.target.height) - (element.y + element.height);\n\n if (\n Math.abs(distanceTopTop) <= this.alignThreshold ||\n Math.abs(distanceTopBottom) <= this.alignThreshold ||\n Math.abs(distanceCenterCenter) <= this.alignThreshold ||\n Math.abs(distanceBottomTop) <= this.alignThreshold ||\n Math.abs(distanceBottomBottom) <= this.alignThreshold\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.y;\n }\n if (Math.abs(distanceTopTop) < Math.abs(minDistance)) {\n minDistance = distanceTopTop;\n nearest = element.y;\n }\n if (Math.abs(distanceBottomBottom) < Math.abs(minDistance)) {\n minDistance = distanceBottomBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceTopBottom) < Math.abs(minDistance)) {\n minDistance = distanceTopBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceBottomTop) < Math.abs(minDistance)) {\n minDistance = distanceBottomTop;\n nearest = element.y;\n }\n }\n }\n\n return { value: nearest, distance: minDistance };\n }\n}\n\n","import { IPoint } from '@foblex/2d';\nimport { Directive, InjectionToken } from '@angular/core';\nimport { ILineAlignmentResult } from './domain';\nimport { FNodeBase } from '../f-node';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_LINE_ALIGNMENT = new InjectionToken<FLineAlignmentBase>('F_LINE_ALIGNMENT');\n\n@Directive()\nexport abstract class FLineAlignmentBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void;\n\n public abstract findNearestCoordinate(difference: IPoint): ILineAlignmentResult;\n\n public abstract handle(difference: IPoint): void;\n\n public abstract complete(): void;\n}\n","import { Component, ElementRef, Input, OnInit } from '@angular/core';\nimport { IPoint, IRect, ISize, ITransformModel, RectExtensions, SizeExtensions } from '@foblex/2d';\nimport { ILineAlignmentResult, LineService, NearestCoordinateFinder } from './domain';\nimport { F_LINE_ALIGNMENT, FLineAlignmentBase } from './f-line-alignment-base';\nimport { FComponentsStore } from '../f-storage';\nimport { FDraggableDataContext } from '../f-draggable';\nimport { FNodeBase } from '../f-node';\nimport { GetElementRectInFlowRequest } from '../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\n\n@Component({\n selector: \"f-line-alignment\",\n template: \"\",\n styleUrls: [ \"./f-line-alignment.component.scss\" ],\n exportAs: \"fComponent\",\n host: {\n 'class': 'f-line-alignment f-component'\n },\n providers: [\n { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentComponent }\n ],\n})\nexport class FLineAlignmentComponent extends FLineAlignmentBase implements OnInit {\n\n @Input()\n public fAlignThreshold: number = 10;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n private lineService: LineService;\n\n private size: ISize = SizeExtensions.initialize();\n\n private draggedNodeRect: IRect = RectExtensions.initialize();\n\n private rects: IRect[] = [];\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n fBrowser: BrowserService\n ) {\n super();\n this.lineService = new LineService(fBrowser, this.hostElement);\n }\n\n public ngOnInit(): void {\n this.fDraggableDataContext.fLineAlignment = this;\n }\n\n public override initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void {\n this.size = this.flowHost.getBoundingClientRect();\n this.rects = [];\n const draggedNodeRects = currentNodes.map((x) => {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement));\n });\n this.draggedNodeRect = RectExtensions.union(draggedNodeRects) || RectExtensions.initialize();\n\n const allNodesExcludeCurrents = allNodes.filter((x) => {\n return !currentNodes.includes(x);\n });\n\n this.rects = allNodesExcludeCurrents.map((x) => {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement));\n });\n }\n\n public override handle(difference: IPoint): void {\n this.drawIntersectingLines(difference);\n }\n\n private drawIntersectingLines(difference: IPoint): void {\n const intersect = this.findNearestCoordinate(difference);\n if (intersect.xResult.value !== undefined) {\n this.lineService.drawVerticalLine(intersect.xResult.value, this.size, this.transform);\n } else {\n this.lineService.hideVerticalLine();\n }\n if (intersect.yResult.value !== undefined) {\n this.lineService.drawHorizontalLine(intersect.yResult.value, this.size, this.transform);\n } else {\n this.lineService.hideHorizontalLine();\n }\n }\n\n public findNearestCoordinate(difference: IPoint): ILineAlignmentResult {\n const rect = RectExtensions.addPoint(this.draggedNodeRect, difference);\n const finder = new NearestCoordinateFinder(this.rects, rect, this.fAlignThreshold);\n\n return { xResult: finder.findNearestCoordinateByX(), yResult: finder.findNearestCoordinateByY() };\n }\n\n public override complete(): void {\n this.lineService.hideVerticalLine();\n this.lineService.hideHorizontalLine();\n }\n}\n","import { FLineAlignmentComponent } from './f-line-alignment.component';\n\nexport const F_LINE_ALIGNMENT_PROVIDERS = [\n FLineAlignmentComponent\n];\n","import {\n Directive, ElementRef, Input,\n} from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport { IRect, ISize, RectExtensions, SizeExtensions } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { checkRectIsFinite, FMinimapData } from './domain';\nimport { GetNodesRectRequest } from '../domain';\n\n@Directive({\n selector: 'svg[fMinimapFlow]'\n})\nexport class FMinimapFlowDirective {\n\n public model: FMinimapData;\n\n @Input()\n public fMinSize: number = 1000;\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n public get hostElement(): SVGSVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGSVGElement>,\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore\n ) {\n this.model = new FMinimapData(this.hostElement);\n }\n\n public update(): void {\n const nodesRect = this.getProcessedNodesRect();\n const minimapRect = this.getMinimapRect();\n\n const scale = this.calculateViewScale(nodesRect, minimapRect);\n const viewBox = this.calculateViewBox(nodesRect, minimapRect, scale);\n this.model = new FMinimapData(this.hostElement, scale, viewBox);\n this.setViewBox(viewBox);\n }\n\n private getProcessedNodesRect(): IRect {\n const normalizedRect = this.normalizeRect(this.getNodesRect());\n return this.ensureMinimumSize(normalizedRect);\n }\n\n private getNodesRect(): IRect {\n const rect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize(0, 0, 0, 0);\n return RectExtensions.elementTransform(rect, this.flowHost)\n }\n\n private getMinimapRect(): IRect {\n return RectExtensions.elementTransform(RectExtensions.fromElement(this.hostElement), this.flowHost);\n }\n\n private normalizeRect(rect: IRect): IRect {\n return RectExtensions.div(rect, this.fComponentsStore.transform.scale);\n }\n\n private ensureMinimumSize(rect: IRect): IRect {\n return RectExtensions.initialize(\n rect.x - (Math.max(rect.width, this.fMinSize) - rect.width) / 2,\n rect.y - (Math.max(rect.height, this.fMinSize) - rect.height) / 2,\n Math.max(rect.width, this.fMinSize),\n Math.max(rect.height, this.fMinSize)\n );\n }\n\n private calculateViewScale(nodesRect: IRect, minimapRect: IRect): number {\n return Math.max(nodesRect.width / minimapRect.width, nodesRect.height / minimapRect.height);\n }\n\n private calculateViewBox(nodesRect: IRect, minimapRect: IRect, scale: number): IRect {\n return this.calculateCenteredViewBox(nodesRect, this.calculateViewSize(minimapRect, scale));\n }\n\n private calculateViewSize(minimapRect: IRect, scale: number): ISize {\n return SizeExtensions.initialize(minimapRect.width * scale || 0, minimapRect.height * scale || 0);\n }\n\n private calculateCenteredViewBox(nodesRect: IRect, viewSize: ISize): IRect {\n const centeredX = nodesRect.x - (viewSize.width - nodesRect.width) / 2;\n const centeredY = nodesRect.y - (viewSize.height - nodesRect.height) / 2;\n return RectExtensions.initialize(centeredX, centeredY, viewSize.width, viewSize.height);\n }\n\n private setViewBox(viewBox: IRect): void {\n viewBox = checkRectIsFinite(viewBox);\n this.hostElement.setAttribute('viewBox', `${ viewBox.x } ${ viewBox.y } ${ viewBox.width } ${ viewBox.height }`);\n }\n}\n","import {\n Directive, ElementRef,\n} from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport {\n IRect,\n RectExtensions\n} from '@foblex/2d';\nimport { FNodeBase, FNodeDirective } from '../f-node';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../domain';\nimport { checkRectIsFinite } from './domain';\n\n@Directive({\n selector: 'g[fMinimapCanvas]'\n})\nexport class FMinimapCanvasDirective {\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get flowScale(): number {\n return this.fComponentsStore.transform.scale;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n }\n\n public redraw(): void {\n this.clearCanvas();\n this.fComponentsStore.fNodes.forEach((x) => this.renderNode(x));\n }\n\n private clearCanvas(): void {\n this.hostElement.innerHTML = '';\n }\n\n private renderNode(node: FNodeBase): void {\n const element = createSVGElement('rect', this.fBrowser);\n this.configureNodeElement(element, node);\n this.hostElement.appendChild(element);\n }\n\n private configureNodeElement(element: SVGRectElement, node: FNodeBase): void {\n this.setElementAttributes(element, this.getNodeRect(node));\n this.applyClassList(element, node, node instanceof FNodeDirective);\n }\n\n private getNodeRect(node: FNodeBase): IRect {\n const nodeRectInFlow = RectExtensions.elementTransform(RectExtensions.fromElement(node.hostElement), this.flowHost);\n return RectExtensions.div(nodeRectInFlow, this.flowScale);\n }\n\n private setElementAttributes(element: SVGRectElement, rect: IRect): void {\n rect = checkRectIsFinite(rect);\n element.setAttribute('x', rect.x.toString());\n element.setAttribute('y', rect.y.toString());\n element.setAttribute('width', rect.width.toString());\n element.setAttribute('height', rect.height.toString());\n }\n\n private applyClassList(element: SVGRectElement, node: FNodeBase, isNode: boolean): void {\n element.classList.add('f-component', isNode ? 'f-minimap-node' : 'f-minimap-group');\n if (node.isSelected()) {\n element.classList.add('f-selected');\n }\n }\n}\n","import { Directive, ElementRef } from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { checkRectIsFinite } from './domain';\n\n@Directive({\n selector: 'rect[fMinimapView]',\n host: {\n 'class': 'f-component f-minimap-view',\n }\n})\nexport class FMinimapViewDirective {\n\n public get hostElement(): SVGRectElement {\n return this.elementReference.nativeElement;\n }\n\n private get flowScale(): number {\n return this.fComponentsStore!.transform!.scale!;\n }\n\n constructor(\n private elementReference: ElementRef<SVGRectElement>,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public update(): void {\n const viewBox = RectExtensions.div(RectExtensions.fromElement(this.fComponentsStore.flowHost), this.flowScale);\n this.setAttributes(viewBox);\n }\n\n private setAttributes(viewBox: IRect): void {\n viewBox = checkRectIsFinite(viewBox);\n this.hostElement.setAttribute('x', '0');\n this.hostElement.setAttribute('y', '0');\n this.hostElement.setAttribute('width', viewBox.width.toString());\n this.hostElement.setAttribute('height', viewBox.height.toString());\n }\n}\n","import {\n AfterViewInit, ChangeDetectionStrategy, Component,\n ElementRef, Input, OnDestroy, ViewChild,\n} from \"@angular/core\";\nimport { FMediator } from '@foblex/mediator';\nimport { Observable, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { SubscribeOnTransformChangesRequest } from '../domain';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { MinimapDragFinalizeRequest, MinimapDragPreparationRequest } from './domain';\n\n@Component({\n selector: 'f-minimap',\n templateUrl: './f-minimap.component.html',\n styleUrls: [ './f-minimap.component.scss' ],\n exportAs: 'fComponent',\n host: {\n 'class': 'f-component f-minimap',\n },\n providers: [\n { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FMinimapComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FMinimapComponent implements AfterViewInit, OnDestroy, IFDragAndDropPlugin {\n\n private subscriptions$: Subscription = new Subscription();\n\n @ViewChild(FMinimapCanvasDirective, { static: true })\n public fMinimapCanvas!: FMinimapCanvasDirective;\n\n @ViewChild(FMinimapFlowDirective, { static: true })\n public fMinimapFlow!: FMinimapFlowDirective;\n\n @ViewChild(FMinimapViewDirective, { static: true })\n public fMinimapView!: FMinimapViewDirective;\n\n @Input()\n public fMinSize: number = 1000;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FMediator\n ) {\n }\n\n public ngAfterViewInit(): void {\n this.subscriptions$.add(this.subscribeOnTransformChanges());\n }\n\n private subscribeOnTransformChanges(): Subscription {\n return this.getTransformChanges().pipe(debounceTime(5)).subscribe(() => {\n this.fMinimapFlow.update();\n this.fMinimapView.update();\n this.fMinimapCanvas.redraw();\n });\n }\n\n private getTransformChanges(): Observable<void> {\n return this.fMediator.send<Observable<void>>(new SubscribeOnTransformChangesRequest());\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this.fMediator.send(new MinimapDragPreparationRequest(event, this.fMinimapFlow.model));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this.fMediator.send(new MinimapDragFinalizeRequest(event));\n }\n\n public ngOnDestroy(): void {\n this.subscriptions$.unsubscribe();\n }\n}\n","<svg fMinimapFlow width=\"100%\" height=\"100%\" fLockedContext [fMinSize]=\"fMinSize\">\n <g fMinimapCanvas></g>\n <rect fMinimapView x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" stroke=\"none\"/>\n</svg>\n\n","import { FMinimapComponent } from './f-minimap.component';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\n\nexport const F_MINIMAP_PROVIDERS = [\n\n FMinimapComponent,\n\n FMinimapCanvasDirective,\n\n FMinimapViewDirective,\n\n FMinimapFlowDirective,\n];\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_FLOW = new InjectionToken<FFlowBase>('F_FLOW');\n\nexport abstract class FFlowBase implements IHasHostElement {\n\n public abstract fFlowId: string;\n\n public abstract hostElement: HTMLElement;\n\n public abstract fLoaded: EventEmitter<void>;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ElementRef, EventEmitter,\n Input, OnDestroy, OnInit, Output\n} from '@angular/core';\nimport { F_FLOW, FFlowBase } from './f-flow-base';\nimport { Subscription } from 'rxjs';\nimport { startWith, debounceTime } from 'rxjs/operators';\nimport {\n ClearSelectionRequest,\n GetScaledNodeRectsWithFlowPositionRequest,\n GetPositionInFlowRequest,\n GetSelectionRequest,\n RedrawConnectionsRequest,\n SelectAllRequest,\n SelectRequest,\n SortItemLayersRequest,\n IFFlowState,\n GetFlowStateRequest\n} from '../domain';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport {\n FDraggableDataContext, FSelectionChangeEvent\n} from '../f-draggable';\nimport { FConnectionFactory } from '../f-connection';\nimport { FComponentsStore, FTransformStore } from '../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { COMMON_PROVIDERS } from '../domain';\nimport { F_DRAGGABLE_PROVIDERS } from '../f-draggable';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: 'f-flow',\n templateUrl: './f-flow.component.html',\n styleUrls: [ './f-flow.component.scss' ],\n host: {\n '[attr.id]': 'fFlowId',\n class: \"f-component f-flow\",\n },\n providers: [\n FMediator,\n FComponentsStore,\n FTransformStore,\n FDraggableDataContext,\n FConnectionFactory,\n ...COMMON_PROVIDERS,\n ...F_DRAGGABLE_PROVIDERS,\n { provide: F_FLOW, useExisting: FFlowComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FFlowComponent extends FFlowBase implements OnInit, AfterContentInit, OnDestroy {\n\n private subscription$: Subscription = new Subscription();\n\n @Input()\n public override fFlowId: string = `f-flow-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Output()\n public override fLoaded: EventEmitter<void> = new EventEmitter<void>();\n\n private isLoaded: boolean = false;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fFlow = this;\n }\n\n public ngAfterContentInit(): void {\n if (!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscription$.add(\n this.subscribeOnElementsChanges()\n );\n this.subscription$.add(\n this.subscribeOnComponentsCountChanges()\n );\n }\n\n private subscribeOnComponentsCountChanges(): Subscription {\n return this.fComponentsStore.componentsCount$.pipe(startWith(null), debounceTime(1)).subscribe(() => {\n this.fMediator.send(new SortItemLayersRequest());\n });\n }\n\n private subscribeOnElementsChanges(): Subscription {\n return this.fComponentsStore.componentsData$.pipe(startWith(null), debounceTime(1)).subscribe(() => {\n this.fMediator.send(new RedrawConnectionsRequest());\n\n if (!this.isLoaded) {\n this.isLoaded = true;\n this.fLoaded.emit();\n }\n });\n }\n\n public redraw(): void {\n this.fComponentsStore.componentDataChanged();\n }\n\n public reset(): void {\n this.isLoaded = false;\n }\n\n public getAllNodesRect(): IRect | null {\n return this.fMediator.send<IRect | null>(new GetScaledNodeRectsWithFlowPositionRequest());\n }\n\n public getSelection(): FSelectionChangeEvent {\n return this.fMediator.send<FSelectionChangeEvent>(new GetSelectionRequest());\n }\n\n public getPositionInFlow(position: IPoint): IRect {\n return this.fMediator.send(new GetPositionInFlowRequest(position));\n }\n\n public getState(): IFFlowState {\n return this.fMediator.send(new GetFlowStateRequest());\n }\n\n public selectAll(): void {\n this.fMediator.send<void>(new SelectAllRequest());\n }\n\n public select(nodes: string[], connections: string[]): void {\n this.fMediator.send<void>(new SelectRequest(nodes, connections));\n }\n\n public clearSelection(): void {\n this.fMediator.send<void>(new ClearSelectionRequest());\n }\n\n public ngOnDestroy(): void {\n this.subscription$.unsubscribe();\n }\n}\n","<ng-container>\n <ng-content select=\"[fDefinitions]\"></ng-content>\n\n <ng-content select=\"f-background\"></ng-content>\n\n <ng-content select=\"f-line-alignment\"></ng-content>\n\n <ng-content select=\"f-canvas\"></ng-content>\n\n <ng-content select=\"f-selection-area\"></ng-content>\n\n <ng-content select=\"f-minimap\"></ng-content>\n</ng-container>\n","import { FFlowComponent } from './f-flow.component';\n\nexport const F_FLOW_PROVIDERS = [\n FFlowComponent\n];\n","import { EventExtensions } from '@foblex/drag-toolkit';\nimport { IPoint, Point, RectExtensions } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { FCanvasBase } from '../f-canvas';\nimport { FComponentsStore } from '../f-storage';\nimport { isNode } from '../f-node';\n\nexport const F_ZOOM = new InjectionToken<FZoomBase>('F_ZOOM');\n\nexport abstract class FZoomBase {\n\n protected isEnabled: boolean = false;\n\n public abstract minimum: number;\n public abstract maximum: number;\n\n public abstract step: number;\n public abstract dblClickStep: number;\n\n private listeners: Function = EventExtensions.emptyListener();\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get fCanvas(): FCanvasBase {\n return this.fComponentsStore.fCanvas as FCanvasBase;\n }\n\n protected constructor(\n protected fComponentsStore: FComponentsStore\n ) {\n }\n\n protected toggleZoom(): void {\n if (this.isEnabled) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n\n private subscribe(): void {\n this.listeners();\n if (!this.flowHost) {\n return;\n }\n\n this.flowHost.addEventListener('wheel', this.onWheel.bind(this));\n this.flowHost.addEventListener('dblclick', this.onDoubleClick.bind(this));\n this.listeners = () => {\n this.flowHost.removeEventListener('wheel', this.onWheel.bind(this));\n this.flowHost.removeEventListener('dblclick', this.onDoubleClick.bind(this));\n };\n }\n\n public getScale(): number {\n return this.fCanvas.transform.scale || 1;\n }\n\n private onWheel(event: WheelEvent): void {\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (this.fComponentsStore.fDraggable?.isDragStarted || targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n let result: number = this.getScale();\n\n const direction = event.deltaY > 0 ? -1 : 1;\n const step = this.step;\n result = result + step * direction;\n\n result = Math.max(this.minimum, Math.min(result, this.maximum));\n\n const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);\n\n this.fCanvas.setZoom(result, pointerPositionInFlow);\n this.fCanvas.redraw();\n this.fCanvas.emitCanvasChangeEvent();\n }\n\n private onDoubleClick(event: MouseEvent): void {\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (this.fComponentsStore.fDraggable?.isDragStarted || isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n let result: number = this.getScale();\n\n const direction = 1;\n const step = this.dblClickStep;\n result = result + step * direction;\n\n result = Math.max(this.minimum, Math.min(result, this.maximum));\n\n const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);\n this.fCanvas.setZoom(result, pointerPositionInFlow);\n this.fCanvas.redrawWithAnimation();\n this.fCanvas.emitCanvasChangeEvent();\n }\n\n private onZoomToCenter(deltaY: number, position?: IPoint): void {\n const preventDefault = () => {\n };\n const rect = RectExtensions.fromElement(this.flowHost);\n\n this.onWheel({\n deltaY, preventDefault, clientX: position?.x || rect.gravityCenter.x, clientY: position?.y || rect.gravityCenter.y\n } as WheelEvent);\n }\n\n public zoomIn(position?: IPoint): void {\n this.onZoomToCenter(-1, position);\n }\n\n public zoomOut(position?: IPoint): void {\n this.onZoomToCenter(1, position);\n }\n\n public reset(): void {\n this.fCanvas.resetZoom();\n this.fCanvas.redraw();\n this.fCanvas.emitCanvasChangeEvent();\n }\n\n protected unsubscribe(): void {\n this.listeners();\n this.listeners = EventExtensions.emptyListener();\n }\n}\n","import {\n AfterViewInit,\n Directive, Input, OnDestroy\n} from \"@angular/core\";\nimport { F_ZOOM, FZoomBase } from './f-zoom-base';\nimport { FComponentsStore } from '../f-storage';\nimport { castToBoolean } from '@foblex/utils';\n\n@Directive({\n selector: \"f-canvas[fZoom]\",\n exportAs: 'fComponent',\n host: {\n 'class': 'f-zoom f-component'\n },\n providers: [ { provide: F_ZOOM, useExisting: FZoomDirective } ],\n})\nexport class FZoomDirective extends FZoomBase implements AfterViewInit, OnDestroy {\n\n @Input('fZoom')\n public get fFlowZoom(): boolean {\n return this.isEnabled;\n }\n\n public set fFlowZoom(isEnabled: boolean | undefined | string) {\n const value = castToBoolean(isEnabled);\n if (value !== this.isEnabled) {\n this.isEnabled = value;\n this.toggleZoom();\n }\n }\n\n @Input('fZoomMinimum')\n public override minimum: number = 0.1;\n\n @Input('fZoomMaximum')\n public override maximum: number = 4;\n\n @Input('fZoomStep')\n public override step: number = 0.1;\n\n @Input('fZoomDblClickStep')\n public override dblClickStep: number = 0.5;\n\n constructor(\n fComponentsStore: FComponentsStore,\n ) {\n super(fComponentsStore);\n }\n\n public ngAfterViewInit(): void {\n super.toggleZoom();\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n }\n}\n","import { FZoomDirective } from './f-zoom.directive';\n\nexport const F_ZOOM_PROVIDERS = [\n\n FZoomDirective\n];\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { F_CONNECTION_PROVIDERS, } from './f-connection';\nimport { F_NODE_PROVIDERS } from './f-node';\nimport { F_FLOW_PROVIDERS } from './f-flow';\nimport { F_BACKGROUND_PROVIDERS } from './f-backgroud';\nimport { F_CANVAS_PROVIDERS } from './f-canvas';\nimport { F_CONNECTORS_PROVIDERS } from './f-connectors';\nimport { FDraggableDirective } from './f-draggable';\nimport { F_EXTERNAL_ITEM_PROVIDERS } from './f-external-item';\nimport { F_SELECTION_AREA_PROVIDERS } from './f-selection-area';\nimport { F_LINE_ALIGNMENT_PROVIDERS } from './f-line-alignment';\nimport { F_MINIMAP_PROVIDERS } from './f-minimap';\nimport { F_ZOOM_PROVIDERS } from './f-zoom';\n\n@NgModule({\n declarations: [\n ...F_BACKGROUND_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n ...F_FLOW_PROVIDERS,\n ...F_LINE_ALIGNMENT_PROVIDERS,\n ...F_MINIMAP_PROVIDERS,\n ...F_NODE_PROVIDERS,\n ...F_SELECTION_AREA_PROVIDERS,\n\n FDraggableDirective,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n ...F_BACKGROUND_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n ...F_FLOW_PROVIDERS,\n ...F_LINE_ALIGNMENT_PROVIDERS,\n ...F_MINIMAP_PROVIDERS,\n ...F_NODE_PROVIDERS,\n ...F_SELECTION_AREA_PROVIDERS,\n\n FDraggableDirective,\n ]\n})\nexport class FFlowModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["InjectionToken","Subject","i0","Injectable","CreateConnectionMarkersExecution","createSVGElement","normalizeDomElementId","i1","i2.FComponentsStore","FExecutionRegister","CreateRoundedRectFromElementExecution","RoundedRect","RectExtensions","EmitTransformChangesExecution","i1.FTransformStore","uniqueId","AddPatternToBackgroundExecution","TransformModelExtensions","i1.FComponentsStore","i2","CenterGroupOrNodeExecution","PointExtensions","FitToFlowExecution","InputCanvasPositionExecution","InputCanvasScaleExecution","ResetScaleExecution","ResetScaleAndCenterExecution","UpdateScaleExecution","AddConnectionToStoreExecution","FindClosestInputUsingSnapThresholdExecution","GetElementRectInFlowExecution","Point","SizeExtensions","GetConnectorWithRectExecution","GetAllCanBeConnectedInputPositionsExecution","RemoveConnectionFromStoreExecution","CanvasMoveFinalizeExecution","i1.FDraggableDataContext","CanvasMoveFinalizeValidator","FValidatorRegister","CanvasMovePreparationExecution","i2.FDraggableDataContext","CanvasMovePreparationValidator","EFConnectableSide","Directive","EFResizeHandleType","castToEnum","Input","HostBinding","MIXIN_BASE","Observable","Subscription","EventEmitter","merge","debounceTime","startWith","i3","Output","castToBoolean","Inject","GetCanBeConnectedOutputByOutletExecution","GetCanBeConnectedOutputByOutletValidator","GetInputUnderPointerExecution","GetInputUnderPointerValidator","CreateConnectionFinalizeExecution","CreateConnectionFinalizeValidator","CreateConnectionDragHandlerExecution","CreateConnectionFromOutletPreparationExecution","CreateConnectionFromOutputPreparationExecution","CreateConnectionFromOutputPreparationValidator","CreateConnectionPreparationExecution","CreateConnectionPreparationValidator","ReassignConnectionFinalizeExecution","ReassignConnectionFinalizeValidator","_a","i1.FConnectionTextPathDirective","Component","ChangeDetectionStrategy","ViewChild","EFConnectionType","Optional","LineExtensions","i1.FConnectionFactory","EFConnectionBehavior","i3.FConnectionGradientComponent","i4.FConnectionSelectionComponent","i5.FConnectionPathComponent","i6.FConnectionDragHandleComponent","i7.FConnectionTextComponent","i8","ContentChildren","i4.FConnectionGradientComponent","i5.FConnectionSelectionComponent","i6.FConnectionPathComponent","i7.FConnectionDragHandleComponent","i8.FConnectionTextComponent","i9","EFMarkerType","ReassignConnectionPreparationExecution","i4","ReassignConnectionPreparationValidator","GetNodePaddingExecution","GetNormalizedNodeRectExecution","GetNormalizedParentNodeRectExecution","GetParentNodesExecution","IsArrayHasParentNodeExecution","i3.FConnectionBase","PutInputConnectionHandlersToArrayExecution","PutOutputConnectionHandlersToArrayExecution","GetNodeMoveRestrictionsExecution","CreateMoveNodesDragModelFromSelectionExecution","flatMap","NodeMovePreparationExecution","NodeMovePreparationValidator","isClosestElementHasClass","NodeMoveFinalizeExecution","NodeMoveFinalizeValidator","OFFSET","ApplyChildResizeRestrictionsExecution","ApplyParentResizeRestrictionsExecution","CalculateChangedPositionExecution","CalculateChangedSizeExecution","GetNormalizedChildrenNodesRectExecution","GetNodeResizeRestrictionsExecution","NodeResizeFinalizeExecution","NodeResizeFinalizeValidator","NodeResizePreparationExecution","getDataAttrValueFromClosestElementWithClass","NodeResizePreparationValidator","SingleSelectExecution","EOperationSystem","i3.FDraggableDataContext","SingleSelectValidator","DragAndDropBase","ExternalItemFinalizeExecution","deepCloneNode","ExternalItemFinalizeValidator","ExternalItemPreparationExecution","i3.FExternalItemService","ExternalItemPreparationValidator","i1.FExternalItemService","NgZone","CalculateFlowPointFromMinimapPointExecution","MinimapDragFinalizeExecution","MinimapDragFinalizeValidator","MinimapDragPreparationExecution","MinimapDragPreparationValidator","SelectionAreaFinalizeExecution","SelectionAreaFinalizeValidator","SelectionAreaPreparationExecution","SelectionAreaPreparationValidator","ClearSelectionExecution","GetSelectionExecution","SelectExecution","SelectAllExecution","MoveFrontElementsBeforeTargetElementExecution","GetDeepChildrenNodesAndGroupsExecution","UpdateItemAndChildrenLayersExecution","SelectAndUpdateNodeLayerExecution","GetCanBeSelectedItemsExecution","GetConnectionLineExecution","GetIntersections","Line","GetFlowStateConnectionsExecution","GetFlowStateNodesExecution","GetFlowStateExecution","GetScaledNodeRectsWithFlowPositionExecution","GetNodesRectExecution","GetPositionInFlowExecution","IsConnectionUnderNodeExecution","RedrawConnectionsExecution","ShowConnectionsAfterCalculationsExecution","SortNodeLayersExecution","SortItemsByParentExecution","SortItemLayersExecution","SubscribeOnTransformChangesExecution","ContentChild","i2.FMinimapFlowDirective","i3.FMinimapCanvasDirective","i4.FMinimapViewDirective","FMediator","EventExtensions","i1.FBackgroundComponent","i2.FRectPatternComponent","i3.FCirclePatternComponent","i4.FCanvasComponent","i5.FZoomDirective","i6.FConnectionTextComponent","i7.FConnectionTextPathDirective","i8.FConnectionDragHandleComponent","i9.FConnectionGradientComponent","i10.FConnectionPathComponent","i11.FConnectionSelectionComponent","i12.FConnectionComponent","i13.FConnectionCenterDirective","i14.FConnectionForCreateComponent","i15.FMarkerDirective","i16.FSnapConnectionComponent","i17.FNodeInputDirective","i18.FNodeOutletDirective","i19.FNodeOutputDirective","i20.FExternalItemDirective","i21.FFlowComponent","i22.FLineAlignmentComponent","i23.FMinimapComponent","i24.FMinimapCanvasDirective","i25.FMinimapViewDirective","i26.FMinimapFlowDirective","i27.FGroupDirective","i28.FNodeDirective","i29.FDragHandleDirective","i30.FResizeHandleDirective","i31.FSelectionAreaComponent","CommonModule","NgModule"],"mappings":"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"}