@foblex/flow 12.6.3 → 12.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/foblex-flow.umd.js +3320 -3399
- package/bundles/foblex-flow.umd.js.map +1 -1
- package/domain/center-group-or-node/center-group-or-node-request.d.ts +5 -0
- package/domain/center-group-or-node/center-group-or-node.execution.d.ts +17 -0
- package/domain/center-group-or-node/index.d.ts +2 -0
- package/domain/clear-selection/clear-selection.execution.d.ts +1 -1
- package/domain/constants.d.ts +1 -0
- package/domain/create-connection-markers/create-connection-markers.execution.d.ts +1 -1
- package/domain/create-rounded-rect-from-element/create-rounded-rect-from-element-request.d.ts +4 -0
- package/domain/create-rounded-rect-from-element/create-rounded-rect-from-element.execution.d.ts +15 -0
- package/domain/create-rounded-rect-from-element/index.d.ts +2 -0
- package/domain/emit-transform-changes/emit-transform-changes.execution.d.ts +1 -1
- package/domain/get-can-be-selected-items/get-can-be-selected-items.execution.d.ts +2 -2
- package/domain/get-can-be-selected-items/i-selectable-with-rect.d.ts +3 -3
- package/domain/get-connection-line/get-connection-line.execution.d.ts +2 -2
- package/domain/get-connection-line/get-connection-line.request.d.ts +4 -4
- package/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.d.ts +1 -1
- package/domain/get-element-rect-in-flow/get-element-rect-in-flow.execution.d.ts +4 -5
- package/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.d.ts +2 -0
- package/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.d.ts +12 -0
- package/domain/get-flow-state/get-flow-state-connections/index.d.ts +2 -0
- package/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.d.ts +5 -0
- package/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.d.ts +14 -0
- package/domain/get-flow-state/get-flow-state-nodes/index.d.ts +2 -0
- package/domain/get-flow-state/get-flow-state.execution.d.ts +14 -0
- package/domain/get-flow-state/get-flow-state.request.d.ts +2 -0
- package/domain/get-flow-state/i-f-flow-state-connection.d.ts +9 -0
- package/domain/get-flow-state/i-f-flow-state-connector.d.ts +5 -0
- package/domain/get-flow-state/i-f-flow-state-node.d.ts +11 -0
- package/domain/get-flow-state/i-f-flow-state.d.ts +10 -0
- package/domain/get-flow-state/index.d.ts +9 -0
- package/domain/get-flow-state/providers.d.ts +4 -0
- package/domain/get-input-rect-in-flow/get-input-rect-in-flow-response.d.ts +1 -1
- package/domain/get-input-rect-in-flow/get-input-rect-in-flow.execution.d.ts +2 -2
- package/domain/get-nodes-rect/get-nodes-rect.execution.d.ts +2 -2
- package/domain/get-output-rect-in-flow/get-output-rect-in-flow-response.d.ts +1 -1
- package/domain/get-output-rect-in-flow/get-output-rect-in-flow.execution.d.ts +2 -2
- package/domain/get-position-in-flow/get-position-in-flow-request.d.ts +1 -1
- package/domain/get-position-in-flow/get-position-in-flow.execution.d.ts +2 -2
- package/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.execution.d.ts +2 -2
- package/domain/get-selection/get-selection.execution.d.ts +1 -1
- package/domain/i-map.d.ts +3 -0
- package/domain/index.d.ts +6 -5
- package/domain/is-connection-under-node/is-connection-under-node.execution.d.ts +2 -2
- package/domain/providers.d.ts +4 -1
- package/domain/redraw-connections/redraw-connections.execution.d.ts +2 -2
- package/domain/select/select.execution.d.ts +1 -1
- package/domain/select-all/select-all.execution.d.ts +1 -1
- package/domain/select-and-update-node-layer/select-and-update-node-layer.execution.d.ts +3 -3
- package/domain/show-connections-after-calculations/index.d.ts +2 -0
- package/domain/show-connections-after-calculations/show-connections-after-calculations-request.d.ts +2 -0
- package/domain/show-connections-after-calculations/show-connections-after-calculations.execution.d.ts +11 -0
- package/domain/sort-item-layers/sort-item-layers.execution.d.ts +2 -2
- package/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.d.ts +2 -2
- package/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.d.ts +2 -2
- package/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.execution.d.ts +1 -1
- package/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.d.ts +1 -1
- package/domain/update-item-and-children-layers/update-item-and-children-layers.execution.d.ts +2 -2
- package/domain/update-item-and-children-layers/update-item-and-children-layers.request.d.ts +3 -3
- package/esm2015/domain/center-group-or-node/center-group-or-node-request.js +7 -0
- package/esm2015/domain/center-group-or-node/center-group-or-node.execution.js +51 -0
- package/esm2015/domain/center-group-or-node/index.js +3 -0
- package/esm2015/domain/clear-selection/clear-selection.execution.js +2 -2
- package/esm2015/domain/constants.js +2 -0
- package/esm2015/domain/create-connection-markers/create-connection-markers.execution.js +4 -9
- package/esm2015/domain/create-rounded-rect-from-element/create-rounded-rect-from-element-request.js +6 -0
- package/esm2015/domain/create-rounded-rect-from-element/create-rounded-rect-from-element.execution.js +39 -0
- package/esm2015/domain/create-rounded-rect-from-element/index.js +3 -0
- package/esm2015/domain/emit-transform-changes/emit-transform-changes.execution.js +2 -2
- package/esm2015/domain/get-can-be-selected-items/get-can-be-selected-items.execution.js +6 -6
- package/esm2015/domain/get-can-be-selected-items/i-selectable-with-rect.js +1 -1
- package/esm2015/domain/get-connection-line/get-connection-line.execution.js +5 -6
- package/esm2015/domain/get-connection-line/get-connection-line.request.js +1 -1
- package/esm2015/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.js +2 -2
- package/esm2015/domain/get-element-rect-in-flow/get-element-rect-in-flow.execution.js +10 -10
- package/esm2015/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.js +3 -0
- package/esm2015/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.js +33 -0
- package/esm2015/domain/get-flow-state/get-flow-state-connections/index.js +3 -0
- package/esm2015/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.js +6 -0
- package/esm2015/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.js +50 -0
- package/esm2015/domain/get-flow-state/get-flow-state-nodes/index.js +3 -0
- package/esm2015/domain/get-flow-state/get-flow-state.execution.js +39 -0
- package/esm2015/domain/get-flow-state/get-flow-state.request.js +3 -0
- package/esm2015/domain/get-flow-state/i-f-flow-state-connection.js +2 -0
- package/esm2015/domain/get-flow-state/i-f-flow-state-connector.js +2 -0
- package/esm2015/domain/get-flow-state/i-f-flow-state-node.js +2 -0
- package/esm2015/domain/get-flow-state/i-f-flow-state.js +2 -0
- package/esm2015/domain/get-flow-state/index.js +10 -0
- package/esm2015/domain/get-flow-state/providers.js +9 -0
- package/esm2015/domain/get-input-rect-in-flow/get-input-rect-in-flow-response.js +1 -1
- package/esm2015/domain/get-input-rect-in-flow/get-input-rect-in-flow.execution.js +5 -5
- package/esm2015/domain/get-nodes-rect/get-nodes-rect.execution.js +3 -3
- package/esm2015/domain/get-output-rect-in-flow/get-output-rect-in-flow-response.js +1 -1
- package/esm2015/domain/get-output-rect-in-flow/get-output-rect-in-flow.execution.js +5 -5
- package/esm2015/domain/get-position-in-flow/get-position-in-flow-request.js +1 -1
- package/esm2015/domain/get-position-in-flow/get-position-in-flow.execution.js +3 -3
- package/esm2015/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.execution.js +3 -3
- package/esm2015/domain/get-selection/get-selection.execution.js +2 -2
- package/esm2015/domain/i-map.js +2 -0
- package/esm2015/domain/index.js +7 -6
- package/esm2015/domain/is-connection-under-node/is-connection-under-node.execution.js +5 -5
- package/esm2015/domain/providers.js +9 -1
- package/esm2015/domain/redraw-connections/redraw-connections.execution.js +5 -5
- package/esm2015/domain/select/select.execution.js +2 -2
- package/esm2015/domain/select-all/select-all.execution.js +2 -2
- package/esm2015/domain/select-and-update-node-layer/select-and-update-node-layer.execution.js +5 -5
- package/esm2015/domain/show-connections-after-calculations/index.js +3 -0
- package/esm2015/domain/show-connections-after-calculations/show-connections-after-calculations-request.js +3 -0
- package/esm2015/domain/show-connections-after-calculations/show-connections-after-calculations.execution.js +26 -0
- package/esm2015/domain/sort-item-layers/sort-item-layers.execution.js +5 -5
- package/esm2015/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.js +5 -5
- package/esm2015/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.js +5 -5
- package/esm2015/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.execution.js +2 -2
- package/esm2015/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.js +2 -2
- package/esm2015/domain/update-item-and-children-layers/update-item-and-children-layers.execution.js +5 -5
- package/esm2015/domain/update-item-and-children-layers/update-item-and-children-layers.request.js +1 -1
- package/esm2015/f-backgroud/domain/i-f-background-pattern.js +1 -1
- package/esm2015/f-backgroud/f-background-base.js +1 -1
- package/esm2015/f-backgroud/f-background.component.js +2 -2
- package/esm2015/f-backgroud/f-circle-pattern/f-circle-pattern.component.js +2 -2
- package/esm2015/f-backgroud/f-rect-pattern/f-rect-pattern.component.js +2 -2
- package/esm2015/f-canvas/domain/f-canvas-change.event.js +1 -1
- package/esm2015/f-canvas/f-canvas-base.js +3 -2
- package/esm2015/f-canvas/f-canvas.component.js +18 -9
- package/esm2015/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.js +1 -1
- package/esm2015/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points.handler.js +2 -2
- package/esm2015/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.js +1 -1
- package/esm2015/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.js +1 -1
- package/esm2015/f-connection/common/domain/f-bezier.path-builder.js +1 -1
- package/esm2015/f-connection/common/domain/f-segment.path-builder.js +2 -2
- package/esm2015/f-connection/common/f-connection-base.js +10 -4
- package/esm2015/f-connection/common/f-connection-identifiers.js +6 -11
- package/esm2015/f-connection/common/f-connection-text/f-connection-text-path.directive.js +1 -1
- package/esm2015/f-connection/common/f-connection-text/f-connection-text.component.js +2 -2
- package/esm2015/f-connection/common/f-connection-text/i-connection-text.js +1 -1
- package/esm2015/f-connection/common/f-drag-handle/f-connection-drag-handle.component.js +1 -1
- package/esm2015/f-connection/common/f-gradient/f-connection-gradient.component.js +2 -2
- package/esm2015/f-connection/common/f-gradient/i-connection-gradient.js +1 -1
- package/esm2015/f-connection/common/f-path/get-path-marker-id.js +6 -11
- package/esm2015/f-connection/common/f-path/i-connection-path.js +1 -1
- package/esm2015/f-connection/common/f-selection/f-connection-selection.component.js +1 -1
- package/esm2015/f-connection/common/index.js +1 -2
- package/esm2015/f-connection/f-connection/f-connection.component.js +3 -3
- package/esm2015/f-connection/f-connection-builder/f-connection-factory.js +1 -1
- package/esm2015/f-connection/f-connection-builder/i-f-connection-builder-request.js +1 -1
- package/esm2015/f-connection/f-connection-builder/i-f-connection-builder-response.js +1 -1
- package/esm2015/f-connection/f-connection-builder/i-f-connection-builder.js +1 -1
- package/esm2015/f-connection/f-connection-for-create/f-connection-for-create.component.js +4 -7
- package/esm2015/f-connection/f-marker/f-marker-base.js +1 -1
- package/esm2015/f-connection/f-snap-connection/f-snap-connection.component.js +139 -0
- package/esm2015/f-connection/f-snap-connection/index.js +2 -0
- package/esm2015/f-connection/index.js +2 -1
- package/esm2015/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.js +2 -2
- package/esm2015/f-connectors/f-connector-base.js +1 -1
- package/esm2015/f-connectors/f-node-input/f-node-input.directive.js +3 -4
- package/esm2015/f-connectors/f-node-outlet/f-node-outlet.directive.js +3 -3
- package/esm2015/f-connectors/f-node-output/f-node-output.directive.js +3 -4
- package/esm2015/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.js +2 -2
- package/esm2015/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.request.js +1 -1
- package/esm2015/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.validator.js +2 -2
- package/esm2015/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.js +3 -3
- package/esm2015/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.request.js +1 -1
- package/esm2015/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.js +2 -7
- package/esm2015/f-draggable/canvas/canvas.drag-handler.js +2 -2
- package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.js +5 -5
- package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.request.js +1 -1
- package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.validator.js +2 -2
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.js +6 -6
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.js +1 -1
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.js +5 -5
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.js +1 -1
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.js +5 -5
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.js +1 -1
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.js +2 -2
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.js +5 -5
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.js +1 -1
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.js +2 -2
- package/esm2015/f-draggable/connections/create-connection/create-connection.drag-handler.js +3 -3
- package/esm2015/f-draggable/connections/create-connection/f-create-connection.event.js +1 -1
- package/esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.js +2 -2
- package/esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.js +2 -2
- package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.js +2 -2
- package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.js +1 -1
- package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.js +2 -2
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.js +5 -5
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.request.js +1 -1
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.validator.js +2 -2
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.js +6 -6
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.js +1 -1
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.js +2 -2
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.js +3 -3
- package/esm2015/f-draggable/domain/get-node-padding/get-node-padding.execution.js +2 -2
- package/esm2015/f-draggable/domain/get-node-padding/get-node-padding.request.js +1 -1
- package/esm2015/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.js +3 -3
- package/esm2015/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.js +6 -6
- package/esm2015/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.js +2 -2
- package/esm2015/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.js +5 -5
- package/esm2015/f-draggable/f-draggable-base.js +6 -166
- package/esm2015/f-draggable/f-draggable-data-context.js +2 -2
- package/esm2015/f-draggable/f-draggable.directive.js +8 -13
- package/esm2015/f-draggable/i-draggable-item.js +1 -1
- package/esm2015/f-draggable/i-f-drag-and-drop-plugin.js +1 -1
- package/esm2015/f-draggable/index.js +1 -2
- package/esm2015/f-draggable/node/connection-base-drag-handler.js +6 -5
- package/esm2015/f-draggable/node/connection-source.drag-handler.js +1 -1
- package/esm2015/f-draggable/node/connection-target.drag-handler.js +1 -1
- package/esm2015/f-draggable/node/connection.drag-handler.js +1 -1
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.js +8 -13
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.js +6 -6
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/i-node-move-restrictions.js +1 -1
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.js +5 -5
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.js +5 -5
- package/esm2015/f-draggable/node/node-move-finalize/node-move-finalize.execution.js +6 -6
- package/esm2015/f-draggable/node/node-move-finalize/node-move-finalize.request.js +1 -1
- package/esm2015/f-draggable/node/node-move-finalize/node-move-finalize.validator.js +2 -2
- package/esm2015/f-draggable/node/node-move-preparation/node-move-preparation.execution.js +6 -6
- package/esm2015/f-draggable/node/node-move-preparation/node-move-preparation.request.js +1 -1
- package/esm2015/f-draggable/node/node-move-preparation/node-move-preparation.validator.js +4 -4
- package/esm2015/f-draggable/node/node-resize-by-child.drag-handler.js +3 -2
- package/esm2015/f-draggable/node/node.drag-handler.js +2 -2
- package/esm2015/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.js +2 -2
- package/esm2015/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.js +1 -1
- package/esm2015/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.js +2 -2
- package/esm2015/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.js +1 -1
- package/esm2015/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.js +3 -3
- package/esm2015/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.request.js +1 -1
- package/esm2015/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.js +3 -3
- package/esm2015/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.request.js +1 -1
- package/esm2015/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.js +5 -5
- package/esm2015/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.js +1 -1
- package/esm2015/f-draggable/node-resize/get-node-resize-restrictions/i-node-resize-restrictions.js +1 -1
- package/esm2015/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.js +6 -6
- package/esm2015/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.js +1 -1
- package/esm2015/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.js +2 -2
- package/esm2015/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.request.js +1 -1
- package/esm2015/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.validator.js +2 -2
- package/esm2015/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.js +9 -8
- package/esm2015/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.request.js +1 -1
- package/esm2015/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.js +4 -4
- package/esm2015/f-draggable/node-resize/node-resize.drag-handler.js +2 -2
- package/esm2015/f-draggable/single-select/single-select.execution.js +5 -5
- package/esm2015/f-draggable/single-select/single-select.request.js +1 -1
- package/esm2015/f-draggable/single-select/single-select.validator.js +2 -2
- package/esm2015/f-external-item/domain/external-item-finalize/external-item-finalize.execution.js +5 -5
- package/esm2015/f-external-item/domain/external-item-finalize/external-item-finalize.request.js +1 -1
- package/esm2015/f-external-item/domain/external-item-finalize/external-item-finalize.validator.js +2 -2
- package/esm2015/f-external-item/domain/external-item-preparation/external-item-preparation.execution.js +3 -3
- package/esm2015/f-external-item/domain/external-item-preparation/external-item-preparation.request.js +1 -1
- package/esm2015/f-external-item/domain/external-item-preparation/external-item-preparation.validator.js +2 -2
- package/esm2015/f-external-item/domain/external-item.drag-handler.js +3 -3
- package/esm2015/f-external-item/domain/f-create-node.event.js +1 -1
- package/esm2015/f-external-item/f-external-item-base.js +1 -1
- package/esm2015/f-flow/f-flow-base.js +1 -1
- package/esm2015/f-flow/f-flow.component.js +13 -11
- package/esm2015/f-line-alignment/domain/line-service.js +1 -1
- package/esm2015/f-line-alignment/domain/nearest-coordinate.js +1 -1
- package/esm2015/f-line-alignment/f-line-alignment-base.js +1 -1
- package/esm2015/f-line-alignment/f-line-alignment.component.js +5 -5
- package/esm2015/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.js +3 -3
- package/esm2015/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.js +1 -1
- package/esm2015/f-minimap/domain/check-rect-is-finite.js +2 -2
- package/esm2015/f-minimap/domain/f-minimap-data.js +2 -2
- package/esm2015/f-minimap/domain/f-minimap.drag-handler.js +2 -2
- package/esm2015/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.js +2 -2
- package/esm2015/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.js +1 -1
- package/esm2015/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.js +2 -2
- package/esm2015/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.js +6 -6
- package/esm2015/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.js +1 -1
- package/esm2015/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.js +2 -2
- package/esm2015/f-minimap/f-minimap-canvas.directive.js +2 -2
- package/esm2015/f-minimap/f-minimap-flow.directive.js +5 -5
- package/esm2015/f-minimap/f-minimap-view.directive.js +2 -2
- package/esm2015/f-minimap/f-minimap.component.js +4 -4
- package/esm2015/f-node/f-drag-handle/f-drag-handle.directive.js +1 -1
- package/esm2015/f-node/f-group.directive.js +6 -10
- package/esm2015/f-node/f-node-base.js +10 -13
- package/esm2015/f-node/f-node.directive.js +6 -10
- package/esm2015/f-node/f-resize-handle/f-resize-handle.directive.js +2 -2
- package/esm2015/f-node/f-rotate-handle/f-rotate-handle.directive.js +1 -1
- package/esm2015/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.js +2 -2
- package/esm2015/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.js +1 -1
- package/esm2015/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.js +2 -2
- package/esm2015/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.js +6 -6
- package/esm2015/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.js +1 -1
- package/esm2015/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.js +2 -2
- package/esm2015/f-selection-area/domain/selection-area.drag-handle.js +2 -2
- package/esm2015/f-selection-area/f-selection-area-base.js +1 -1
- package/esm2015/f-selection-area/f-selection-area.component.js +4 -4
- package/esm2015/f-storage/f-components-store.js +1 -1
- package/esm2015/f-zoom/f-zoom-base.js +3 -2
- package/esm2015/f-zoom/f-zoom.directive.js +3 -3
- package/esm2015/i-has-host-element.js +2 -0
- package/esm2015/mixins/change-position.js +15 -0
- package/esm2015/mixins/change-selection/change-selection.js +30 -0
- package/esm2015/mixins/change-selection/i-can-change-selection.js +2 -0
- package/esm2015/mixins/change-selection/index.js +3 -0
- package/esm2015/mixins/change-visibility/change-visibility.js +14 -0
- package/esm2015/mixins/change-visibility/i-can-change-visibility.js +2 -0
- package/esm2015/mixins/change-visibility/index.js +3 -0
- package/esm2015/mixins/change-zoom/change-zoom.js +25 -0
- package/esm2015/mixins/change-zoom/i-can-change-zoom.js +2 -0
- package/esm2015/mixins/change-zoom/index.js +3 -0
- package/esm2015/mixins/constructor.js +2 -0
- package/esm2015/mixins/fit-to-parent/fit-to-parent.js +27 -0
- package/esm2015/mixins/fit-to-parent/i-can-fit-to-parent.js +2 -0
- package/esm2015/mixins/fit-to-parent/index.js +3 -0
- package/esm2015/mixins/i-transformable.js +2 -0
- package/esm2015/mixins/index.js +9 -0
- package/esm2015/mixins/one-to-one-centering/i-can-one-to-one-centering.js +2 -0
- package/esm2015/mixins/one-to-one-centering/index.js +3 -0
- package/esm2015/mixins/one-to-one-centering/one-to-one-centering.js +24 -0
- package/esm2015/public-api.js +3 -2
- package/f-backgroud/domain/i-f-background-pattern.d.ts +1 -1
- package/f-backgroud/f-background-base.d.ts +2 -1
- package/f-backgroud/f-background.component.d.ts +1 -1
- package/f-backgroud/f-circle-pattern/f-circle-pattern.component.d.ts +1 -1
- package/f-backgroud/f-rect-pattern/f-rect-pattern.component.d.ts +1 -1
- package/f-canvas/domain/f-canvas-change.event.d.ts +1 -1
- package/f-canvas/f-canvas-base.d.ts +4 -2
- package/f-canvas/f-canvas.component.d.ts +5 -4
- package/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.d.ts +1 -1
- package/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points.handler.d.ts +2 -1
- package/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.d.ts +1 -1
- package/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.d.ts +2 -1
- package/f-connection/common/f-connection-base.d.ts +7 -4
- package/f-connection/common/f-connection-text/f-connection-text-path.directive.d.ts +1 -1
- package/f-connection/common/f-connection-text/f-connection-text.component.d.ts +1 -1
- package/f-connection/common/f-connection-text/i-connection-text.d.ts +2 -1
- package/f-connection/common/f-drag-handle/f-connection-drag-handle.component.d.ts +2 -1
- package/f-connection/common/f-gradient/f-connection-gradient.component.d.ts +1 -1
- package/f-connection/common/f-gradient/i-connection-gradient.d.ts +2 -1
- package/f-connection/common/f-path/i-connection-path.d.ts +1 -1
- package/f-connection/common/f-selection/f-connection-selection.component.d.ts +1 -1
- package/f-connection/common/index.d.ts +0 -1
- package/f-connection/f-connection-builder/i-f-connection-builder-request.d.ts +1 -1
- package/f-connection/f-connection-builder/i-f-connection-builder-response.d.ts +1 -1
- package/f-connection/f-connection-builder/i-f-connection-builder.d.ts +1 -1
- package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +1 -1
- package/f-connection/f-marker/f-marker-base.d.ts +1 -1
- package/f-connection/f-snap-connection/f-snap-connection.component.d.ts +53 -0
- package/f-connection/f-snap-connection/index.d.ts +1 -0
- package/f-connection/index.d.ts +1 -0
- package/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.d.ts +1 -1
- package/f-connectors/f-connector-base.d.ts +1 -1
- package/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.d.ts +1 -1
- package/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.request.d.ts +1 -1
- package/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.validator.d.ts +1 -1
- package/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.d.ts +1 -1
- package/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.request.d.ts +1 -1
- package/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.d.ts +1 -2
- package/f-draggable/canvas/canvas.drag-handler.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.d.ts +3 -3
- package/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.request.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.validator.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.d.ts +3 -3
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.d.ts +3 -3
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.d.ts +3 -3
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.d.ts +3 -3
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection.drag-handler.d.ts +3 -3
- package/f-draggable/connections/create-connection/f-create-connection.event.d.ts +1 -1
- package/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.d.ts +1 -1
- package/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.d.ts +1 -1
- package/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.d.ts +1 -1
- package/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.d.ts +1 -1
- package/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.d.ts +1 -1
- package/f-draggable/connections/providers.d.ts +1 -1
- package/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.d.ts +2 -2
- package/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.request.d.ts +1 -1
- package/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.validator.d.ts +1 -1
- package/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.d.ts +2 -2
- package/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.d.ts +1 -1
- package/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.d.ts +1 -1
- package/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.d.ts +3 -3
- package/f-draggable/domain/get-node-padding/get-node-padding.execution.d.ts +1 -1
- package/f-draggable/domain/get-node-padding/get-node-padding.request.d.ts +1 -1
- package/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.d.ts +2 -2
- package/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.d.ts +3 -3
- package/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.d.ts +1 -1
- package/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.d.ts +2 -2
- package/f-draggable/f-draggable-base.d.ts +3 -39
- package/f-draggable/f-draggable-data-context.d.ts +3 -3
- package/f-draggable/f-draggable.directive.d.ts +3 -4
- package/f-draggable/i-draggable-item.d.ts +1 -1
- package/f-draggable/i-f-drag-and-drop-plugin.d.ts +1 -1
- package/f-draggable/index.d.ts +0 -1
- package/f-draggable/node/connection-base-drag-handler.d.ts +4 -5
- package/f-draggable/node/connection-source.drag-handler.d.ts +3 -3
- package/f-draggable/node/connection-target.drag-handler.d.ts +3 -3
- package/f-draggable/node/connection.drag-handler.d.ts +3 -3
- package/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.d.ts +2 -2
- package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.d.ts +2 -2
- package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/i-node-move-restrictions.d.ts +1 -1
- package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.d.ts +2 -2
- package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.d.ts +2 -2
- package/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.d.ts +1 -1
- package/f-draggable/node/node-move-finalize/node-move-finalize.execution.d.ts +2 -2
- package/f-draggable/node/node-move-finalize/node-move-finalize.request.d.ts +1 -1
- package/f-draggable/node/node-move-finalize/node-move-finalize.validator.d.ts +1 -1
- package/f-draggable/node/node-move-preparation/node-move-preparation.execution.d.ts +2 -2
- package/f-draggable/node/node-move-preparation/node-move-preparation.request.d.ts +1 -1
- package/f-draggable/node/node-move-preparation/node-move-preparation.validator.d.ts +1 -1
- package/f-draggable/node/node-resize-by-child.drag-handler.d.ts +1 -1
- package/f-draggable/node/node.drag-handler.d.ts +1 -1
- package/f-draggable/node/providers.d.ts +1 -1
- package/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.d.ts +1 -1
- package/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.d.ts +1 -1
- package/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.d.ts +1 -1
- package/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.d.ts +1 -1
- package/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.d.ts +2 -2
- package/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.request.d.ts +1 -1
- package/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.d.ts +2 -2
- package/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.request.d.ts +1 -1
- package/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.d.ts +2 -2
- package/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.d.ts +1 -1
- package/f-draggable/node-resize/get-node-resize-restrictions/i-node-resize-restrictions.d.ts +1 -1
- package/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.d.ts +3 -3
- package/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.d.ts +1 -1
- package/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.d.ts +1 -1
- package/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.request.d.ts +1 -1
- package/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.validator.d.ts +1 -1
- package/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.d.ts +2 -2
- package/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.request.d.ts +1 -1
- package/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.d.ts +1 -1
- package/f-draggable/node-resize/node-resize.drag-handler.d.ts +3 -3
- package/f-draggable/providers.d.ts +1 -1
- package/f-draggable/single-select/single-select.execution.d.ts +2 -2
- package/f-draggable/single-select/single-select.request.d.ts +1 -1
- package/f-draggable/single-select/single-select.validator.d.ts +1 -1
- package/f-external-item/domain/external-item-finalize/external-item-finalize.execution.d.ts +2 -2
- package/f-external-item/domain/external-item-finalize/external-item-finalize.request.d.ts +1 -1
- package/f-external-item/domain/external-item-finalize/external-item-finalize.validator.d.ts +1 -1
- package/f-external-item/domain/external-item-preparation/external-item-preparation.execution.d.ts +1 -1
- package/f-external-item/domain/external-item-preparation/external-item-preparation.request.d.ts +1 -1
- package/f-external-item/domain/external-item-preparation/external-item-preparation.validator.d.ts +1 -1
- package/f-external-item/domain/external-item.drag-handler.d.ts +1 -1
- package/f-external-item/domain/f-create-node.event.d.ts +1 -1
- package/f-external-item/f-external-item-base.d.ts +1 -1
- package/f-flow/f-flow-base.d.ts +1 -1
- package/f-flow/f-flow.component.d.ts +5 -3
- package/f-line-alignment/domain/line-service.d.ts +1 -1
- package/f-line-alignment/domain/nearest-coordinate.d.ts +1 -1
- package/f-line-alignment/f-line-alignment-base.d.ts +2 -1
- package/f-line-alignment/f-line-alignment.component.d.ts +3 -3
- package/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.d.ts +2 -2
- package/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.d.ts +1 -1
- package/f-minimap/domain/check-rect-is-finite.d.ts +1 -1
- package/f-minimap/domain/f-minimap-data.d.ts +1 -1
- package/f-minimap/domain/f-minimap.drag-handler.d.ts +3 -3
- package/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.d.ts +1 -1
- package/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.d.ts +1 -1
- package/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.d.ts +1 -1
- package/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.d.ts +2 -2
- package/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.d.ts +1 -1
- package/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.d.ts +1 -1
- package/f-minimap/domain/providers.d.ts +1 -1
- package/f-minimap/f-minimap-flow.directive.d.ts +2 -2
- package/f-minimap/f-minimap.component.d.ts +3 -3
- package/f-node/f-drag-handle/f-drag-handle.directive.d.ts +1 -1
- package/f-node/f-group.directive.d.ts +4 -5
- package/f-node/f-node-base.d.ts +10 -7
- package/f-node/f-node.directive.d.ts +4 -5
- package/f-node/f-resize-handle/f-resize-handle.directive.d.ts +1 -1
- package/f-node/f-rotate-handle/f-rotate-handle.directive.d.ts +1 -1
- package/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.d.ts +1 -1
- package/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.d.ts +1 -1
- package/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.d.ts +1 -1
- package/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.d.ts +2 -2
- package/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.d.ts +1 -1
- package/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.d.ts +1 -1
- package/f-selection-area/domain/selection-area.drag-handle.d.ts +3 -3
- package/f-selection-area/f-selection-area-base.d.ts +2 -1
- package/f-selection-area/f-selection-area.component.d.ts +4 -3
- package/f-storage/f-components-store.d.ts +1 -1
- package/f-zoom/f-zoom-base.d.ts +1 -1
- package/fesm2015/foblex-flow.js +2615 -2731
- package/fesm2015/foblex-flow.js.map +1 -1
- package/i-has-host-element.d.ts +3 -0
- package/mixins/change-position.d.ts +10 -0
- package/mixins/change-selection/change-selection.d.ts +7 -0
- package/mixins/change-selection/i-can-change-selection.d.ts +10 -0
- package/mixins/change-selection/index.d.ts +2 -0
- package/mixins/change-visibility/change-visibility.d.ts +6 -0
- package/mixins/change-visibility/i-can-change-visibility.d.ts +5 -0
- package/mixins/change-visibility/index.d.ts +2 -0
- package/mixins/change-zoom/change-zoom.d.ts +6 -0
- package/mixins/change-zoom/i-can-change-zoom.d.ts +6 -0
- package/mixins/change-zoom/index.d.ts +2 -0
- package/mixins/constructor.d.ts +2 -0
- package/mixins/fit-to-parent/fit-to-parent.d.ts +6 -0
- package/mixins/fit-to-parent/i-can-fit-to-parent.d.ts +4 -0
- package/mixins/fit-to-parent/index.d.ts +2 -0
- package/mixins/i-transformable.d.ts +4 -0
- package/mixins/index.d.ts +8 -0
- package/mixins/one-to-one-centering/i-can-one-to-one-centering.d.ts +4 -0
- package/mixins/one-to-one-centering/index.d.ts +2 -0
- package/mixins/one-to-one-centering/one-to-one-centering.d.ts +6 -0
- package/package.json +5 -2
- package/public-api.d.ts +2 -1
- package/domain/cast-to-enum.d.ts +0 -1
- package/domain/deep-clone-node.d.ts +0 -1
- package/domain/get-value-from-data-attr.d.ts +0 -1
- package/domain/intersections/e-f-connector-shape.d.ts +0 -3
- package/domain/intersections/f-connector-shape.extensions.d.ts +0 -11
- package/domain/intersections/i-connector-shape.d.ts +0 -6
- package/domain/intersections/index.d.ts +0 -5
- package/domain/intersections/intersection-finder.d.ts +0 -67
- package/domain/intersections/rounded-rect/i-rounded-rect.d.ts +0 -8
- package/domain/intersections/rounded-rect/index.d.ts +0 -2
- package/domain/intersections/rounded-rect/rounded-rect.d.ts +0 -23
- package/domain/is-element-with-class.d.ts +0 -1
- package/esm2015/domain/cast-to-enum.js +0 -12
- package/esm2015/domain/deep-clone-node.js +0 -47
- package/esm2015/domain/get-value-from-data-attr.js +0 -7
- package/esm2015/domain/intersections/e-f-connector-shape.js +0 -5
- package/esm2015/domain/intersections/f-connector-shape.extensions.js +0 -46
- package/esm2015/domain/intersections/i-connector-shape.js +0 -2
- package/esm2015/domain/intersections/index.js +0 -6
- package/esm2015/domain/intersections/intersection-finder.js +0 -156
- package/esm2015/domain/intersections/rounded-rect/i-rounded-rect.js +0 -2
- package/esm2015/domain/intersections/rounded-rect/index.js +0 -3
- package/esm2015/domain/intersections/rounded-rect/rounded-rect.js +0 -46
- package/esm2015/domain/is-element-with-class.js +0 -8
- package/esm2015/f-connection/common/mixins/change-connection-selection.mixin.js +0 -26
- package/esm2015/f-connection/common/mixins/change-connection-visibility.mixin.js +0 -14
- package/esm2015/f-connection/common/mixins/index.js +0 -3
- package/esm2015/f-draggable/i-can-run-outside-angular.js +0 -2
- package/esm2015/infrastructure/f-mediator/f-execution-register.js +0 -7
- package/esm2015/infrastructure/f-mediator/f-flow-mediator.js +0 -29
- package/esm2015/infrastructure/f-mediator/f-validator-register.js +0 -7
- package/esm2015/infrastructure/f-mediator/index.js +0 -4
- package/esm2015/infrastructure/index.js +0 -3
- package/esm2015/infrastructure/pipeline/i-execution.js +0 -2
- package/esm2015/infrastructure/pipeline/i-validator.js +0 -2
- package/esm2015/infrastructure/pipeline/index.js +0 -4
- package/esm2015/infrastructure/pipeline/pipeline.js +0 -19
- package/f-connection/common/mixins/change-connection-selection.mixin.d.ts +0 -13
- package/f-connection/common/mixins/change-connection-visibility.mixin.d.ts +0 -9
- package/f-connection/common/mixins/index.d.ts +0 -2
- package/f-draggable/i-can-run-outside-angular.d.ts +0 -3
- package/infrastructure/f-mediator/f-execution-register.d.ts +0 -5
- package/infrastructure/f-mediator/f-flow-mediator.d.ts +0 -12
- package/infrastructure/f-mediator/f-validator-register.d.ts +0 -5
- package/infrastructure/f-mediator/index.d.ts +0 -3
- package/infrastructure/index.d.ts +0 -2
- package/infrastructure/pipeline/i-execution.d.ts +0 -3
- package/infrastructure/pipeline/i-validator.d.ts +0 -3
- package/infrastructure/pipeline/index.d.ts +0 -3
- package/infrastructure/pipeline/pipeline.d.ts +0 -11
|
@@ -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/clear-selection/clear-selection.request.ts","../../../projects/f-flow/src/infrastructure/pipeline/pipeline.ts","../../../projects/f-flow/src/infrastructure/f-mediator/f-flow-mediator.ts","../../../projects/f-flow/src/infrastructure/f-mediator/f-execution-register.ts","../../../projects/f-flow/src/infrastructure/f-mediator/f-validator-register.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-storage/f-components-store.ts","../../../projects/f-flow/src/f-storage/f-transform-store.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-connectors/f-node-input/is-node-input.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/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/common/mixins/change-connection-selection.mixin.ts","../../../projects/f-flow/src/f-connection/common/mixins/change-connection-visibility.mixin.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/providers.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/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/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/get-input-under-pointer/get-input-under-pointer.validator.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/providers.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/get-can-be-connected-output-by-outlet/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/f-create-connection.event.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-finalize/providers.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-drag-handler/providers.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-outlet-preparation/providers.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-from-output-preparation/providers.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/create-connection/create-connection-preparation/providers.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-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.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/reassign-connection/reassign-connection-preparation/providers.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/minimap-drag-preparation/minimap-drag-preparation.request.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/f-minimap.drag-handler.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/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/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/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-draggable/providers.ts","../../../projects/f-flow/src/domain/clear-selection/clear-selection.execution.ts","../../../projects/f-flow/src/domain/create-connection-markers/create-connection-markers-request.ts","../../../projects/f-flow/src/domain/create-connection-markers/create-connection-markers.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/get-element-rect-in-flow/get-element-rect-in-flow-request.ts","../../../projects/f-flow/src/domain/intersections/e-f-connector-shape.ts","../../../projects/f-flow/src/domain/intersections/rounded-rect/rounded-rect.ts","../../../projects/f-flow/src/domain/intersections/f-connector-shape.extensions.ts","../../../projects/f-flow/src/domain/intersections/intersection-finder.ts","../../../projects/f-flow/src/domain/get-element-rect-in-flow/get-element-rect-in-flow.execution.ts","../../../projects/f-flow/src/domain/get-can-be-selected-items/get-can-be-selected-items.execution.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/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-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-input-rect-in-flow/get-input-rect-in-flow-request.ts","../../../projects/f-flow/src/domain/get-input-rect-in-flow/get-input-rect-in-flow-response.ts","../../../projects/f-flow/src/domain/get-input-rect-in-flow/get-input-rect-in-flow.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-output-rect-in-flow/get-output-rect-in-flow-request.ts","../../../projects/f-flow/src/domain/get-output-rect-in-flow/get-output-rect-in-flow-response.ts","../../../projects/f-flow/src/domain/get-output-rect-in-flow/get-output-rect-in-flow.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/get-selection/get-selection.request.ts","../../../projects/f-flow/src/domain/get-selection/get-selection.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/select/select.request.ts","../../../projects/f-flow/src/domain/select/select.execution.ts","../../../projects/f-flow/src/domain/select-all/select-all.request.ts","../../../projects/f-flow/src/domain/select-all/select-all.execution.ts","../../../projects/f-flow/src/domain/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/update-item-and-children-layers/update-item-and-children-layers.execution.ts","../../../projects/f-flow/src/domain/select-and-update-node-layer/select-and-update-node-layer.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/cast-to-enum.ts","../../../projects/f-flow/src/domain/create-dom-element.ts","../../../projects/f-flow/src/domain/deep-clone-node.ts","../../../projects/f-flow/src/domain/get-value-from-data-attr.ts","../../../projects/f-flow/src/domain/is-element-with-class.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/f-background.component.html","../../../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/domain/check-rect-is-finite.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap-data.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-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-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/core';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_BACKGROUND_PATTERN = new InjectionToken<IFBackgroundPattern>('F_BACKGROUND_PATTERN');\n\nexport interface IFBackgroundPattern {\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","export class ClearSelectionRequest {\n\n}\n","import { IHandler } from '@foblex/core';\nimport { IValidator } from './i-validator';\nimport { IExecution } from './i-execution';\nimport { Injector, Type } from '@angular/core';\n\nexport class Pipeline<TRequest, TResponse>\n implements IHandler<TRequest, TResponse | void> {\n\n private validator?: Type<IValidator<TRequest>>;\n private execution!: Type<IExecution<TRequest, TResponse>>;\n\n public handle(request: TRequest, injector: Injector): TResponse | void {\n let isValid: boolean = true;\n if (this.validator) {\n isValid = injector.get(this.validator).handle(request);\n }\n\n if (!isValid) {\n return;\n }\n return injector.get(this.execution).handle(request);\n }\n\n public setValidator(validator: Type<IValidator<TRequest>>): void {\n this.validator = validator;\n }\n\n public setExecution(execution: Type<IExecution<TRequest, TResponse>>): void {\n this.execution = execution;\n }\n}\n","import { Injectable, Injector, Type } from '@angular/core';\nimport { IExecution, IValidator, Pipeline } from '../pipeline';\n\n@Injectable()\nexport class FFlowMediator {\n\n constructor(\n private injector: Injector,\n ) {\n }\n\n public static pipelines = new Map<string, Pipeline<any, any>>();\n\n public static registerPipeline<TRequest, TResponse>(\n type: Type<TRequest>,\n handler: Type<IValidator<TRequest>> | Type<IExecution<TRequest, TResponse>>,\n isValidator: boolean\n ): void {\n const pipeline = this.pipelines.get(type.name) || new Pipeline<TRequest, TResponse>();\n isValidator\n ? pipeline.setValidator(handler as Type<IValidator<TRequest>>)\n : pipeline.setExecution(handler as Type<IExecution<TRequest, TResponse>>);\n\n this.pipelines.set(type.name, pipeline);\n }\n\n public send<TResponse>(request: any): TResponse {\n const pipeline = FFlowMediator.pipelines.get(request.constructor.name);\n if (pipeline) {\n return pipeline.handle(request, this.injector);\n }\n\n throw new Error('Handler not registered for request type.');\n }\n}\n","import { Type } from '@angular/core';\nimport { FFlowMediator } from './f-flow-mediator';\nimport { IExecution } from '../pipeline';\n\ntype Constructor<T = any> = new (...args: any[]) => T;\n\nexport function FExecutionRegister<TRequest, TResponse>(requestType: Type<TRequest>) {\n return function (constructor: Constructor<IExecution<TRequest, TResponse>>) {\n FFlowMediator.registerPipeline(requestType, constructor, false);\n };\n}\n","import { Type } from '@angular/core';\nimport { FFlowMediator } from './f-flow-mediator';\nimport { IValidator } from '../pipeline';\n\ntype Constructor<T = any> = new (...args: any[]) => T;\n\nexport function FValidatorRegister<TRequest, TResponse>(requestType: Type<TRequest>) {\n return function (constructor: Constructor<IValidator<TRequest>>) {\n FFlowMediator.registerPipeline(requestType, constructor, true);\n };\n}\n","import { IPointerEvent } from '@foblex/core';\n\nexport class CanvasMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Point } from '@foblex/core';\nimport { IDraggableItem } from './i-draggable-item';\nimport { ISelectable } from '../f-connection';\nimport { FLineAlignmentBase } from '../f-line-alignment';\n\n@Injectable()\nexport class FDraggableDataContext {\n\n public selectedItems: ISelectable[] = [];\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 '../../../infrastructure';\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/core';\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!.completeDrag();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMoveFinalizeRequest } from './canvas-move-finalize.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\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/core';\n\nexport class CanvasMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { ITransformModel } from '@foblex/core';\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 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 { CanvasMovePreparationRequest } from './canvas-move-preparation.request';\nimport { Point } from '@foblex/core';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\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 '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\nimport { isElementWithClass } from '../../../domain';\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 || !this.isNodeHasDragHandle(targetElement)) {\n if (result && result.fDraggingDisabled) {\n result = undefined;\n }\n return result;\n }\n\n private isNodeHasDragHandle(targetElement: HTMLElement): boolean {\n return isElementWithClass(targetElement, '.f-drag-handle');\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 RIGHT = 'right',\n\n TOP = 'top',\n\n BOTTOM = 'bottom',\n\n AUTO = 'auto',\n}\n","import { IHandler, RectExtensions } from '@foblex/core';\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 { IHasHostElement } from '@foblex/core';\nimport { EFConnectableSide } from './e-f-connectable-side';\nimport { IHasStateChanges } from '../i-has-state-changes';\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 isNodeInput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeInput]');\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 '@foblex/core';\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 { IHasHostElement } from '@foblex/core';\nimport { EFResizeHandleType } from './e-f-resize-handle-type';\nimport { castToEnum } from '../../domain';\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 { BooleanExtensions, IHasHostElement } from '@foblex/core';\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 { IHandler, IPoint, PointExtensions } from '@foblex/core';\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/core';\n\nexport class CalculateCenterBetweenPointsRequest {\n\n constructor(\n public source: IPoint,\n public target: IPoint,\n ) {\n }\n}\n","import { IHandler, IPoint } from '@foblex/core';\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/core';\n\nexport class CalculateConnectionCenterRequest {\n\n constructor(\n public points: IPoint[],\n ) {\n }\n}\n","import { IPoint } from '@foblex/core';\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 { IMap, IPoint, PointExtensions } from '@foblex/core';\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';\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","export const F_CONNECTION_IDENTIFIERS = {\n\n textId(connectionId: string): string {\n return sanitizeElementId('connection_text_' + connectionId);\n },\n connectionForSelectionId(connectionId: string): string {\n return sanitizeElementId('connection_for_selection_' + connectionId);\n },\n connectionId(connectionId: string): string {\n return sanitizeElementId('connection_' + connectionId);\n },\n gradientId(connectionId: string): string {\n return sanitizeElementId('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\nfunction sanitizeElementId(id: string): string {\n if (!id.match(/^[a-zA-Z_]/)) {\n id = '_' + id;\n }\n return id.replace(/[^a-zA-Z0-9_\\-:.]/g, '_');\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 { IHasHostElement } from '@foblex/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';\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 { IHasHostElement, ILine } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\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/core';\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 { IHasHostElement, IPoint } from '@foblex/core';\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 { IHasHostElement, ILine } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\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/core';\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 { IHasHostElement } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\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","export function getMarkerStartId(fConnectionId: string): string {\n return sanitizeElementId(`f-connection-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerEndId(fConnectionId: string): string {\n return sanitizeElementId(`f-connection-marker-end-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedStartId(fConnectionId: string): string {\n return sanitizeElementId(`f-connection-selected-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedEndId(fConnectionId: string): string {\n return sanitizeElementId(`f-connection-selected-marker-end-${ fConnectionId }`);\n}\n\nfunction sanitizeElementId(id: string): string {\n if (!id.match(/^[a-zA-Z_]/)) {\n id = '_' + id;\n }\n return id.replace(/[^a-zA-Z0-9_\\-:.]/g, '_');\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 { IHasHostElement } from '@foblex/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';\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 { IHasHostElement, AbstractConstructor, Constructor } from '@foblex/core';\nimport { IConnectionPath } from '../f-path';\n\nexport interface ISelectable {\n\n fId: string;\n\n fSelectionDisabled: boolean;\n\n hostElement: HTMLElement | SVGElement;\n\n select(): void;\n\n deselect(): void;\n\n isSelected(): boolean;\n}\n\nexport const F_SELECTED_CLASS = 'f-selected';\n\ntype CanChangeConnectionSelectionConstructor = Constructor<ISelectable> & AbstractConstructor<ISelectable>;\n\nexport function mixinChangeConnectionSelection<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeConnectionSelectionConstructor & T;\nexport function mixinChangeConnectionSelection<T extends Constructor<IHasHostElement>>(base: T): CanChangeConnectionSelectionConstructor & T {\n return class extends base {\n\n public fId: string = '';\n\n public fSelectionDisabled: boolean = false;\n\n public fPath: IConnectionPath | undefined;\n\n public deselect(): void {\n this.fPath?.deselect();\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.fPath?.select();\n if(!this.hostElement.classList.contains(F_SELECTED_CLASS)) {\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 constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { IHasHostElement, AbstractConstructor, Constructor } from '@foblex/core';\n\nexport interface ICanChangeConnectionVisibility {\n\n hostElement: HTMLElement | SVGElement;\n\n show(): void;\n\n hide(): void;\n}\n\ntype CanChangeConnectionVisibilityConstructor = Constructor<ICanChangeConnectionVisibility> & AbstractConstructor<ICanChangeConnectionVisibility>;\n\nexport function mixinChangeConnectionVisibility<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeConnectionVisibilityConstructor & T;\nexport function mixinChangeConnectionVisibility<T extends Constructor<IHasHostElement>>(base: T): CanChangeConnectionVisibilityConstructor & 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 { 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 { IMap } from '@foblex/core';\nimport { 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';\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 {\n IHasHostElement, ILine,\n IPoint, LineExtensions, PointExtensions,\n} from '@foblex/core';\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 {\n ICanChangeConnectionVisibility,\n ISelectable,\n mixinChangeConnectionSelection,\n mixinChangeConnectionVisibility\n} from './mixins';\n\nconst MIXIN_BASE = mixinChangeConnectionSelection(\n mixinChangeConnectionVisibility(\n class {\n constructor(\n public hostElement: HTMLElement\n ) {\n }\n }));\n\n@Directive()\nexport abstract class FConnectionBase extends MIXIN_BASE\n implements IHasHostElement, ISelectable,\n ICanChangeConnectionVisibility,\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 fMarkers: FMarkerBase[];\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 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 { FMarkerBase } from '../f-marker';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { FComponentsStore } from '../../f-storage';\nimport { castToEnum } from '../../domain';\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';\n\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 @Input('fConnectionId')\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 public get fMarkers(): FMarkerBase[] {\n return this.fComponentsStore.fMarkers.filter((x) => {\n return this.hostElement.contains(x.hostElement);\n });\n }\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 { FMarkerBase } from '../f-marker';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { castToEnum } from '../../domain';\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';\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 public get fMarkers(): FMarkerBase[] {\n return this.fComponentsStore.fMarkers.filter((x) => {\n return this.hostElement.contains(x.hostElement);\n })\n }\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 ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.addComponent(this.fComponentsStore.fConnections, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fConnections, 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 '@foblex/core';\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 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';\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];\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { IHasHostElement, IPoint, IRect, ISize, PointExtensions } from '@foblex/core';\nimport { F_SELECTED_CLASS, ISelectable } from '../f-connection';\nimport { IHasStateChanges } from '../i-has-state-changes';\nimport { FConnectorBase } from '../f-connectors';\n\nexport const F_NODE = new InjectionToken<FNodeBase>('F_NODE');\n\nexport abstract class FNodeBase implements IHasStateChanges, ISelectable, IHasHostElement {\n\n public abstract fId: string;\n\n public abstract fParentId: string | null | undefined;\n\n public abstract hostElement: HTMLElement;\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 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 deselect(): void {\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\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 { IHasHostElement, IPoint, IRect, ISize, PointExtensions } from '@foblex/core';\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 { FFlowMediator } from '../infrastructure';\nimport { EmitTransformChangesRequest } from '../domain';\nimport { BrowserService } from '@foblex/platform';\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 get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n public override connectors: FConnectorBase[] = [];\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n private fBrowser: BrowserService\n ) {\n super();\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 { IHasHostElement, IPoint, IRect, ISize, PointExtensions } from '@foblex/core';\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 { FFlowMediator } from '../infrastructure';\nimport { EmitTransformChangesRequest } from '../domain';\nimport { F_NODE, FNodeBase } from './f-node-base';\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 get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n public override connectors: FConnectorBase[] = [];\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n private fBrowser: BrowserService\n ) {\n super();\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 { BooleanExtensions } from '@foblex/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 { castToEnum } from '../../domain';\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 '[class.f-node-input-not-connectable]': '!canBeConnected',\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 = BooleanExtensions.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 }\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 { BooleanExtensions } from '@foblex/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';\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 = BooleanExtensions.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 { BooleanExtensions } from '@foblex/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 { castToEnum } from '../../domain';\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-not-connectable]': '!canBeConnected',\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 = BooleanExtensions.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 }\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/core';\n\nexport class CreateConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPointerEvent } from '@foblex/core';\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 } from '@foblex/core';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\nimport { BrowserService } from '@foblex/platform';\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 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());\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.connection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.connection.fOutputId);\n }\n\n private getInputsUnderPointer(position: IPoint): FConnectorBase[] {\n const result = this.getInputsInPosition(position);\n const input = this.getFirstConnectableInputOfNodeInPosition(position);\n if (input) {\n result.push(input);\n }\n return result;\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","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 { Injectable } from '@angular/core';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\nimport { OutputNotFound } from '../../../errors';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\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.connection.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.connection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.connection.fOutputId);\n }\n}\n","import { GetInputUnderPointerExecution } from './get-input-under-pointer.execution';\nimport { GetInputUnderPointerValidator } from './get-input-under-pointer.validator';\n\nexport const GET_INPUT_UNDER_POINTER_PROVIDERS = [\n\n GetInputUnderPointerExecution,\n\n GetInputUnderPointerValidator,\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/core';\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 '../../../../infrastructure';\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 '../../../../infrastructure';\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 { GetCanBeConnectedOutputByOutletExecution } from './get-can-be-connected-output-by-outlet.execution';\nimport { GetCanBeConnectedOutputByOutletValidator } from './get-can-be-connected-output-by-outlet.validator';\n\nexport const GET_CAN_BE_CONNECTED_OUTPUT_BY_OUTLET_PROVIDERS = [\n\n GetCanBeConnectedOutputByOutletExecution,\n\n GetCanBeConnectedOutputByOutletValidator,\n];\n","import { IPoint } from '@foblex/core';\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 { IHandler, IPointerEvent } from '@foblex/core';\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, FFlowMediator } from '../../../../infrastructure';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { GetInputUnderPointerRequest } from '../../get-input-under-pointer';\nimport { OutputNotFound } from '../../../../errors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../get-can-be-connected-output-by-outlet';\nimport { FCreateConnectionEvent } from '../f-create-connection.event';\nimport { ReassignConnectionDragHandler } from '../../reassign-connection';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFinalizeRequest)\nexport class CreateConnectionFinalizeExecution\n implements IHandler<CreateConnectionFinalizeRequest, void> {\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: FFlowMediator,\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.connection.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.connection.fOutputId);\n }\n\n private getOutlet(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === this.dragHandler.connection.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 { ILine, IPoint, Point, PointExtensions, RectExtensions, } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport {\n GetConnectionLineRequest, GetOutputRectInFlowRequest, GetOutputRectInFlowResponse, RoundedRect\n} from '../../../domain';\nimport { FConnectionBase } from '../../../f-connection';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { FFlowMediator } from '../../../infrastructure';\n\nexport class CreateConnectionDragHandler implements IDraggableItem {\n\n private onPointerDownFromConnectorRect: RoundedRect = new RoundedRect();\n private onPointerDownToConnectorRect: RoundedRect = new RoundedRect();\n\n private outputSide: EFConnectableSide = EFConnectableSide.BOTTOM;\n\n constructor(\n private fMediator: FFlowMediator,\n public connection: FConnectionBase,\n private onPointerDownPosition: IPoint\n ) {\n }\n\n public initialize(): void {\n const outputRect = this.fMediator.send<GetOutputRectInFlowResponse>(\n new GetOutputRectInFlowRequest(this.connection.fOutputId)\n );\n this.outputSide = outputRect.fConnectableSide;\n this.onPointerDownFromConnectorRect = RoundedRect.fromRoundedRect(outputRect.rect);\n console.log('onPointerDown1', this.onPointerDownFromConnectorRect.x, this.onPointerDownFromConnectorRect.y);\n\n this.onPointerDownToConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.onPointerDownPosition.x, this.onPointerDownPosition.y, 0, 0)\n );\n console.log('onPointerDown2', this.onPointerDownPosition);\n (this.connection as FConnectionBase).show();\n this.move(PointExtensions.initialize());\n }\n\n public move(difference: IPoint): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.onPointerDownFromConnectorRect,\n this.onPointerDownToConnectorRect.addPoint(difference),\n this.connection.fBehavior,\n this.outputSide,\n EFConnectableSide.TOP,\n )\n );\n\n this.connection.setLine(line.point1, this.outputSide, line.point2, EFConnectableSide.TOP);\n this.connection.redraw();\n }\n\n public complete(): void {\n this.connection.redraw();\n (this.connection as FConnectionBase).hide();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionFinalizeRequest } from './create-connection-finalize.request';\nimport { FValidatorRegister, IValidator } from '../../../../infrastructure';\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 { CreateConnectionFinalizeExecution } from './create-connection-finalize.execution';\nimport { CreateConnectionFinalizeValidator } from './create-connection-finalize.validator';\nexport const CREATE_CONNECTION_FINALIZE_PROVIDERS = [\n\n CreateConnectionFinalizeExecution,\n\n CreateConnectionFinalizeValidator,\n];\n","import { IPoint } from '@foblex/core';\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 { IHandler, ITransformModel, Point } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionDragHandlerRequest } from './create-connection-drag-handler.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FFlowMediator } from '../../../../../infrastructure';\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: FFlowMediator,\n ) {\n }\n\n public handle(request: CreateConnectionDragHandlerRequest): void {\n this.fComponentsStore.fTempConnection!.fOutputId = request.connector.id;\n this.fComponentsStore.fTempConnection!.initialize();\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n const positionRelativeToFlowComponent = Point.fromPoint(request.onPointerDownPosition).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.fTempConnection!, positionRelativeToCanvasComponent)\n ];\n }\n}\n","import { CreateConnectionDragHandlerExecution } from './create-connection-drag-handler.execution';\n\nexport const CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS = [\n\n CreateConnectionDragHandlerExecution,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class CreateConnectionFromOutletPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler, IPoint } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutletPreparationRequest } from './create-connection-from-outlet-preparation.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FFlowMediator } from '../../../../../infrastructure';\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: FFlowMediator,\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 { CreateConnectionFromOutletPreparationExecution } from './create-connection-from-outlet-preparation.execution';\n\nexport const CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS = [\n\n CreateConnectionFromOutletPreparationExecution,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class CreateConnectionFromOutputPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler, IPoint, IRect } from '@foblex/core';\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, FFlowMediator } from '../../../../../infrastructure';\nimport { GetElementRectInFlowRequest } from '../../../../../domain';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFromOutputPreparationRequest)\nexport class CreateConnectionFromOutputPreparationExecution\n implements IHandler<CreateConnectionFromOutputPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\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/core';\nimport { FValidatorRegister, IValidator } from '../../../../../infrastructure';\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 { CreateConnectionFromOutputPreparationExecution } from './create-connection-from-output-preparation.execution';\nimport { CreateConnectionFromOutputPreparationValidator } from './create-connection-from-output-preparation.validator';\n\nexport const CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS = [\n\n CreateConnectionFromOutputPreparationExecution,\n\n CreateConnectionFromOutputPreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class CreateConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler, IPointerEvent } from '@foblex/core';\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, FFlowMediator } from '../../../../infrastructure';\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: FFlowMediator,\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 '../../../../infrastructure';\nimport { FNodeBase } from '../../../../f-node';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IPointerEvent } from '@foblex/core';\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 { CreateConnectionPreparationExecution } from './create-connection-preparation.execution';\nimport { CreateConnectionPreparationValidator } from './create-connection-preparation.validator';\nimport { CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS } from './create-connection-from-outlet-preparation';\nimport { CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS } from './create-connection-from-output-preparation';\nimport { CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS } from './create-connection-drag-handler';\n\nexport const CREATE_CONNECTION_PREPARATION_PROVIDERS = [\n\n ...CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS,\n\n ...CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS,\n\n ...CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS,\n\n CreateConnectionPreparationExecution,\n\n CreateConnectionPreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class ReassignConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export class FReassignConnectionEvent<T = any> {\n\n constructor(\n public connectionId: T,\n public fOutputId: T,\n public oldFInputId: T,\n public newFInputId: T\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, FFlowMediator, IExecution } from '../../../../infrastructure';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\nimport { FDraggableBase } from '../../../f-draggable-base';\nimport { GetInputUnderPointerRequest } from '../../get-input-under-pointer';\nimport { FReassignConnectionEvent } from '../f-reassign-connection.event';\nimport { IPointerEvent } from '@foblex/core';\nimport { FConnectorBase } from '../../../../f-connectors';\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: FFlowMediator\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.connection.fId,\n this.dragHandler.connection.fOutputId,\n this.dragHandler.connection.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.connection.fInputId !== inputsUnderPointer.id;\n }\n}\n","import { ILine, IPoint, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport {\n GetConnectionLineRequest,\n GetInputRectInFlowRequest,\n GetInputRectInFlowResponse,\n GetOutputRectInFlowRequest,\n GetOutputRectInFlowResponse, RoundedRect\n} from '../../../domain';\nimport { FConnectionBase } from '../../../f-connection';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { FFlowMediator } from '../../../infrastructure';\n\nexport class ReassignConnectionDragHandler implements IDraggableItem {\n\n private onPointerDownFromConnectorRect: RoundedRect = new RoundedRect();\n private onPointerDownToConnectorRect: RoundedRect = new RoundedRect();\n\n private outputSide: EFConnectableSide = EFConnectableSide.BOTTOM;\n private inputSide: EFConnectableSide = EFConnectableSide.TOP;\n\n constructor(\n private fMediator: FFlowMediator,\n public connection: FConnectionBase\n ) {\n }\n\n public initialize(): void {\n const fromConnector = this.fMediator.send<GetOutputRectInFlowResponse>(\n new GetOutputRectInFlowRequest(this.connection.fOutputId)\n );\n this.inputSide = this.fMediator.send<GetInputRectInFlowResponse>(new GetInputRectInFlowRequest(this.connection.fInputId)).fConnectableSide;\n this.outputSide = fromConnector.fConnectableSide;\n this.onPointerDownFromConnectorRect = RoundedRect.fromRoundedRect(fromConnector.rect);\n this.onPointerDownToConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.connection.line.point2.x, this.connection.line.point2.y, 0, 0)\n );\n }\n\n public move(difference: IPoint): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.onPointerDownFromConnectorRect,\n this.onPointerDownToConnectorRect.addPoint(difference),\n this.connection.fBehavior,\n this.outputSide,\n this.inputSide,\n )\n );\n\n this.connection.setLine(line.point1, this.outputSide, line.point2, this.inputSide);\n this.connection.redraw();\n }\n\n public complete(): void {\n const fromConnector = this.fMediator.send<GetOutputRectInFlowResponse>(\n new GetOutputRectInFlowRequest(this.connection.fOutputId)\n );\n const toConnector = this.fMediator.send<GetInputRectInFlowResponse>(new GetInputRectInFlowRequest(this.connection.fInputId));\n\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n fromConnector.rect,\n toConnector.rect,\n this.connection.fBehavior,\n fromConnector.fConnectableSide,\n toConnector.fConnectableSide,\n )\n );\n\n this.connection.setLine(line.point1, fromConnector.fConnectableSide, line.point2, toConnector.fConnectableSide);\n this.connection.redraw();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionFinalizeRequest } from './reassign-connection-finalize.request';\nimport { FValidatorRegister, IValidator } from '../../../../infrastructure';\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 { ReassignConnectionFinalizeExecution } from './reassign-connection-finalize.execution';\nimport { ReassignConnectionFinalizeValidator } from './reassign-connection-finalize.validator';\n\nexport const REASSIGN_CONNECTION_FINALIZE_PROVIDERS = [\n\n ReassignConnectionFinalizeExecution,\n\n ReassignConnectionFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class ReassignConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionPreparationRequest } from './reassign-connection-preparation.request';\nimport { IPoint, ITransformModel, Point } from '@foblex/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { UpdateItemAndChildrenLayersRequest } from '../../../../domain';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../../infrastructure';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS, FConnectionBase, FConnectionComponent } 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: FFlowMediator,\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, 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 '../../../../infrastructure';\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/core';\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 { ReassignConnectionPreparationExecution } from './reassign-connection-preparation.execution';\nimport { ReassignConnectionPreparationValidator } from './reassign-connection-preparation.validator';\n\nexport const REASSIGN_CONNECTION_PREPARATION_PROVIDERS = [\n\n ReassignConnectionPreparationExecution,\n\n ReassignConnectionPreparationValidator,\n];\n","import {\n CREATE_CONNECTION_FINALIZE_PROVIDERS,\n CREATE_CONNECTION_PREPARATION_PROVIDERS,\n GET_CAN_BE_CONNECTED_OUTPUT_BY_OUTLET_PROVIDERS\n} from './create-connection';\nimport {\n GET_INPUT_UNDER_POINTER_PROVIDERS,\n} from './get-input-under-pointer';\nimport {\n REASSIGN_CONNECTION_FINALIZE_PROVIDERS,\n REASSIGN_CONNECTION_PREPARATION_PROVIDERS,\n} from './reassign-connection';\n\nexport const CONNECTIONS_PROVIDERS = [\n\n ...CREATE_CONNECTION_FINALIZE_PROVIDERS,\n\n ...CREATE_CONNECTION_PREPARATION_PROVIDERS,\n\n ...GET_CAN_BE_CONNECTED_OUTPUT_BY_OUTLET_PROVIDERS,\n\n ...REASSIGN_CONNECTION_FINALIZE_PROVIDERS,\n\n ...REASSIGN_CONNECTION_PREPARATION_PROVIDERS,\n\n ...GET_INPUT_UNDER_POINTER_PROVIDERS,\n];\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/core';\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, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/core';\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/core';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\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/core';\nimport { GetNormalizedNodeRectRequest } from '../get-normalized-node-rect';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\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: FFlowMediator\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 '../../../infrastructure';\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, FFlowMediator, IExecution } from '../../../infrastructure';\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: FFlowMediator\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 { ILine, IPoint } from '@foblex/core';\nimport { IDraggableItem } from '../i-draggable-item';\nimport {\n GetInputRectInFlowRequest,\n GetInputRectInFlowResponse,\n GetOutputRectInFlowRequest,\n GetOutputRectInFlowResponse, RoundedRect\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FFlowMediator } from '../../infrastructure';\nimport { Directive } from '@angular/core';\nimport { INodeMoveRestrictions } from './create-move-nodes-drag-model-from-selection';\n\n@Directive()\nexport abstract class ConnectionBaseDragHandler implements IDraggableItem {\n\n protected fromConnectorRect: RoundedRect = new RoundedRect();\n protected fromConnectorSide: EFConnectableSide = EFConnectableSide.BOTTOM;\n\n protected toConnectorRect: RoundedRect = new RoundedRect();\n protected toConnectorSide: EFConnectableSide = EFConnectableSide.TOP;\n\n protected constructor(\n protected fMediator: FFlowMediator,\n public connection: FConnectionBase,\n ) {\n }\n\n public initialize(): void {\n const fromConnector = this.fMediator.send<GetOutputRectInFlowResponse>(\n new GetOutputRectInFlowRequest(this.connection.fOutputId)\n );\n this.fromConnectorRect = RoundedRect.fromRoundedRect(fromConnector.rect);\n this.fromConnectorSide = fromConnector.fConnectableSide;\n\n const toConnector = this.fMediator.send<GetInputRectInFlowResponse>(\n new GetInputRectInFlowRequest(this.connection.fInputId)\n );\n this.toConnectorRect = RoundedRect.fromRoundedRect(toConnector.rect);\n this.toConnectorSide = toConnector.fConnectableSide;\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.fromConnectorSide, line.point2, this.toConnectorSide);\n this.connection.redraw();\n }\n}\n","import { ILine, IPoint } from '@foblex/core';\nimport { FConnectionBase } from '../../f-connection';\nimport { FFlowMediator } from '../../infrastructure';\nimport {\n GetConnectionLineRequest,\n} from '../../domain';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { INodeMoveRestrictions } from './create-move-nodes-drag-model-from-selection';\n\nexport class ConnectionDragHandler extends ConnectionBaseDragHandler {\n\n private sourceRestrictions!: INodeMoveRestrictions;\n private targetRestrictions!: INodeMoveRestrictions;\n\n constructor(\n fMediator: FFlowMediator,\n connection: FConnectionBase\n ) {\n super(fMediator, 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 this.fromConnectorRect.addPoint(this.getDifference({ ...difference }, this.sourceRestrictions)),\n this.toConnectorRect.addPoint(this.getDifference({ ...difference }, this.targetRestrictions)),\n this.connection.fBehavior,\n this.fromConnectorSide,\n this.toConnectorSide\n ));\n }\n}\n","import { ILine, IPoint } from '@foblex/core';\nimport {\n GetConnectionLineRequest,\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FFlowMediator } from '../../infrastructure';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\n\nexport class ConnectionTargetDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FFlowMediator,\n connection: FConnectionBase,\n public minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, 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 this.fromConnectorRect,\n this.toConnectorRect.addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n this.connection.fBehavior,\n this.fromConnectorSide,\n this.toConnectorSide\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, FFlowMediator, IExecution } from '../../../../../infrastructure';\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: FFlowMediator\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, 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, 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 } from '@foblex/core';\nimport {\n GetConnectionLineRequest\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FFlowMediator } from '../../infrastructure';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\n\nexport class ConnectionSourceDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FFlowMediator,\n connection: FConnectionBase,\n public minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, 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 this.fromConnectorRect.addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n this.toConnectorRect,\n this.connection.fBehavior,\n this.fromConnectorSide,\n this.toConnectorSide\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, FFlowMediator, IExecution } from '../../../../../infrastructure';\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: FFlowMediator\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, 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, 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/core';\nimport { INodeMoveRestrictions } from './i-node-move-restrictions';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../../../infrastructure';\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: FFlowMediator\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/core';\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/core';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n\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, FFlowMediator, IExecution } from '../../../infrastructure';\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';\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: FFlowMediator\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 items.reduce((result: string[], item: INodeWithDistanceRestrictions) => {\n const ids = this.getOutputsForNode(item.node).map((x) => x.id);\n return [...result, ...ids];\n }, []);\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 items.reduce((result: string[], item: INodeWithDistanceRestrictions) => {\n const ids = this.getInputsForNode(item.node).map((x) => x.id);\n return [...result, ...ids];\n }, []);\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/core';\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/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\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 { NodeDragHandler } from '../node.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from '../create-move-nodes-drag-model-from-selection';\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: FFlowMediator\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 '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { isElementWithClass } from '../../../domain';\nimport { FNodeBase } from '../../../f-node';\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 isElementWithClass(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/core';\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/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\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: FFlowMediator\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 '../../../infrastructure';\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/core';\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/core';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\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/core';\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/core';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\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/core';\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/core';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\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/core';\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/core';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\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(request.originalRect, request.difference, RESIZE_DIRECTIONS[request.fResizeHandleType]);\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 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';\nimport { IRect } from '@foblex/core';\n\nexport class GetNormalizedChildrenNodesRectRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedChildrenNodesRectRequest } from './get-normalized-children-nodes-rect.request';\nimport { IRect, RectExtensions } from '@foblex/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FNodeBase } from '../../../f-node';\nimport { GetNodePaddingRequest, 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: FFlowMediator\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,\n this.getNodePadding(request.fNode, request.rect)\n ) : 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 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 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/core';\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 } from '@foblex/core';\nimport { INodeResizeRestrictions } from './i-node-resize-restrictions';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { GetNormalizedParentNodeRectRequest } from '../../domain';\nimport { GetNormalizedChildrenNodesRectRequest } from '../get-normalized-children-nodes-rect';\n\n\n@Injectable()\n@FExecutionRegister(GetNodeResizeRestrictionsRequest)\nexport class GetNodeResizeRestrictionsExecution\n implements IExecution<GetNodeResizeRestrictionsRequest, INodeResizeRestrictions> {\n\n constructor(\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: GetNodeResizeRestrictionsRequest): INodeResizeRestrictions {\n const childRect = this.fMediator.send<IRect | null>(new GetNormalizedChildrenNodesRectRequest(request.fNode, request.rect));\n const parentRect = this.fMediator.send<IRect>(new GetNormalizedParentNodeRectRequest(request.fNode));\n\n return {\n parentRect,\n childRect,\n }\n }\n}\n","import { IPointerEvent } from '@foblex/core';\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 '../../../infrastructure';\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, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../f-node';\nimport { FFlowMediator } from '../../infrastructure';\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 constructor(\n private fMediator: FFlowMediator,\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));\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): 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 '../../../infrastructure';\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/core';\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/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n getValueFromDataAttr,\n SelectAndUpdateNodeLayerRequest,\n} from '../../../domain';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../../f-node';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\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: FFlowMediator\n ) {\n }\n\n public handle(request: NodeResizePreparationRequest): void {\n this.selectAndUpdateNodeLayer(request.event.targetElement);\n\n const handleType = getValueFromDataAttr(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 '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { isElementWithClass } from '../../../domain';\nimport { FNodeBase } from '../../../f-node';\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 isElementWithClass(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/core';\n\nexport class SingleSelectRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../infrastructure';\nimport { SingleSelectRequest } from './single-select.request';\nimport { UpdateItemAndChildrenLayersRequest } from '../../domain';\nimport { IPointerEvent } from '@foblex/core';\nimport { FConnectionBase, ISelectable } from '../../f-connection';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { EOperationSystem, PlatformService } from '@foblex/platform';\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: FFlowMediator\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): ISelectable | 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: ISelectable | 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: ISelectable | undefined): void {\n if (item && !item.fSelectionDisabled) {\n item.isSelected() ? this.deselectItem(item) : this.selectItem(item);\n }\n }\n\n private deselectItem(item: ISelectable): 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: ISelectable): 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 '../../infrastructure';\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 {\n EventExtensions,\n IHasHostElement,\n IMouseEvent,\n IPoint,\n IPointerEvent,\n ITouchDownEvent,\n ITouchMoveEvent,\n ITouchUpEvent,\n PointExtensions\n} from '@foblex/core';\nimport { Directive, EventEmitter, InjectionToken, } from '@angular/core';\nimport { FCreateConnectionEvent, FReassignConnectionEvent } from './connections';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { ICanRunOutsideAngular } from './i-can-run-outside-angular';\nimport { FCreateNodeEvent } from '../f-external-item';\n\nexport const F_DRAGGABLE = new InjectionToken<FDraggableBase>('F_DRAGGABLE');\n\nexport const MOUSE_EVENT_IGNORE_TIME = 800;\n\n@Directive()\nexport abstract class FDraggableBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\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 private fDocument: Document | undefined;\n\n private mouseListeners: Function = EventExtensions.emptyListener();\n private touchListeners: Function = EventExtensions.emptyListener();\n\n private startListeners: Function = EventExtensions.emptyListener();\n\n public isSyntheticEvent(event: MouseEvent): boolean {\n return !!this.lastTouchEventTime &&\n (this.lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now());\n }\n\n private lastTouchEventTime: number = 0;\n\n public isDragStarted: boolean = false;\n private dragStartThreshold: number = 3;\n private dragStartDelay: number = 0;\n\n private dragStartTime: number = 0;\n private dragStartPosition: IPoint = PointExtensions.initialize();\n\n public abstract disabled: boolean;\n\n private moveHandler: Function = this.checkDragSequenceToStart;\n\n private pointerDownElement: HTMLElement | null = null;\n\n protected constructor(\n protected ngZone: ICanRunOutsideAngular | undefined\n ) {\n }\n\n private onMouseDown = (event: MouseEvent) => {\n const isSyntheticEvent = this.isSyntheticEvent(event);\n const isFakeEvent = isFakeMousedownFromScreenReader(event);\n const mouseEvent = new IMouseEvent(event);\n this.pointerDownElement = mouseEvent.targetElement;\n\n if (isSyntheticEvent || isFakeEvent || this.disabled) {\n return;\n }\n let result = this.onPointerDown(mouseEvent);\n if (result) {\n\n this.dragStartTime = Date.now();\n this.dragStartPosition = mouseEvent.getPosition();\n\n this.ngZone?.runOutsideAngular(() => {\n this.fDocument?.addEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.fDocument?.addEventListener('mousemove', this.onMouseMove);\n this.fDocument?.addEventListener('mouseup', this.onMouseUp);\n });\n\n this.mouseListeners = () => {\n this.fDocument?.removeEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.fDocument?.removeEventListener('mousemove', this.onMouseMove);\n this.fDocument?.removeEventListener('mouseup', this.onMouseUp);\n };\n }\n }\n\n private onTouchDown = (event: TouchEvent) => {\n const isFakeEvent = isFakeTouchstartFromScreenReader(event as TouchEvent)\n const touchEvent = new ITouchDownEvent(event);\n this.pointerDownElement = touchEvent.targetElement;\n\n if (isFakeEvent || this.disabled) {\n return;\n }\n let result = this.onPointerDown(touchEvent);\n if (result) {\n\n this.dragStartTime = Date.now();\n this.dragStartPosition = touchEvent.getPosition();\n\n this.ngZone?.runOutsideAngular(() => {\n this.fDocument?.addEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.fDocument?.addEventListener('touchmove', this.onTouchMove);\n this.fDocument?.addEventListener('touchend', this.onTouchUp);\n });\n\n this.touchListeners = () => {\n this.fDocument?.removeEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.fDocument?.removeEventListener('touchmove', this.onTouchMove);\n this.fDocument?.removeEventListener('touchend', this.onTouchUp);\n };\n }\n }\n\n private onSelectStart = (event: Event) => {\n this.onSelect(event);\n }\n\n private onMouseMove = (event: MouseEvent) => {\n this.moveHandler(new IMouseEvent(event));\n }\n\n private onTouchMove = (event: TouchEvent) => {\n this.moveHandler(new ITouchMoveEvent(event));\n }\n\n private checkDragSequenceToStart(event: IPointerEvent): void {\n const pointerPosition = event.getPosition();\n\n if (!this.isDragStarted && this.pointerDownElement) {\n event.setTarget(this.pointerDownElement);\n const distanceX = Math.abs(pointerPosition.x - this.dragStartPosition.x);\n const distanceY = Math.abs(pointerPosition.y - this.dragStartPosition.y);\n const isOverThreshold = distanceX + distanceY >= this.dragStartThreshold;\n\n if (isOverThreshold) {\n const isDelayElapsed = Date.now() >= this.dragStartTime + this.dragStartDelay;\n\n if (!isDelayElapsed) {\n this.endDragSequence();\n return;\n }\n\n event.preventDefault();\n this.prepareDragSequence(event);\n this.isDragStarted = true;\n this.moveHandler = this.onPointerMove;\n if (isTouchEvent(event.originalEvent)) {\n this.lastTouchEventTime = Date.now();\n }\n }\n }\n }\n\n protected abstract prepareDragSequence(event: IPointerEvent): void;\n\n private onMouseUp = (event: MouseEvent) => {\n if (this.isDragStarted) {\n this.onPointerUp(new IMouseEvent(event));\n }\n this.endDragSequence();\n }\n\n private onTouchUp = (event: TouchEvent) => {\n if (this.isDragStarted) {\n this.onPointerUp(new ITouchUpEvent(event));\n }\n this.endDragSequence();\n }\n\n private endDragSequence(): void {\n this.isDragStarted = false;\n this.pointerDownElement = null;\n\n this.moveHandler = this.checkDragSequenceToStart;\n this.mouseListeners();\n this.mouseListeners = EventExtensions.emptyListener();\n this.touchListeners();\n this.touchListeners = EventExtensions.emptyListener();\n this.finalizeDragSequence();\n }\n\n protected abstract finalizeDragSequence(): void;\n\n protected abstract onSelect(event: Event): void;\n\n public abstract onPointerDown(event: IPointerEvent): boolean;\n\n public abstract onPointerMove(event: IPointerEvent): void;\n\n public abstract onPointerUp(event: IPointerEvent): void;\n\n public subscribe(fDocument: Document): void {\n if (this.fDocument) {\n this.unsubscribe();\n }\n this.fDocument = fDocument;\n\n this.ngZone?.runOutsideAngular(() => {\n fDocument.addEventListener('mousedown', this.onMouseDown, EventExtensions.activeListener());\n fDocument.addEventListener('touchstart', this.onTouchDown, EventExtensions.passiveListener());\n });\n\n this.startListeners = () => {\n fDocument.removeEventListener('mousedown', this.onMouseDown, EventExtensions.activeListener());\n fDocument.removeEventListener('touchstart', this.onTouchDown, EventExtensions.passiveListener());\n };\n }\n\n public unsubscribe(): void {\n\n this.startListeners();\n this.startListeners = EventExtensions.emptyListener();\n this.touchListeners();\n this.touchListeners = EventExtensions.emptyListener();\n this.mouseListeners();\n this.mouseListeners = EventExtensions.emptyListener();\n }\n}\n\nfunction isTouchEvent(event: MouseEvent | TouchEvent): event is TouchEvent {\n return event.type[ 0 ] === 't';\n}\n\nfunction isFakeMousedownFromScreenReader(event: MouseEvent): boolean {\n return event.buttons === 0 || (event.offsetX === 0 && event.offsetY === 0);\n}\n\nfunction isFakeTouchstartFromScreenReader(event: TouchEvent): boolean {\n const touch: Touch | undefined =\n (event.touches && event.touches[ 0 ]) || (event.changedTouches && event.changedTouches[ 0 ]);\n return (\n !!touch &&\n touch.identifier === -1 &&\n (touch.radiusX == null || touch.radiusX === 1) &&\n (touch.radiusY == null || touch.radiusY === 1)\n );\n}\n","import { IPointerEvent } from '@foblex/core';\n\nexport class ExternalItemFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IRect } from '@foblex/core';\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/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\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: FFlowMediator,\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/core';\nimport { FExternalItemBase } from '../../f-external-item';\nimport { IDraggableItem } from '../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\nimport { deepCloneNode } from '../../domain';\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 '../../../infrastructure';\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/core';\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/core';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\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 '../../../infrastructure';\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 { IHasHostElement } from '@foblex/core';\nimport { Directive, InjectionToken } from '@angular/core';\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/core';\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 { F_DRAGGABLE, FDraggableBase } from './f-draggable-base';\nimport { FComponentsStore } from '../f-storage';\nimport { FDraggableDataContext } from './f-draggable-data-context';\nimport { Subscription } from 'rxjs';\nimport { IPoint, IPointerEvent, Point } from '@foblex/core';\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 { FFlowMediator } from '../infrastructure';\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 { ICanRunOutsideAngular } from './i-can-run-outside-angular';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from './i-f-drag-and-drop-plugin';\nimport { BrowserService } from '@foblex/platform';\n\n@Directive({\n selector: \"f-flow[fDraggable]\",\n exportAs: 'fDraggable',\n providers: [\n { provide: F_DRAGGABLE, useExisting: FDraggableDirective }\n ]\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: FFlowMediator,\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 { IPointerEvent } from '@foblex/core';\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 { IPoint, IRect } from '@foblex/core';\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/core';\nimport { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\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 { IPoint, IRect, Point } from '@foblex/core';\nimport { FComponentsStore } from '../../f-storage';\nimport { IDraggableItem } from '../../f-draggable';\nimport { FFlowMediator } from '../../infrastructure';\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: FFlowMediator,\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!.completeDrag();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragPreparationRequest } from './minimap-drag-preparation.request';\nimport { IPoint, IRect, Point, RectExtensions } from '@foblex/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\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: FFlowMediator,\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!.completeDrag();\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 '../../../infrastructure';\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 { IPointerEvent } from '@foblex/core';\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 '../../../infrastructure';\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 { Injectable } from '@angular/core';\nimport { MinimapDragFinalizeRequest } from './minimap-drag-finalize.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\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 { 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/core';\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 '../../../infrastructure';\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/core';\nimport { FComponentsStore } from '../../f-storage';\nimport { EmitTransformChangesRequest, ISelectableWithRect } from '../../domain';\nimport { ISelectable } from '../../f-connection';\nimport { FFlowMediator } from '../../infrastructure';\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';\n\nexport class SelectionAreaDragHandle implements IDraggableItem {\n\n private canBeSelected: ISelectableWithRect[] = [];\n\n private selectedByMove: ISelectable[] = [];\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: FFlowMediator,\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 '../../../infrastructure';\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/core';\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/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\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: FFlowMediator\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 { FValidatorRegister, IValidator } from '../../../infrastructure';\nimport { FDraggableDataContext } from '../../../f-draggable';\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 { 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/providers';\nimport { F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS } from '../f-external-item/domain/providers';\nimport { F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS } from '../f-selection-area/domain/providers';\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 '../../infrastructure';\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","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 { CreateConnectionMarkersRequest } from './create-connection-markers-request';\nimport { FConnectionBase, FMarkerBase } from '../../f-connection';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionMarkersRequest)\nexport class CreateConnectionMarkersExecution implements IExecution<CreateConnectionMarkersRequest, void> {\n\n constructor(\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: CreateConnectionMarkersRequest): void {\n const element: SVGDefsElement = createSVGElement('defs', this.fBrowser);\n const fConnection = request.fConnection;\n\n fConnection.fMarkers.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 // 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', sanitizeElementId(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}\nfunction sanitizeElementId(id: string): string {\n if (!id.match(/^[a-zA-Z_]/)) {\n id = '_' + id;\n }\n return id.replace(/[^a-zA-Z0-9_\\-:.]/g, '_');\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 EmitTransformChangesRequest {\n\n}\n","import { EmitTransformChangesRequest } from './emit-transform-changes.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\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","export class GetElementRectInFlowRequest {\n constructor(\n public element: HTMLElement | SVGElement\n ) {\n }\n}\n","export enum EFConnectorShape {\n\n ROUNDED_RECT = 'ROUNDED_RECT',\n}\n","import { IRoundedRect } from './i-rounded-rect';\nimport { IPoint, IRect, Point } from '@foblex/core';\nimport { EFConnectorShape } from '../e-f-connector-shape';\nimport { BrowserService } from '@foblex/platform';\n\nexport class RoundedRect implements IRoundedRect {\n\n public readonly type: EFConnectorShape = EFConnectorShape.ROUNDED_RECT;\n\n public gravityCenter: IPoint = { x: 0, y: 0 };\n\n constructor(\n public x: number = 0,\n public y: number = 0,\n public width: number = 0,\n public height: number = 0,\n public radius1: number = 0,\n public radius2: number = 0,\n public radius3: number = 0,\n public radius4: number = 0\n ) {\n this.gravityCenter = this.calculateGravityCenter(this);\n }\n\n private calculateGravityCenter(rect: IRoundedRect): IPoint {\n return new Point(rect.x + rect.width / 2, rect.y + rect.height / 2);\n }\n\n public static fromRect(rect: IRect): RoundedRect {\n return new RoundedRect(rect.x, rect.y, rect.width, rect.height);\n }\n\n public static fromRoundedRect(rect: IRoundedRect): RoundedRect {\n return new RoundedRect(rect.x, rect.y, rect.width, rect.height, rect.radius1, rect.radius2, rect.radius3, rect.radius4);\n }\n\n public static fromElement(element: HTMLElement | SVGElement, fBrowser: BrowserService): RoundedRect {\n const { x, y, width, height } = element.getBoundingClientRect();\n return this.setRadiusFromElement(new RoundedRect(x, y, width, height), element, fBrowser);\n }\n\n private static setRadiusFromElement(rect: RoundedRect, element: HTMLElement | SVGElement, fBrowser: BrowserService): RoundedRect {\n const data = fBrowser.window.getComputedStyle(element);\n rect.radius1 = fBrowser.toPixels(data.borderTopLeftRadius, element.clientWidth, element.clientHeight, data.fontSize) || 0;\n rect.radius2 = fBrowser.toPixels(data.borderTopRightRadius, element.clientWidth, element.clientHeight, data.fontSize) || 0;\n rect.radius3 = fBrowser.toPixels(data.borderBottomRightRadius, element.clientWidth, element.clientHeight, data.fontSize) || 0;\n rect.radius4 = fBrowser.toPixels(data.borderBottomLeftRadius, element.clientWidth, element.clientHeight, data.fontSize) || 0;\n return rect;\n }\n\n public addPoint(point: IPoint): RoundedRect {\n const copy = RoundedRect.fromRoundedRect(this);\n copy.x += point.x;\n copy.y += point.y;\n copy.gravityCenter = this.calculateGravityCenter(copy);\n return copy;\n }\n}\n","import { IConnectorShape } from './i-connector-shape';\nimport { IRoundedRect } from './rounded-rect';\nimport { Arc, Line } from '@foblex/core';\nimport { EFConnectorShape } from './e-f-connector-shape';\n\nexport class FConnectorShapeExtensions {\n\n public static getSegments(shape: IConnectorShape): (Arc | Line)[] {\n let result: (Arc | Line)[] = [];\n switch (shape.type) {\n case EFConnectorShape.ROUNDED_RECT:\n result = this.parseRect(shape as IRoundedRect);\n break;\n default:\n throw new Error(`Unknown connector shape type: ${ shape.type }`);\n }\n return result;\n }\n\n /**\n * Parses the rounded rectangle into its constituent segments (arcs and lines).\n * @param rect - The rounded rectangle to parse.\n * @returns An array of arcs and lines representing the rectangle.\n */\n private static parseRect(rect: IRoundedRect): (Arc | Line)[] {\n const degree90 = Math.PI * 0.5;\n\n const x0 = rect.x;\n const y0 = rect.y;\n const x1 = rect.x + rect.width;\n const y1 = rect.y + rect.height;\n\n const topLeftX = rect.x + rect.radius1;\n const topLeftY = rect.y + rect.radius1;\n const topRightX = rect.x + rect.width - rect.radius2;\n const topRightY = rect.y + rect.radius2;\n const bottomRightX = rect.x + rect.width - rect.radius3;\n const bottomRightY = rect.y + rect.height - rect.radius3;\n const bottomLeftX = rect.x + rect.radius4;\n const bottomLeftY = rect.y + rect.height - rect.radius4;\n\n return [\n new Arc({ x: topLeftX, y: topLeftY }, rect.radius1, rect.radius1, 2 * degree90, 3 * degree90),\n new Line({ x: topLeftX, y: y0 }, { x: topRightX, y: y0 }),\n new Arc({ x: topRightX, y: topRightY }, rect.radius2, rect.radius2, 3 * degree90, 4 * degree90),\n new Line({ x: x1, y: topRightY }, { x: x1, y: bottomRightY }),\n new Arc({ x: bottomRightX, y: bottomRightY }, rect.radius3, rect.radius3, 0, degree90),\n new Line({ x: bottomRightX, y: y1 }, { x: bottomLeftX, y: y1 }),\n new Arc({ x: bottomLeftX, y: bottomLeftY }, rect.radius4, rect.radius4, degree90, 2 * degree90),\n new Line({ x: x0, y: bottomLeftY }, { x: x0, y: topLeftY }),\n ];\n }\n}\n","import { Arc, IArc, IPoint, Line, PointExtensions, VectorExtensions } from '@foblex/core';\nimport { IConnectorShape } from './i-connector-shape';\nimport { FConnectorShapeExtensions } from './f-connector-shape.extensions';\n\n/**\n * The IntersectionFinder class is designed to find intersection points between\n * line segments and various geometric shapes. Currently, it supports rectangles,\n * circles, and ellipses. In the future, support for additional shapes will be added.\n */\nexport class IntersectionFinder {\n\n /**\n * Finds the guaranteed intersection points between a line segment and a rounded rectangle.\n * @param from - Starting point of the line segment.\n * @param to - Ending point of the line segment.\n * @param shape - The shape to check for intersections.\n * @returns An array of intersection points.\n */\n public static getIntersections(from: IPoint, to: IPoint, shape: IConnectorShape): IPoint[] {\n const segments: (Arc | Line)[] = FConnectorShapeExtensions.getSegments(shape);\n\n for (const segment of segments) {\n if (segment instanceof Arc) {\n const intersections = this.intersectArcWithLine(segment, from, to);\n if (intersections.length > 0) {\n return intersections;\n }\n } else if (segment instanceof Line) {\n const intersection = this.intersectLineSegments(from, to, segment.point1, segment.point2);\n if (intersection) {\n return [ intersection ];\n }\n }\n }\n\n return [];\n }\n\n /**\n * Finds the intersection points between an arc and a line segment.\n * @param arc - The arc to check for intersections.\n * @param from - Starting point of the line segment.\n * @param to - Ending point of the line segment.\n * @returns An array of intersection points.\n */\n private static intersectArcWithLine(arc: IArc, from: IPoint, to: IPoint): IPoint[] {\n return this.filterPointsWithinArc(\n this.findEllipseLineIntersections(arc.center, arc.radiusX, arc.radiusY, from, to),\n arc\n );\n }\n\n /**\n * Finds the intersection point between two line segments.\n * @param p1 - Starting point of the first line segment.\n * @param p2 - Ending point of the first line segment.\n * @param p3 - Starting point of the second line segment.\n * @param p4 - Ending point of the second line segment.\n * @returns The intersection point or null if there is no intersection.\n */\n private static intersectLineSegments(p1: IPoint, p2: IPoint, p3: IPoint, p4: IPoint): IPoint | null {\n const s1_x = p2.x - p1.x;\n const s1_y = p2.y - p1.y;\n const s2_x = p4.x - p3.x;\n const s2_y = p4.y - p3.y;\n\n const s = (-s1_y * (p1.x - p3.x) + s1_x * (p1.y - p3.y)) / (-s2_x * s1_y + s1_x * s2_y);\n const t = (s2_x * (p1.y - p3.y) - s2_y * (p1.x - p3.x)) / (-s2_x * s1_y + s1_x * s2_y);\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return { x: p1.x + (t * s1_x), y: p1.y + (t * s1_y) };\n }\n\n return null;\n }\n\n /**\n * Filters intersection points to retain only those within the given arc.\n * @param points - The points to filter.\n * @param arc - The arc to check against.\n * @returns An array of points within the arc.\n */\n private static filterPointsWithinArc(points: IPoint[], arc: IArc): IPoint[] {\n let { center, startAngle, endAngle } = arc;\n\n if (points.length === 0) {\n return points;\n }\n\n if (endAngle < startAngle) {\n [ startAngle, endAngle ] = [ endAngle, startAngle ];\n }\n\n if (startAngle < 0 || endAngle < 0) {\n startAngle += 2.0 * Math.PI;\n endAngle += 2.0 * Math.PI;\n }\n\n const filteredPoints: IPoint[] = [];\n\n for (const point of points) {\n let angle = this.normalizeAngle(\n VectorExtensions.angle(\n VectorExtensions.initialize(1, 0),\n VectorExtensions.initialize(point.x - center.x, point.y - center.y)\n )\n );\n\n if (angle < startAngle) {\n angle += 2.0 * Math.PI;\n }\n\n if (startAngle <= angle && angle <= endAngle) {\n filteredPoints.push(point);\n }\n }\n\n return filteredPoints;\n }\n\n /**\n * Normalizes an angle to be within the range 0 to 2π.\n * @param radians - The angle in radians.\n * @returns The normalized angle.\n */\n private static normalizeAngle(radians: number): number {\n const normal = radians % (2.0 * Math.PI);\n return normal < 0.0 ? (normal + (2.0 * Math.PI)) : normal;\n }\n\n /**\n * Finds the intersection points between an ellipse and a line segment.\n * @param center - Center of the ellipse.\n * @param radiusX - X radius of the ellipse.\n * @param radiusY - Y radius of the ellipse.\n * @param pointA - Starting point of the line segment.\n * @param pointB - Ending point of the line segment.\n * @returns An array of intersection points.\n */\n private static findEllipseLineIntersections(center: IPoint, radiusX: number, radiusY: number, pointA: IPoint, pointB: IPoint): IPoint[] {\n const origin = VectorExtensions.initialize(pointA.x, pointA.y);\n const direction = VectorExtensions.fromPoints(pointA, pointB);\n const ellipseCenter = VectorExtensions.initialize(center.x, center.y);\n const diff = VectorExtensions.subtract(origin, ellipseCenter);\n const scaledDir = VectorExtensions.initialize(direction.x / (radiusX * radiusX), direction.y / (radiusY * radiusY));\n const scaledDiff = VectorExtensions.initialize(diff.x / (radiusX * radiusX), diff.y / (radiusY * radiusY));\n\n const a = VectorExtensions.dotProduct(direction, scaledDir);\n const b = VectorExtensions.dotProduct(direction, scaledDiff);\n const c = VectorExtensions.dotProduct(diff, scaledDiff) - 1.0;\n const discriminant = b * b - a * c;\n\n return discriminant < 0 ? [] : this.calculateIntersectionPoints(discriminant, a, b, pointA, pointB);\n }\n\n /**\n * Calculates the intersection points based on the discriminant.\n * @param discriminant - The discriminant value.\n * @param a - Coefficient 'a' in the quadratic equation.\n * @param b - Coefficient 'b' in the quadratic equation.\n * @param pointA - Starting point of the line segment.\n * @param pointB - Ending point of the line segment.\n * @returns An array of intersection points.\n */\n private static calculateIntersectionPoints(discriminant: number, a: number, b: number, pointA: IPoint, pointB: IPoint): IPoint[] {\n const points: IPoint[] = [];\n\n if (discriminant > 0) {\n const root = Math.sqrt(discriminant);\n const t1 = (-b - root) / a;\n const t2 = (-b + root) / a;\n\n if (t1 >= 0 && t1 <= 1) {\n points.push(PointExtensions.interpolatePoints(pointA, pointB, t1));\n }\n if (t2 >= 0 && t2 <= 1) {\n points.push(PointExtensions.interpolatePoints(pointA, pointB, t2));\n }\n } else {\n const t = -b / a;\n if (t >= 0 && t <= 1) {\n points.push(PointExtensions.interpolatePoints(pointA, pointB, t));\n }\n }\n\n return points;\n }\n}\n","import {\n IPoint, ISize,\n ITransformModel,\n Point,\n SizeExtensions\n} from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { GetElementRectInFlowRequest } from './get-element-rect-in-flow-request';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\nimport { FComponentsStore } from '../../f-storage';\nimport { IRoundedRect, RoundedRect } from '../intersections';\nimport { BrowserService } from '@foblex/platform';\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 fBrowser: BrowserService\n ) {\n }\n\n public handle(request: GetElementRectInFlowRequest): IRoundedRect {\n const systemRect = RoundedRect.fromElement(request.element, this.fBrowser);\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 { IRect, ITransformModel, RectExtensions } from '@foblex/core';\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, FFlowMediator, IExecution } from '../../infrastructure';\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: FFlowMediator,\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","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 '../../infrastructure';\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 { EFConnectionBehavior } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { IConnectorShape } from '../intersections';\n\nexport class GetConnectionLineRequest {\n\n constructor(\n public outputRect: IConnectorShape,\n public inputRect: IConnectorShape,\n public behavior: EFConnectionBehavior | string,\n public outputSide: EFConnectableSide,\n public inputSide: EFConnectableSide,\n ) {\n\n }\n}\n","import { ILine, IPoint, IRect, Line, Point } from '@foblex/core';\nimport { 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 '../../infrastructure';\nimport { IntersectionFinder, IRoundedRect } from '../intersections';\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 = IntersectionFinder.getIntersections(payload.outputRect.gravityCenter, payload.inputRect.gravityCenter, payload.outputRect)[ 0 ];\n const toResult = IntersectionFinder.getIntersections(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 GetScaledNodeRectsWithFlowPositionRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/core';\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 '../../infrastructure';\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 GetInputRectInFlowRequest {\n constructor(\n public fInputId: string\n ) {\n }\n}\n","import { EFConnectableSide } from '../../f-connectors';\nimport { IRoundedRect } from '../intersections';\n\nexport class GetInputRectInFlowResponse {\n constructor(\n public rect: IRoundedRect,\n public fConnectableSide: EFConnectableSide\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../infrastructure';\nimport { GetInputRectInFlowRequest } from './get-input-rect-in-flow-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetInputRectInFlowResponse } from './get-input-rect-in-flow-response';\nimport { InputNotFound } from '../../errors';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\nimport { IRoundedRect } from '../intersections';\n\n@Injectable()\n@FExecutionRegister(GetInputRectInFlowRequest)\nexport class GetInputRectInFlowExecution implements IExecution<GetInputRectInFlowRequest, GetInputRectInFlowResponse> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n ) {\n }\n\n public handle(request: GetInputRectInFlowRequest): GetInputRectInFlowResponse {\n\n const input = this.fComponentsStore.fInputs.find((x) => x.id === request.fInputId);\n\n if (!input) {\n throw InputNotFound(request.fInputId);\n }\n\n return new GetInputRectInFlowResponse(\n this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(input.hostElement)),\n input.fConnectableSide\n );\n }\n}\n","export class GetNodesRectRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/core';\nimport { GetNodesRectRequest } from './get-nodes-rect.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\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","export class GetOutputRectInFlowRequest {\n constructor(\n public fOutputId: string\n ) {\n }\n}\n","import { EFConnectableSide } from '../../f-connectors';\nimport { IRoundedRect } from '../intersections';\n\nexport class GetOutputRectInFlowResponse {\n constructor(\n public rect: IRoundedRect,\n public fConnectableSide: EFConnectableSide\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../infrastructure';\nimport { GetOutputRectInFlowRequest } from './get-output-rect-in-flow-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetOutputRectInFlowResponse } from './get-output-rect-in-flow-response';\nimport { OutputNotFound } from '../../errors';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\nimport { IRoundedRect } from '../intersections';\n\n@Injectable()\n@FExecutionRegister(GetOutputRectInFlowRequest)\nexport class GetOutputRectInFlowExecution implements IExecution<GetOutputRectInFlowRequest, GetOutputRectInFlowResponse> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n ) {\n }\n\n public handle(request: GetOutputRectInFlowRequest): GetOutputRectInFlowResponse {\n\n let output = this.fComponentsStore.fOutputs.find((x) => x.id === request.fOutputId);\n\n if (!output) {\n output = this.fComponentsStore.fOutlets.find((x) => x.id === request.fOutputId);\n }\n\n if (!output) {\n throw OutputNotFound(request.fOutputId);\n }\n\n const result = this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(output.hostElement));\n return new GetOutputRectInFlowResponse(result, output.fConnectableSide);\n }\n}\n","import { IPoint } from '@foblex/core';\n\nexport class GetPositionInFlowRequest {\n constructor(\n public position: IPoint\n ) {\n }\n}\n","import { IHandler, IPoint, ITransformModel, Point } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { GetPositionInFlowRequest } from './get-position-in-flow-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\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","export class GetSelectionRequest {\n\n}\n","import { GetSelectionRequest } from './get-selection.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\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","import { IHandler, IRect, ITransformModel } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../infrastructure';\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: FFlowMediator,\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/core';\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, FFlowMediator, IExecution } from '../../infrastructure';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\nimport { CreateConnectionMarkersRequest } from '../create-connection-markers';\nimport { IConnectorShape } from '../intersections';\n\n@Injectable()\n@FExecutionRegister(RedrawConnectionsRequest)\nexport class RedrawConnectionsExecution implements IExecution<RedrawConnectionsRequest, void> {\n\n constructor(\n private readonly fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\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 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<IConnectorShape>(new GetElementRectInFlowRequest(output.hostElement));\n const inputRect = this.fMediator.send<IConnectorShape>(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 SelectRequest {\n\n constructor(\n public nodes: string[],\n public connections: string[]\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { SelectRequest } from './select.request';\nimport { Injectable } from '@angular/core';\nimport { FDraggableDataContext } from '../../f-draggable';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\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 { FDraggableDataContext } from '../../f-draggable';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\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 node: 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 '../../../infrastructure';\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 { ISelectable } from '../../f-connection';\nexport class UpdateItemAndChildrenLayersRequest {\n\n constructor(\n public item: ISelectable,\n public itemContainer: HTMLElement,\n ) {\n }\n}\n","import { UpdateItemAndChildrenLayersRequest } from './update-item-and-children-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../infrastructure';\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: FFlowMediator\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/core';\nimport { SelectAndUpdateNodeLayerRequest } from './select-and-update-node-layer.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator } from '../../infrastructure';\nimport { FNodeBase } from '../../f-node';\nimport { FDraggableDataContext } from '../../f-draggable';\nimport { UpdateItemAndChildrenLayersRequest } from '../update-item-and-children-layers';\n\n@Injectable()\n@FExecutionRegister(SelectAndUpdateNodeLayerRequest)\nexport class SelectAndUpdateNodeLayerExecution implements IHandler<SelectAndUpdateNodeLayerRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator\n ) {\n }\n public handle(request: SelectAndUpdateNodeLayerRequest): void {\n this.selectNodeIfNotSelected(request.node);\n\n this.fMediator.send<void>(\n new UpdateItemAndChildrenLayersRequest(request.node, request.node.hostElement.parentElement as HTMLElement)\n );\n }\n\n private selectNodeIfNotSelected(node: FNodeBase) {\n if (!this.fDraggableDataContext.selectedItems.includes(node) && !node.fSelectionDisabled) {\n this.fDraggableDataContext.selectedItems.push(node);\n node.select();\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","export class SortNodeLayersRequest {\n\n}\n","import { SortNodeLayersRequest } from './sort-node-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\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: FFlowMediator,\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, FFlowMediator, IExecution } from '../../../infrastructure';\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: FFlowMediator,\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, FFlowMediator, IExecution } from '../../infrastructure';\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: FFlowMediator,\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 '../../infrastructure';\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 function castToEnum<T>(value: any, varname: string, enm: any): T {\n const result = enm[ value.toUpperCase() as keyof typeof enm ]\n || getKeyByValue(enm, value.toLowerCase());\n if (result === undefined) {\n throw new Error(`Unknown ${ varname }: ${ value }. Accepted values: ${ Object.keys(enm).join(', ') }`);\n }\n return result;\n}\n\nfunction getKeyByValue(object: any, value: any) {\n return Object.keys(object).find(key => object[ key ] === value);\n}\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","export function deepCloneNode<T extends (HTMLElement | SVGElement)>(node: T): T {\n const clone = node.cloneNode(true) as T;\n const descendantsWithId = clone.querySelectorAll('[id]');\n const nodeName = node.nodeName.toLowerCase();\n\n clone.removeAttribute('id');\n\n for (let i = 0; i < descendantsWithId.length; i++) {\n descendantsWithId[ i ].removeAttribute('id');\n }\n\n if (nodeName === 'canvas') {\n transferCanvasData(node as HTMLCanvasElement, clone as HTMLCanvasElement);\n } else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {\n transferInputData(node as HTMLInputElement, clone as HTMLInputElement);\n }\n\n transferData('canvas', node, clone, transferCanvasData);\n transferData('input, textarea, select', node, clone, transferInputData);\n return clone;\n}\n\nfunction transferData<T extends Element>(\n selector: string,\n node: HTMLElement | SVGElement,\n clone: HTMLElement | SVGElement,\n callback: (source: T, clone: T) => void,\n) {\n const descendantElements = node.querySelectorAll<T>(selector);\n\n if (descendantElements.length) {\n const cloneElements = clone.querySelectorAll<T>(selector);\n\n for (let i = 0; i < descendantElements.length; i++) {\n callback(descendantElements[ i ], cloneElements[ i ]);\n }\n }\n}\n\nlet cloneUniqueId = 0;\n\nfunction transferInputData(\n source: Element & { value: string },\n clone: Element & { value: string; name: string; type: string },\n) {\n if (clone.type !== 'file') {\n clone.value = source.value;\n }\n\n if (clone.type === 'radio' && clone.name) {\n clone.name = `mat-clone-${ clone.name }-${ cloneUniqueId++ }`;\n }\n}\n\nfunction transferCanvasData(source: HTMLCanvasElement, clone: HTMLCanvasElement) {\n const context = clone.getContext('2d');\n\n if (context) {\n try {\n context.drawImage(source, 0, 0);\n } catch {\n }\n }\n}\n","export function getValueFromDataAttr<T>(element: HTMLElement, attr: string, cls: string): T {\n return getClosestTarget(element, cls).dataset[ attr ] as unknown as T;\n}\n\nfunction getClosestTarget(element: HTMLElement | SVGElement, cls: string): HTMLElement {\n return element.closest(cls) as HTMLElement;\n}\n","export function isElementWithClass(element: HTMLElement | SVGElement, cls: string): boolean {\n const target = getClosestDragHandle(element, cls);\n return !!target && !target.classList.contains(cls + '-disabled');\n}\n\nfunction getClosestDragHandle(element: HTMLElement | SVGElement, cls: string): HTMLElement {\n return element.closest(cls) as HTMLElement;\n}\n","import { GetConnectionLineExecution } from './get-connection-line';\nimport { RedrawConnectionsExecution } from './redraw-connections';\nimport { GetOutputRectInFlowExecution } from './get-output-rect-in-flow';\nimport { GetSelectionExecution } from './get-selection';\nimport { SelectAllExecution } from './select-all';\nimport { ClearSelectionExecution } from './clear-selection';\nimport { GetNodesRectExecution } from './get-nodes-rect';\nimport { GetElementRectInFlowExecution } from './get-element-rect-in-flow';\nimport { GetInputRectInFlowExecution } from './get-input-rect-in-flow';\nimport { SelectExecution } from './select';\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 { SelectAndUpdateNodeLayerExecution } from './select-and-update-node-layer';\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';\n\nexport const COMMON_PROVIDERS = [\n\n ClearSelectionExecution,\n\n CreateConnectionMarkersExecution,\n\n EmitTransformChangesExecution,\n\n GetCanBeSelectedItemsExecution,\n\n GetDeepChildrenNodesAndGroupsExecution,\n\n GetConnectionLineExecution,\n\n GetElementRectInFlowExecution,\n\n GetScaledNodeRectsWithFlowPositionExecution,\n\n GetNodesRectExecution,\n\n GetOutputRectInFlowExecution,\n\n GetPositionInFlowExecution,\n\n GetSelectionExecution,\n\n IsConnectionUnderNodeExecution,\n\n RedrawConnectionsExecution,\n\n SelectExecution,\n\n SelectAllExecution,\n\n SelectAndUpdateNodeLayerExecution,\n\n SortItemLayersExecution,\n\n SortItemsByParentExecution,\n\n SortNodeLayersExecution,\n\n SubscribeOnTransformChangesExecution,\n\n UpdateItemAndChildrenLayersExecution,\n\n MoveFrontElementsBeforeTargetElementExecution,\n\n GetInputRectInFlowExecution,\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/core';\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/core';\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 { IHasHostElement, ITransformModel } from '@foblex/core';\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, TransformModelExtensions } from '@foblex/core';\nimport { F_BACKGROUND_PATTERN } from './domain';\nimport { FComponentsStore } from '../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-background\",\n templateUrl: \"./f-background.component.html\",\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: FBackgroundBase | undefined;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fBackground = this;\n }\n\n public ngAfterContentInit(): void {\n const children = this.fBackgroundPattern?.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-marker-' + uniqueId++;\n this.fBackgroundPattern?.hostElement.remove();\n defs.appendChild(pattern);\n this.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.hostElement.firstChild?.appendChild(rect);\n const transform = this.fComponentsStore.fCanvas?.transform || TransformModelExtensions.default();\n this.fBackgroundPattern?.setTransform(transform);\n }\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","<svg><ng-content></ng-content></svg>\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/core';\n\nexport class FCanvasChangeEvent {\n constructor(\n public readonly position: IPoint,\n public readonly scale: number,\n ) {\n }\n}\n","import {\n IHasHostElement,\n ITransformModel, PointExtensions,\n TransformModelExtensions,\n ICanChangePosition, ICanChangeZoom, ICanFitToParent, ICanOneToOneCentering,\n mixinChangePosition,\n mixinChangeZoom,\n mixinFitToParent,\n mixinOneToOneCentering, IPoint\n} from '@foblex/core';\nimport { Directive, ElementRef, EventEmitter, InjectionToken } from '@angular/core';\nimport { FCanvasChangeEvent } from './domain';\nimport { FNodeBase } from '../f-node';\n\nexport const F_CANVAS = new InjectionToken<FCanvasBase>('F_CANVAS');\n\nconst MIXIN_BASE = mixinChangePosition(\n mixinFitToParent(\n mixinOneToOneCentering(\n mixinChangeZoom(\n class {\n constructor(\n public transform: ITransformModel\n ) {\n }\n }))));\n\n@Directive()\nexport abstract class FCanvasBase\n extends MIXIN_BASE\n implements IHasHostElement, ICanChangePosition, ICanFitToParent, ICanOneToOneCentering, ICanChangeZoom {\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 protected constructor() {\n super(TransformModelExtensions.default());\n }\n\n public abstract redraw(): void;\n\n public abstract redrawWithAnimation(): void;\n\n public completeDrag(): void {\n this.fCanvasChange.emit(\n new FCanvasChangeEvent(this.getCanvasPosition(), this.transform.scale)\n );\n }\n\n private getCanvasPosition(): IPoint {\n return PointExtensions.sum(this.transform.position, this.transform.scaledPosition);\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, IRect, Point, PointExtensions, RectExtensions, TransformModelExtensions } from '@foblex/core';\nimport { FCanvasChangeEvent } from './domain';\nimport { FComponentsStore } from '../f-storage';\nimport { FNodeBase } from '../f-node';\nimport { FFlowMediator } from '../infrastructure';\nimport { EmitTransformChangesRequest, GetNodesRectRequest } 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: [ { provide: F_CANVAS, useExisting: FCanvasComponent } ],\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 if (!value) {\n return;\n }\n const position = PointExtensions.sum(this.transform.position, this.transform.scaledPosition);\n if (!PointExtensions.isEqual(position, value)) {\n this.transform.position = value;\n this.transform.scaledPosition = PointExtensions.initialize();\n this.redraw();\n }\n }\n\n @Input()\n public set scale(value: number | undefined) {\n if (!value) {\n return;\n }\n this.transform.scale = value;\n this.redraw();\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: FFlowMediator,\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 0.15s ease-in-out; transform: ${ TransformModelExtensions.toString(this.transform) }`);\n setTimeout(() => {\n this.redraw();\n }, 150);\n }\n\n public fitToScreen(toCenter: IPoint = PointExtensions.initialize(), animated: boolean = true): 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.fNodes.map((x) => {\n return Point.fromPoint(x.position)\n }),\n toCenter\n );\n animated ? this.redrawWithAnimation() : this.redraw();\n this.completeDrag();\n }\n\n public oneToOne(): 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.fNodes.map((x) => {\n return Point.fromPoint(x.position)\n })\n );\n this.redrawWithAnimation();\n this.completeDrag();\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-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/core';\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/core';\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 { IHasHostElement, IPoint } from '@foblex/core';\nimport { Directive, InjectionToken } from '@angular/core';\nimport { ILineAlignmentResult } from './domain';\nimport { FNodeBase } from '../f-node';\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/core';\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 { FFlowMediator } from '../infrastructure';\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: FFlowMediator,\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 { IRect, RectExtensions } from '@foblex/core';\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/core';\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 {\n Directive, ElementRef, Input,\n} from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport { IRect, ISize, RectExtensions, SizeExtensions } from '@foblex/core';\nimport { FFlowMediator } from '../infrastructure';\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: FFlowMediator,\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/core';\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/core';\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 { FFlowMediator } from '../infrastructure';\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/core';\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: FFlowMediator\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 { IHasHostElement, IRect } from '@foblex/core';\nimport { Directive } from '@angular/core';\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, IRect } from '@foblex/core';\nimport { FFlowMediator } from '../infrastructure';\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: FFlowMediator\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 { EventEmitter, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '@foblex/core';\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 COMMON_PROVIDERS, GetScaledNodeRectsWithFlowPositionRequest, GetPositionInFlowRequest,\n GetSelectionRequest,\n RedrawConnectionsRequest,\n SelectAllRequest, SelectRequest, SortItemLayersRequest,\n} from '../domain';\nimport { IPoint, IRect } from '@foblex/core';\nimport { FFlowMediator } from '../infrastructure';\nimport {\n F_DRAGGABLE_PROVIDERS,\n FDraggableDataContext, FSelectionChangeEvent\n} from '../f-draggable';\nimport { FConnectionFactory } from '../f-connection';\nimport { FComponentsStore, FTransformStore } from '../f-storage';\nimport { BrowserService } from '@foblex/platform';\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 FFlowMediator,\n FComponentsStore,\n FTransformStore,\n FDraggableDataContext,\n FConnectionFactory,\n ...F_DRAGGABLE_PROVIDERS,\n ...COMMON_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: FFlowMediator,\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(20)).subscribe(() => {\n this.fMediator.send(new SortItemLayersRequest());\n });\n }\n\n private subscribeOnElementsChanges(): Subscription {\n return this.fComponentsStore.componentsData$.pipe(startWith(null), debounceTime(20)).subscribe(() => {\n this.fMediator.send(new RedrawConnectionsRequest());\n\n if (!this.isLoaded) {\n this.isLoaded = true;\n setTimeout(() => {\n this.fLoaded.emit();\n })\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 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, IPoint, Point, RectExtensions } from '@foblex/core';\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.completeDrag();\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.completeDrag();\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.completeDrag();\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 { BooleanExtensions } from '@foblex/core';\nimport { F_ZOOM, FZoomBase } from './f-zoom-base';\nimport { FComponentsStore } from '../f-storage';\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 = BooleanExtensions.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","i0","Injectable","Point","CanvasMoveFinalizeExecution","i1.FDraggableDataContext","PointExtensions","CanvasMoveFinalizeValidator","Subject","CanvasMovePreparationExecution","i1.FComponentsStore","i2.FDraggableDataContext","CanvasMovePreparationValidator","EFConnectableSide","RectExtensions","Directive","EFResizeHandleType","Input","HostBinding","_a","sanitizeElementId","i1","Inject","i1.FConnectionTextPathDirective","Component","ChangeDetectionStrategy","ViewChild","EFConnectionType","Optional","MIXIN_BASE","LineExtensions","i1.FConnectionFactory","EFConnectionBehavior","uniqueId","i2.FComponentsStore","i3.FConnectionGradientComponent","i4.FConnectionSelectionComponent","i5.FConnectionPathComponent","i6.FConnectionDragHandleComponent","i7.FConnectionTextComponent","i8","ContentChildren","EFMarkerType","Observable","Subscription","EventEmitter","merge","debounceTime","startWith","i2.FFlowMediator","i3","Output","BooleanExtensions","GetInputUnderPointerExecution","i2","GetInputUnderPointerValidator","GetCanBeConnectedOutputByOutletExecution","GetCanBeConnectedOutputByOutletValidator","CreateConnectionFinalizeExecution","i3.FFlowMediator","CreateConnectionFinalizeValidator","CreateConnectionDragHandlerExecution","CreateConnectionFromOutletPreparationExecution","CreateConnectionFromOutputPreparationExecution","CreateConnectionFromOutputPreparationValidator","CreateConnectionPreparationExecution","CreateConnectionPreparationValidator","ReassignConnectionFinalizeExecution","ReassignConnectionFinalizeValidator","ReassignConnectionPreparationExecution","i4","ReassignConnectionPreparationValidator","GetNodePaddingExecution","GetNormalizedNodeRectExecution","GetNormalizedParentNodeRectExecution","GetParentNodesExecution","IsArrayHasParentNodeExecution","i1.FFlowMediator","i2.FConnectionBase","PutInputConnectionHandlersToArrayExecution","PutOutputConnectionHandlersToArrayExecution","GetNodeMoveRestrictionsExecution","CreateMoveNodesDragModelFromSelectionExecution","NodeMovePreparationExecution","NodeMovePreparationValidator","NodeMoveFinalizeExecution","NodeMoveFinalizeValidator","OFFSET","ApplyChildResizeRestrictionsExecution","ApplyParentResizeRestrictionsExecution","CalculateChangedPositionExecution","CalculateChangedSizeExecution","GetNormalizedChildrenNodesRectExecution","GetNodeResizeRestrictionsExecution","NodeResizeFinalizeExecution","NodeResizeFinalizeValidator","NodeResizePreparationExecution","NodeResizePreparationValidator","SingleSelectExecution","EOperationSystem","i3.FDraggableDataContext","i4.FFlowMediator","SingleSelectValidator","EventExtensions","IMouseEvent","ITouchDownEvent","ITouchMoveEvent","ITouchUpEvent","ExternalItemFinalizeExecution","ExternalItemFinalizeValidator","ExternalItemPreparationExecution","i3.FExternalItemService","ExternalItemPreparationValidator","i1.FExternalItemService","NgZone","CalculateFlowPointFromMinimapPointExecution","MinimapDragPreparationExecution","MinimapDragPreparationValidator","MinimapDragFinalizeExecution","MinimapDragFinalizeValidator","SelectionAreaFinalizeExecution","SelectionAreaFinalizeValidator","SelectionAreaPreparationExecution","SelectionAreaPreparationValidator","ClearSelectionExecution","CreateConnectionMarkersExecution","createSVGElement","EmitTransformChangesExecution","i1.FTransformStore","EFConnectorShape","Arc","Line","VectorExtensions","GetElementRectInFlowExecution","SizeExtensions","GetCanBeSelectedItemsExecution","GetDeepChildrenNodesAndGroupsExecution","GetConnectionLineExecution","GetScaledNodeRectsWithFlowPositionExecution","GetInputRectInFlowExecution","GetNodesRectExecution","GetOutputRectInFlowExecution","GetPositionInFlowExecution","GetSelectionExecution","IsConnectionUnderNodeExecution","RedrawConnectionsExecution","SelectExecution","SelectAllExecution","MoveFrontElementsBeforeTargetElementExecution","UpdateItemAndChildrenLayersExecution","SelectAndUpdateNodeLayerExecution","SortNodeLayersExecution","SortItemsByParentExecution","SortItemLayersExecution","SubscribeOnTransformChangesExecution","TransformModelExtensions","ContentChild","mixinChangePosition","mixinFitToParent","mixinOneToOneCentering","mixinChangeZoom","i2.FMinimapFlowDirective","i3.FMinimapCanvasDirective","i4.FMinimapViewDirective","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.FNodeInputDirective","i17.FNodeOutletDirective","i18.FNodeOutputDirective","i19.FExternalItemDirective","i20.FFlowComponent","i21.FLineAlignmentComponent","i22.FMinimapComponent","i23.FMinimapCanvasDirective","i24.FMinimapViewDirective","i25.FMinimapFlowDirective","i26.FGroupDirective","i27.FNodeDirective","i28.FDragHandleDirective","i29.FResizeHandleDirective","i30.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/center-group-or-node/center-group-or-node-request.ts","../../../projects/f-flow/src/domain/constants.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/center-group-or-node/center-group-or-node.execution.ts","../../../projects/f-flow/src/domain/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-connectors/f-node-input/is-node-input.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/mixins/change-zoom/change-zoom.ts","../../../projects/f-flow/src/mixins/fit-to-parent/fit-to-parent.ts","../../../projects/f-flow/src/mixins/one-to-one-centering/one-to-one-centering.ts","../../../projects/f-flow/src/mixins/change-position.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/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/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/get-input-under-pointer/get-input-under-pointer.validator.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/providers.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/get-can-be-connected-output-by-outlet/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/f-create-connection.event.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-finalize/providers.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-drag-handler/providers.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-outlet-preparation/providers.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-from-output-preparation/providers.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/create-connection/create-connection-preparation/providers.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-finalize/providers.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/reassign-connection/reassign-connection-preparation/providers.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/minimap-drag-preparation/minimap-drag-preparation.request.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/f-minimap.drag-handler.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/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/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/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-draggable/providers.ts","../../../projects/f-flow/src/domain/clear-selection/clear-selection.execution.ts","../../../projects/f-flow/src/domain/create-connection-markers/create-connection-markers-request.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/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/get-can-be-selected-items/get-can-be-selected-items.execution.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/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-input-rect-in-flow/get-input-rect-in-flow-request.ts","../../../projects/f-flow/src/domain/get-input-rect-in-flow/get-input-rect-in-flow-response.ts","../../../projects/f-flow/src/domain/get-input-rect-in-flow/get-input-rect-in-flow.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-output-rect-in-flow/get-output-rect-in-flow-request.ts","../../../projects/f-flow/src/domain/get-output-rect-in-flow/get-output-rect-in-flow-response.ts","../../../projects/f-flow/src/domain/get-output-rect-in-flow/get-output-rect-in-flow.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/get-selection/get-selection.request.ts","../../../projects/f-flow/src/domain/get-selection/get-selection.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/select/select.request.ts","../../../projects/f-flow/src/domain/select/select.execution.ts","../../../projects/f-flow/src/domain/select-all/select-all.request.ts","../../../projects/f-flow/src/domain/select-all/select-all.execution.ts","../../../projects/f-flow/src/domain/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/update-item-and-children-layers/update-item-and-children-layers.execution.ts","../../../projects/f-flow/src/domain/select-and-update-node-layer/select-and-update-node-layer.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/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/f-background.component.html","../../../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/domain/check-rect-is-finite.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap-data.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-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-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 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","export class CenterGroupOrNodeRequest {\n\n constructor(\n public id: string,\n public animated: boolean\n ) {\n }\n}\n","export const F_CANVAS_ANIMATION_DURATION = 150;\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 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 { 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 '../constants';\n\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!.completeDrag();\n setTimeout(() => {\n this.fComponentsStore.componentDataChanged();\n }, 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","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!.completeDrag();\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 RIGHT = 'right',\n\n TOP = 'top',\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 isNodeInput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeInput]');\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 { AbstractConstructor, Constructor } from '../constructor';\nimport { ICanChangeZoom } from './i-can-change-zoom';\nimport { ITransformable } from '../i-transformable';\nimport { IPoint, PointExtensions } from '@foblex/2d';\n\ntype CanChangeZoomConstructor = Constructor<ICanChangeZoom> & AbstractConstructor<ICanChangeZoom>;\n\nexport function mixinChangeZoom<T extends AbstractConstructor<ITransformable>>(base: T): CanChangeZoomConstructor & T;\nexport function mixinChangeZoom<T extends Constructor<ITransformable>>(base: T): CanChangeZoomConstructor & T {\n return class extends base {\n\n public setZoom(scaleValue: number, toPosition: IPoint): void {\n if (scaleValue !== this.transform.scale) {\n\n const summaryPosition = PointExtensions.sum(this.transform.scaledPosition, this.transform.position);\n\n const newX = toPosition.x - (toPosition.x - summaryPosition.x) * scaleValue / this.transform.scale;\n const newY = toPosition.y - (toPosition.y - summaryPosition.y) * scaleValue / this.transform.scale;\n\n this.transform.scale = scaleValue;\n this.transform.scaledPosition = PointExtensions.sub(PointExtensions.initialize(newX, newY), this.transform.position);\n }\n }\n\n public setScalePosition(value: IPoint): void {\n this.transform.scaledPosition = value;\n }\n\n public resetZoom(): void {\n this.transform.scale = 1;\n this.transform.scaledPosition = PointExtensions.initialize();\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { ICanFitToParent } from './i-can-fit-to-parent';\nimport { ITransformable } from '../i-transformable';\nimport { IPoint, IRect, PointExtensions } from '@foblex/2d';\n\ntype CanFitToParentConstructor = Constructor<ICanFitToParent> & AbstractConstructor<ICanFitToParent>;\n\nexport function mixinFitToParent<T extends AbstractConstructor<ITransformable>>(base: T): CanFitToParentConstructor & T;\nexport function mixinFitToParent<T extends Constructor<ITransformable>>(base: T): CanFitToParentConstructor & T {\n return class extends base {\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\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 constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { ICanOneToOneCentering } from './i-can-one-to-one-centering';\nimport { ITransformable } from '../i-transformable';\nimport { IPoint, IRect, PointExtensions } from '@foblex/2d';\n\ntype CanOneToOneCenteringConstructor = Constructor<ICanOneToOneCentering> & AbstractConstructor<ICanOneToOneCentering>;\n\nexport function mixinOneToOneCentering<T extends AbstractConstructor<ITransformable>>(base: T): CanOneToOneCenteringConstructor & T;\nexport function mixinOneToOneCentering<T extends Constructor<ITransformable>>(base: T): CanOneToOneCenteringConstructor & T {\n return class extends base {\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 const itemsContainerWidth = rect.width / this.transform.scale;\n const itemsContainerHeight = rect.height / this.transform.scale;\n this.transform.scale = 1;\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, 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 constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { AbstractConstructor, Constructor } from './constructor';\nimport { ITransformable } from './i-transformable';\nimport { IPoint, PointExtensions } from '@foblex/2d';\n\nexport interface ICanChangePosition {\n\n setPosition(position: IPoint): void;\n\n getPosition(): IPoint;\n}\n\ntype CanChangePositionConstructor = Constructor<ICanChangePosition> & AbstractConstructor<ICanChangePosition>;\n\nexport function mixinChangePosition<T extends AbstractConstructor<ITransformable>>(base: T): CanChangePositionConstructor & T;\nexport function mixinChangePosition<T extends Constructor<ITransformable>>(base: T): CanChangePositionConstructor & T {\n return class extends base {\n\n public getPosition(): IPoint {\n return this.transform.position;\n }\n\n public setPosition(position: IPoint): void {\n this.transform.position = PointExtensions.copy(position);\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 '[class.f-node-input-not-connectable]': '!canBeConnected',\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 }\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-not-connectable]': '!canBeConnected',\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 }\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","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 } from '@foblex/2d';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\nimport { BrowserService } from '@foblex/platform';\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 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());\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.connection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.connection.fOutputId);\n }\n\n private getInputsUnderPointer(position: IPoint): FConnectorBase[] {\n const result = this.getInputsInPosition(position);\n const input = this.getFirstConnectableInputOfNodeInPosition(position);\n if (input) {\n result.push(input);\n }\n return result;\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","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 { Injectable } from '@angular/core';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { OutputNotFound } from '../../../errors';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\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.connection.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.connection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.connection.fOutputId);\n }\n}\n","import { GetInputUnderPointerExecution } from './get-input-under-pointer.execution';\nimport { GetInputUnderPointerValidator } from './get-input-under-pointer.validator';\n\nexport const GET_INPUT_UNDER_POINTER_PROVIDERS = [\n\n GetInputUnderPointerExecution,\n\n GetInputUnderPointerValidator,\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 { GetCanBeConnectedOutputByOutletExecution } from './get-can-be-connected-output-by-outlet.execution';\nimport { GetCanBeConnectedOutputByOutletValidator } from './get-can-be-connected-output-by-outlet.validator';\n\nexport const GET_CAN_BE_CONNECTED_OUTPUT_BY_OUTLET_PROVIDERS = [\n\n GetCanBeConnectedOutputByOutletExecution,\n\n GetCanBeConnectedOutputByOutletValidator,\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 { 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 { GetInputUnderPointerRequest } from '../../get-input-under-pointer';\nimport { OutputNotFound } from '../../../../errors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../get-can-be-connected-output-by-outlet';\nimport { FCreateConnectionEvent } from '../f-create-connection.event';\nimport { ReassignConnectionDragHandler } from '../../reassign-connection';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFinalizeRequest)\nexport class CreateConnectionFinalizeExecution\n implements IHandler<CreateConnectionFinalizeRequest, void> {\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: 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.connection.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.connection.fOutputId);\n }\n\n private getOutlet(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === this.dragHandler.connection.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 GetConnectionLineRequest, GetOutputRectInFlowRequest, GetOutputRectInFlowResponse\n} from '../../../domain';\nimport { FConnectionBase } from '../../../f-connection';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { RoundedRect, ILine, IPoint, PointExtensions, RectExtensions, } from '@foblex/2d';\n\nexport class CreateConnectionDragHandler implements IDraggableItem {\n\n private onPointerDownFromConnectorRect: RoundedRect = new RoundedRect();\n private onPointerDownToConnectorRect: RoundedRect = new RoundedRect();\n\n private outputSide: EFConnectableSide = EFConnectableSide.BOTTOM;\n\n constructor(\n private fMediator: FMediator,\n public connection: FConnectionBase,\n private onPointerDownPosition: IPoint\n ) {\n }\n\n public initialize(): void {\n const outputRect = this.fMediator.send<GetOutputRectInFlowResponse>(\n new GetOutputRectInFlowRequest(this.connection.fOutputId)\n );\n this.outputSide = outputRect.fConnectableSide;\n this.onPointerDownFromConnectorRect = RoundedRect.fromRoundedRect(outputRect.rect);\n console.log('onPointerDown1', this.onPointerDownFromConnectorRect.x, this.onPointerDownFromConnectorRect.y);\n\n this.onPointerDownToConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.onPointerDownPosition.x, this.onPointerDownPosition.y, 0, 0)\n );\n console.log('onPointerDown2', this.onPointerDownPosition);\n (this.connection as FConnectionBase).show();\n this.move(PointExtensions.initialize());\n }\n\n public move(difference: IPoint): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.onPointerDownFromConnectorRect,\n this.onPointerDownToConnectorRect.addPoint(difference),\n this.connection.fBehavior,\n this.outputSide,\n EFConnectableSide.TOP,\n )\n );\n\n this.connection.setLine(line.point1, this.outputSide, line.point2, EFConnectableSide.TOP);\n this.connection.redraw();\n }\n\n public complete(): void {\n this.connection.redraw();\n (this.connection as FConnectionBase).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 { CreateConnectionFinalizeExecution } from './create-connection-finalize.execution';\nimport { CreateConnectionFinalizeValidator } from './create-connection-finalize.validator';\nexport const CREATE_CONNECTION_FINALIZE_PROVIDERS = [\n\n CreateConnectionFinalizeExecution,\n\n CreateConnectionFinalizeValidator,\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.fComponentsStore.fTempConnection!.fOutputId = request.connector.id;\n this.fComponentsStore.fTempConnection!.initialize();\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n const positionRelativeToFlowComponent = Point.fromPoint(request.onPointerDownPosition).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.fTempConnection!, positionRelativeToCanvasComponent)\n ];\n }\n}\n","import { CreateConnectionDragHandlerExecution } from './create-connection-drag-handler.execution';\n\nexport const CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS = [\n\n CreateConnectionDragHandlerExecution,\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 { CreateConnectionFromOutletPreparationExecution } from './create-connection-from-outlet-preparation.execution';\n\nexport const CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS = [\n\n CreateConnectionFromOutletPreparationExecution,\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 { CreateConnectionFromOutputPreparationExecution } from './create-connection-from-output-preparation.execution';\nimport { CreateConnectionFromOutputPreparationValidator } from './create-connection-from-output-preparation.validator';\n\nexport const CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS = [\n\n CreateConnectionFromOutputPreparationExecution,\n\n CreateConnectionFromOutputPreparationValidator,\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 { CreateConnectionPreparationExecution } from './create-connection-preparation.execution';\nimport { CreateConnectionPreparationValidator } from './create-connection-preparation.validator';\nimport { CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS } from './create-connection-from-outlet-preparation';\nimport { CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS } from './create-connection-from-output-preparation';\nimport { CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS } from './create-connection-drag-handler';\n\nexport const CREATE_CONNECTION_PREPARATION_PROVIDERS = [\n\n ...CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS,\n\n ...CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS,\n\n ...CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS,\n\n CreateConnectionPreparationExecution,\n\n CreateConnectionPreparationValidator,\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<T = any> {\n\n constructor(\n public connectionId: T,\n public fOutputId: T,\n public oldFInputId: T,\n public newFInputId: T\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 { GetInputUnderPointerRequest } from '../../get-input-under-pointer';\nimport { FReassignConnectionEvent } from '../f-reassign-connection.event';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FConnectorBase } from '../../../../f-connectors';\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.connection.fId,\n this.dragHandler.connection.fOutputId,\n this.dragHandler.connection.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.connection.fInputId !== inputsUnderPointer.id;\n }\n}\n","import { IDraggableItem } from '../../i-draggable-item';\nimport {\n GetConnectionLineRequest,\n GetInputRectInFlowRequest,\n GetInputRectInFlowResponse,\n GetOutputRectInFlowRequest,\n GetOutputRectInFlowResponse\n} from '../../../domain';\nimport { FConnectionBase } from '../../../f-connection';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { RoundedRect, ILine, IPoint, RectExtensions } from '@foblex/2d';\n\nexport class ReassignConnectionDragHandler implements IDraggableItem {\n\n private onPointerDownFromConnectorRect: RoundedRect = new RoundedRect();\n private onPointerDownToConnectorRect: RoundedRect = new RoundedRect();\n\n private outputSide: EFConnectableSide = EFConnectableSide.BOTTOM;\n private inputSide: EFConnectableSide = EFConnectableSide.TOP;\n\n constructor(\n private fMediator: FMediator,\n public connection: FConnectionBase\n ) {\n }\n\n public initialize(): void {\n const fromConnector = this.fMediator.send<GetOutputRectInFlowResponse>(\n new GetOutputRectInFlowRequest(this.connection.fOutputId)\n );\n this.inputSide = this.fMediator.send<GetInputRectInFlowResponse>(new GetInputRectInFlowRequest(this.connection.fInputId)).fConnectableSide;\n this.outputSide = fromConnector.fConnectableSide;\n this.onPointerDownFromConnectorRect = RoundedRect.fromRoundedRect(fromConnector.rect);\n this.onPointerDownToConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.connection.line.point2.x, this.connection.line.point2.y, 0, 0)\n );\n }\n\n public move(difference: IPoint): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.onPointerDownFromConnectorRect,\n this.onPointerDownToConnectorRect.addPoint(difference),\n this.connection.fBehavior,\n this.outputSide,\n this.inputSide,\n )\n );\n\n this.connection.setLine(line.point1, this.outputSide, line.point2, this.inputSide);\n this.connection.redraw();\n }\n\n public complete(): void {\n const fromConnector = this.fMediator.send<GetOutputRectInFlowResponse>(\n new GetOutputRectInFlowRequest(this.connection.fOutputId)\n );\n const toConnector = this.fMediator.send<GetInputRectInFlowResponse>(new GetInputRectInFlowRequest(this.connection.fInputId));\n\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n fromConnector.rect,\n toConnector.rect,\n this.connection.fBehavior,\n fromConnector.fConnectableSide,\n toConnector.fConnectableSide,\n )\n );\n\n this.connection.setLine(line.point1, fromConnector.fConnectableSide, line.point2, toConnector.fConnectableSide);\n this.connection.redraw();\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 { ReassignConnectionFinalizeExecution } from './reassign-connection-finalize.execution';\nimport { ReassignConnectionFinalizeValidator } from './reassign-connection-finalize.validator';\n\nexport const REASSIGN_CONNECTION_FINALIZE_PROVIDERS = [\n\n ReassignConnectionFinalizeExecution,\n\n ReassignConnectionFinalizeValidator,\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 fMarkers: FMarkerBase[];\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 { FMarkerBase } from '../f-marker';\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\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 public get fMarkers(): FMarkerBase[] {\n return this.fComponentsStore.fMarkers.filter((x) => {\n return this.hostElement.contains(x.hostElement);\n });\n }\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 { FMarkerBase } from '../f-marker';\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';\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 public get fMarkers(): FMarkerBase[] {\n return this.fComponentsStore.fMarkers.filter((x) => {\n return this.hostElement.contains(x.hostElement);\n })\n }\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 ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.addComponent(this.fComponentsStore.fConnections, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fConnections, 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 { FMarkerBase } from '../f-marker';\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\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 public get fMarkers(): FMarkerBase[] {\n return this.fComponentsStore.fMarkers.filter((x) => {\n return this.hostElement.contains(x.hostElement);\n });\n }\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 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';\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];\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, 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 { ReassignConnectionPreparationExecution } from './reassign-connection-preparation.execution';\nimport { ReassignConnectionPreparationValidator } from './reassign-connection-preparation.validator';\n\nexport const REASSIGN_CONNECTION_PREPARATION_PROVIDERS = [\n\n ReassignConnectionPreparationExecution,\n\n ReassignConnectionPreparationValidator,\n];\n","import {\n CREATE_CONNECTION_FINALIZE_PROVIDERS,\n CREATE_CONNECTION_PREPARATION_PROVIDERS,\n GET_CAN_BE_CONNECTED_OUTPUT_BY_OUTLET_PROVIDERS\n} from './create-connection';\nimport {\n GET_INPUT_UNDER_POINTER_PROVIDERS,\n} from './get-input-under-pointer';\nimport {\n REASSIGN_CONNECTION_FINALIZE_PROVIDERS,\n REASSIGN_CONNECTION_PREPARATION_PROVIDERS,\n} from './reassign-connection';\n\nexport const CONNECTIONS_PROVIDERS = [\n\n ...CREATE_CONNECTION_FINALIZE_PROVIDERS,\n\n ...CREATE_CONNECTION_PREPARATION_PROVIDERS,\n\n ...GET_CAN_BE_CONNECTED_OUTPUT_BY_OUTLET_PROVIDERS,\n\n ...REASSIGN_CONNECTION_FINALIZE_PROVIDERS,\n\n ...REASSIGN_CONNECTION_PREPARATION_PROVIDERS,\n\n ...GET_INPUT_UNDER_POINTER_PROVIDERS,\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 {\n GetInputRectInFlowRequest,\n GetInputRectInFlowResponse,\n GetOutputRectInFlowRequest,\n GetOutputRectInFlowResponse\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { Directive } from '@angular/core';\nimport { INodeMoveRestrictions } from './create-move-nodes-drag-model-from-selection';\nimport { RoundedRect, ILine, IPoint } from '@foblex/2d';\n\n@Directive()\nexport abstract class ConnectionBaseDragHandler implements IDraggableItem {\n\n protected fromConnectorRect: RoundedRect = new RoundedRect();\n protected fromConnectorSide: EFConnectableSide = EFConnectableSide.BOTTOM;\n\n protected toConnectorRect: RoundedRect = new RoundedRect();\n protected toConnectorSide: EFConnectableSide = EFConnectableSide.TOP;\n\n protected constructor(\n protected fMediator: FMediator,\n public connection: FConnectionBase,\n ) {\n }\n\n public initialize(): void {\n const fromConnector = this.fMediator.send<GetOutputRectInFlowResponse>(\n new GetOutputRectInFlowRequest(this.connection.fOutputId)\n );\n this.fromConnectorRect = RoundedRect.fromRoundedRect(fromConnector.rect);\n this.fromConnectorSide = fromConnector.fConnectableSide;\n\n const toConnector = this.fMediator.send<GetInputRectInFlowResponse>(\n new GetInputRectInFlowRequest(this.connection.fInputId)\n );\n this.toConnectorRect = RoundedRect.fromRoundedRect(toConnector.rect);\n this.toConnectorSide = toConnector.fConnectableSide;\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.fromConnectorSide, line.point2, this.toConnectorSide);\n this.connection.redraw();\n }\n}\n","import { ILine, IPoint } 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';\n\nexport class ConnectionDragHandler extends ConnectionBaseDragHandler {\n\n private sourceRestrictions!: INodeMoveRestrictions;\n private targetRestrictions!: INodeMoveRestrictions;\n\n constructor(\n fMediator: FMediator,\n connection: FConnectionBase\n ) {\n super(fMediator, 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 this.fromConnectorRect.addPoint(this.getDifference({ ...difference }, this.sourceRestrictions)),\n this.toConnectorRect.addPoint(this.getDifference({ ...difference }, this.targetRestrictions)),\n this.connection.fBehavior,\n this.fromConnectorSide,\n this.toConnectorSide\n ));\n }\n}\n","import { ILine, IPoint } 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';\n\nexport class ConnectionTargetDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FMediator,\n connection: FConnectionBase,\n public minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, 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 this.fromConnectorRect,\n this.toConnectorRect.addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n this.connection.fBehavior,\n this.fromConnectorSide,\n this.toConnectorSide\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, 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, 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 } 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';\n\nexport class ConnectionSourceDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FMediator,\n connection: FConnectionBase,\n public minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, 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 this.fromConnectorRect.addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n this.toConnectorRect,\n this.connection.fBehavior,\n this.fromConnectorSide,\n this.toConnectorSide\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, 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, 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 {\n SelectAndUpdateNodeLayerRequest,\n} from '../../../domain';\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';\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(request.originalRect, request.difference, RESIZE_DIRECTIONS[request.fResizeHandleType]);\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 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';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNormalizedChildrenNodesRectRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\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 { GetNodePaddingRequest, 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,\n this.getNodePadding(request.fNode, request.rect)\n ) : 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 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 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 } from '@foblex/2d';\nimport { INodeResizeRestrictions } from './i-node-resize-restrictions';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNormalizedParentNodeRectRequest } from '../../domain';\nimport { GetNormalizedChildrenNodesRectRequest } from '../get-normalized-children-nodes-rect';\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 childRect = this.fMediator.send<IRect | null>(new GetNormalizedChildrenNodesRectRequest(request.fNode, request.rect));\n const parentRect = this.fMediator.send<IRect>(new GetNormalizedParentNodeRectRequest(request.fNode));\n\n return {\n parentRect,\n childRect,\n }\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, 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 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));\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): 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 { 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 { 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 { 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!.completeDrag();\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!.completeDrag();\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 { 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 { 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 { 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 { 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/providers';\nimport { F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS } from '../f-external-item/domain/providers';\nimport { F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS } from '../f-selection-area/domain/providers';\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","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 { 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';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionMarkersRequest)\nexport class CreateConnectionMarkersExecution implements IExecution<CreateConnectionMarkersRequest, void> {\n\n constructor(\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: CreateConnectionMarkersRequest): void {\n const element: SVGDefsElement = createSVGElement('defs', this.fBrowser);\n const fConnection = request.fConnection;\n\n fConnection.fMarkers.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 // 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","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 { 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","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 { 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 GetInputRectInFlowRequest {\n constructor(\n public fInputId: string\n ) {\n }\n}\n","import { EFConnectableSide } from '../../f-connectors';\nimport { IRoundedRect } from '@foblex/2d';\n\nexport class GetInputRectInFlowResponse {\n constructor(\n public rect: IRoundedRect,\n public fConnectableSide: EFConnectableSide\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetInputRectInFlowRequest } from './get-input-rect-in-flow-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetInputRectInFlowResponse } from './get-input-rect-in-flow-response';\nimport { InputNotFound } from '../../errors';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\nimport { IRoundedRect } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(GetInputRectInFlowRequest)\nexport class GetInputRectInFlowExecution implements IExecution<GetInputRectInFlowRequest, GetInputRectInFlowResponse> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: GetInputRectInFlowRequest): GetInputRectInFlowResponse {\n\n const input = this.fComponentsStore.fInputs.find((x) => x.id === request.fInputId);\n\n if (!input) {\n throw InputNotFound(request.fInputId);\n }\n\n return new GetInputRectInFlowResponse(\n this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(input.hostElement)),\n input.fConnectableSide\n );\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","export class GetOutputRectInFlowRequest {\n constructor(\n public fOutputId: string\n ) {\n }\n}\n","import { EFConnectableSide } from '../../f-connectors';\nimport { IRoundedRect } from '@foblex/2d';\n\nexport class GetOutputRectInFlowResponse {\n constructor(\n public rect: IRoundedRect,\n public fConnectableSide: EFConnectableSide\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetOutputRectInFlowRequest } from './get-output-rect-in-flow-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetOutputRectInFlowResponse } from './get-output-rect-in-flow-response';\nimport { OutputNotFound } from '../../errors';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\nimport { IRoundedRect } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(GetOutputRectInFlowRequest)\nexport class GetOutputRectInFlowExecution implements IExecution<GetOutputRectInFlowRequest, GetOutputRectInFlowResponse> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: GetOutputRectInFlowRequest): GetOutputRectInFlowResponse {\n\n let output = this.fComponentsStore.fOutputs.find((x) => x.id === request.fOutputId);\n\n if (!output) {\n output = this.fComponentsStore.fOutlets.find((x) => x.id === request.fOutputId);\n }\n\n if (!output) {\n throw OutputNotFound(request.fOutputId);\n }\n\n const result = this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(output.hostElement));\n return new GetOutputRectInFlowResponse(result, output.fConnectableSide);\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","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","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 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 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 { FDraggableDataContext } from '../../f-draggable';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\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 { FDraggableDataContext } from '../../f-draggable';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\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 node: 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","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 { SelectAndUpdateNodeLayerRequest } from './select-and-update-node-layer.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FNodeBase } from '../../f-node';\nimport { FDraggableDataContext } from '../../f-draggable';\nimport { UpdateItemAndChildrenLayersRequest } from '../update-item-and-children-layers';\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.node);\n\n this.fMediator.send<void>(\n new UpdateItemAndChildrenLayersRequest(request.node, request.node.hostElement.parentElement as HTMLElement)\n );\n }\n\n private selectNodeIfNotSelected(node: FNodeBase) {\n if (!this.fDraggableDataContext.selectedItems.includes(node) && !node.fSelectionDisabled) {\n this.fDraggableDataContext.selectedItems.push(node);\n node.select();\n this.fDraggableDataContext.isSelectedChanged = true;\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","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 { GetOutputRectInFlowExecution } from './get-output-rect-in-flow';\nimport { GetSelectionExecution } from './get-selection';\nimport { SelectAllExecution } from './select-all';\nimport { ClearSelectionExecution } from './clear-selection';\nimport { GetNodesRectExecution } from './get-nodes-rect';\nimport { GetElementRectInFlowExecution } from './get-element-rect-in-flow';\nimport { GetInputRectInFlowExecution } from './get-input-rect-in-flow';\nimport { SelectExecution } from './select';\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 { SelectAndUpdateNodeLayerExecution } from './select-and-update-node-layer';\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 { CenterGroupOrNodeExecution } from './center-group-or-node';\nimport { ShowConnectionsAfterCalculationsExecution } from './show-connections-after-calculations';\n\nexport const COMMON_PROVIDERS = [\n\n CenterGroupOrNodeExecution,\n\n ClearSelectionExecution,\n\n CreateConnectionMarkersExecution,\n\n CreateRoundedRectFromElementExecution,\n\n EmitTransformChangesExecution,\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 GetOutputRectInFlowExecution,\n\n GetPositionInFlowExecution,\n\n GetSelectionExecution,\n\n IsConnectionUnderNodeExecution,\n\n RedrawConnectionsExecution,\n\n SelectExecution,\n\n SelectAllExecution,\n\n SelectAndUpdateNodeLayerExecution,\n\n ShowConnectionsAfterCalculationsExecution,\n\n SortItemLayersExecution,\n\n SortItemsByParentExecution,\n\n SortNodeLayersExecution,\n\n SubscribeOnTransformChangesExecution,\n\n UpdateItemAndChildrenLayersExecution,\n\n MoveFrontElementsBeforeTargetElementExecution,\n\n GetInputRectInFlowExecution,\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, TransformModelExtensions } from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN } from './domain';\nimport { FComponentsStore } from '../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-background\",\n templateUrl: \"./f-background.component.html\",\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: FBackgroundBase | undefined;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fBackground = this;\n }\n\n public ngAfterContentInit(): void {\n const children = this.fBackgroundPattern?.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-marker-' + uniqueId++;\n this.fBackgroundPattern?.hostElement.remove();\n defs.appendChild(pattern);\n this.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.hostElement.firstChild?.appendChild(rect);\n const transform = this.fComponentsStore.fCanvas?.transform || TransformModelExtensions.default();\n this.fBackgroundPattern?.setTransform(transform);\n }\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","<svg><ng-content></ng-content></svg>\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 {\n ICanChangePosition, ICanChangeZoom, ICanFitToParent, ICanOneToOneCentering,\n mixinChangePosition,\n mixinChangeZoom,\n mixinFitToParent,\n mixinOneToOneCentering\n} from '../mixins';\nimport { ITransformModel, 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\nconst MIXIN_BASE = mixinChangePosition(\n mixinFitToParent(\n mixinOneToOneCentering(\n mixinChangeZoom(\n class {\n constructor(\n public transform: ITransformModel\n ) {\n }\n }))));\n\n@Directive()\nexport abstract class FCanvasBase\n extends MIXIN_BASE\n implements IHasHostElement, ICanChangePosition, ICanFitToParent, ICanOneToOneCentering, ICanChangeZoom {\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 protected constructor() {\n super(TransformModelExtensions.default());\n }\n\n public abstract redraw(): void;\n\n public abstract redrawWithAnimation(): void;\n\n public completeDrag(): void {\n this.fCanvasChange.emit(\n new FCanvasChangeEvent(this.getCanvasPosition(), this.transform.scale)\n );\n }\n\n private getCanvasPosition(): IPoint {\n return PointExtensions.sum(this.transform.position, this.transform.scaledPosition);\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, IRect, Point, PointExtensions, RectExtensions, TransformModelExtensions } from '@foblex/2d';\nimport { FCanvasChangeEvent } 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 GetNodesRectRequest\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: [ { provide: F_CANVAS, useExisting: FCanvasComponent } ],\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 if (!value) {\n return;\n }\n const position = PointExtensions.sum(this.transform.position, this.transform.scaledPosition);\n if (!PointExtensions.isEqual(position, value)) {\n this.transform.position = value;\n this.transform.scaledPosition = PointExtensions.initialize();\n this.redraw();\n }\n }\n\n @Input()\n public set scale(value: number | undefined) {\n if (!value) {\n return;\n }\n this.transform.scale = value;\n this.redraw();\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 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.fNodes.map((x) => {\n return Point.fromPoint(x.position)\n }),\n toCenter\n );\n animated ? this.redrawWithAnimation() : this.redraw();\n this.completeDrag();\n setTimeout(() => {\n this.fComponentsStore.componentDataChanged();\n }, F_CANVAS_ANIMATION_DURATION);\n }\n\n public oneToOne(): 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.fNodes.map((x) => {\n return Point.fromPoint(x.position)\n })\n );\n this.redrawWithAnimation();\n this.completeDrag();\n setTimeout(() => {\n this.fComponentsStore.componentDataChanged();\n }, F_CANVAS_ANIMATION_DURATION);\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 { 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 {\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 { 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 { 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 COMMON_PROVIDERS,\n GetScaledNodeRectsWithFlowPositionRequest,\n GetPositionInFlowRequest,\n GetSelectionRequest,\n RedrawConnectionsRequest,\n SelectAllRequest,\n SelectRequest,\n SortItemLayersRequest,\n IFFlowState,\n GetFlowStateRequest,\n ShowConnectionsAfterCalculationsRequest,\n} from '../domain';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport {\n F_DRAGGABLE_PROVIDERS,\n FDraggableDataContext, FSelectionChangeEvent\n} from '../f-draggable';\nimport { FConnectionFactory } from '../f-connection';\nimport { FComponentsStore, FTransformStore } from '../f-storage';\nimport { BrowserService } from '@foblex/platform';\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 ...F_DRAGGABLE_PROVIDERS,\n ...COMMON_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(20)).subscribe(() => {\n this.fMediator.send(new SortItemLayersRequest());\n });\n }\n\n private subscribeOnElementsChanges(): Subscription {\n return this.fComponentsStore.componentsData$.pipe(startWith(null), debounceTime(20)).subscribe(() => {\n this.fMediator.send(new RedrawConnectionsRequest());\n\n if (!this.isLoaded) {\n this.fMediator.send(new ShowConnectionsAfterCalculationsRequest());\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.completeDrag();\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.completeDrag();\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.completeDrag();\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","CenterGroupOrNodeExecution","PointExtensions","RectExtensions","i1.FComponentsStore","FExecutionRegister","Point","CanvasMoveFinalizeExecution","i1.FDraggableDataContext","CanvasMoveFinalizeValidator","FValidatorRegister","CanvasMovePreparationExecution","i2.FDraggableDataContext","CanvasMovePreparationValidator","EFConnectableSide","Directive","EFResizeHandleType","castToEnum","Input","HostBinding","MIXIN_BASE","Observable","uniqueId","Subscription","EventEmitter","merge","debounceTime","startWith","i2","i3","Output","castToBoolean","Inject","GetInputUnderPointerExecution","GetInputUnderPointerValidator","GetCanBeConnectedOutputByOutletExecution","GetCanBeConnectedOutputByOutletValidator","CreateConnectionFinalizeExecution","RoundedRect","CreateConnectionFinalizeValidator","CreateConnectionDragHandlerExecution","CreateConnectionFromOutletPreparationExecution","CreateConnectionFromOutputPreparationExecution","CreateConnectionFromOutputPreparationValidator","CreateConnectionPreparationExecution","CreateConnectionPreparationValidator","ReassignConnectionFinalizeExecution","ReassignConnectionFinalizeValidator","_a","normalizeDomElementId","i1","i1.FConnectionTextPathDirective","Component","ChangeDetectionStrategy","ViewChild","EFConnectionType","Optional","LineExtensions","i1.FConnectionFactory","EFConnectionBehavior","i2.FComponentsStore","i3.FConnectionGradientComponent","i4.FConnectionSelectionComponent","i5.FConnectionPathComponent","i6.FConnectionDragHandleComponent","i7.FConnectionTextComponent","i8","ContentChildren","EFMarkerType","ReassignConnectionPreparationExecution","i4","ReassignConnectionPreparationValidator","GetNodePaddingExecution","GetNormalizedNodeRectExecution","GetNormalizedParentNodeRectExecution","GetParentNodesExecution","IsArrayHasParentNodeExecution","i2.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","MinimapDragPreparationExecution","MinimapDragPreparationValidator","MinimapDragFinalizeExecution","MinimapDragFinalizeValidator","SelectionAreaFinalizeExecution","SelectionAreaFinalizeValidator","SelectionAreaPreparationExecution","SelectionAreaPreparationValidator","ClearSelectionExecution","CreateConnectionMarkersExecution","createSVGElement","CreateRoundedRectFromElementExecution","EmitTransformChangesExecution","i1.FTransformStore","GetElementRectInFlowExecution","SizeExtensions","GetCanBeSelectedItemsExecution","GetDeepChildrenNodesAndGroupsExecution","GetConnectionLineExecution","GetIntersections","Line","GetFlowStateConnectionsExecution","GetFlowStateNodesExecution","GetFlowStateExecution","GetScaledNodeRectsWithFlowPositionExecution","GetInputRectInFlowExecution","GetNodesRectExecution","GetOutputRectInFlowExecution","GetPositionInFlowExecution","GetSelectionExecution","IsConnectionUnderNodeExecution","RedrawConnectionsExecution","SelectExecution","SelectAllExecution","MoveFrontElementsBeforeTargetElementExecution","UpdateItemAndChildrenLayersExecution","SelectAndUpdateNodeLayerExecution","ShowConnectionsAfterCalculationsExecution","SortNodeLayersExecution","SortItemsByParentExecution","SortItemLayersExecution","SubscribeOnTransformChangesExecution","TransformModelExtensions","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.FNodeInputDirective","i17.FNodeOutletDirective","i18.FNodeOutputDirective","i19.FExternalItemDirective","i20.FFlowComponent","i21.FLineAlignmentComponent","i22.FMinimapComponent","i23.FMinimapCanvasDirective","i24.FMinimapViewDirective","i25.FMinimapFlowDirective","i26.FGroupDirective","i27.FNodeDirective","i28.FDragHandleDirective","i29.FResizeHandleDirective","i30.FSelectionAreaComponent","CommonModule","NgModule"],"mappings":"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"}
|