@foblex/flow 17.5.2 → 17.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/domain/f-background/add-background-to-store/add-background-to-store-request.d.ts +1 -0
- package/domain/f-background/add-pattern-to-background/add-pattern-to-background.request.d.ts +1 -0
- package/domain/f-background/remove-background-from-store/remove-background-from-store-request.d.ts +1 -0
- package/domain/f-background/set-background-transform/set-background-transform-request.d.ts +1 -0
- package/domain/f-canvas/add-canvas-to-store/add-canvas-to-store-request.d.ts +1 -0
- package/domain/f-canvas/center-group-or-node/center-group-or-node-request.d.ts +1 -0
- package/domain/f-canvas/fit-to-flow/fit-to-flow-request.d.ts +1 -0
- package/domain/f-canvas/get-canvas/get-canvas-request.d.ts +1 -0
- package/domain/f-canvas/input-canvas-position/input-canvas-position-request.d.ts +1 -0
- package/domain/f-canvas/input-canvas-scale/input-canvas-scale-request.d.ts +1 -0
- package/domain/f-canvas/redraw-canvas-with-animation/redraw-canvas-with-animation-request.d.ts +1 -0
- package/domain/f-canvas/remove-canvas-from-store/remove-canvas-from-store-request.d.ts +1 -0
- package/domain/f-canvas/reset-scale/reset-scale-request.d.ts +1 -0
- package/domain/f-canvas/reset-scale-and-center/reset-scale-and-center-request.d.ts +1 -0
- package/domain/f-canvas/update-scale/update-scale-request.d.ts +1 -0
- package/domain/f-connection/add-connection-for-create-to-store/add-connection-for-create-to-store-request.d.ts +1 -0
- package/domain/f-connection/add-connection-marker-to-store/add-connection-marker-to-store-request.d.ts +1 -0
- package/domain/f-connection/add-connection-to-store/add-connection-to-store-request.d.ts +1 -0
- package/domain/f-connection/add-snap-connection-to-store/add-snap-connection-to-store-request.d.ts +1 -0
- package/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.d.ts +1 -0
- package/domain/f-connection/create-connection-markers/create-connection-markers-request.d.ts +1 -0
- package/domain/f-connection/redraw-connections/redraw-connections-request.d.ts +1 -0
- package/domain/f-connection/remove-connection-for-create-from-store/remove-connection-for-create-from-store-request.d.ts +1 -0
- package/domain/f-connection/remove-connection-from-store/remove-connection-from-store-request.d.ts +1 -0
- package/domain/f-connection/remove-connection-marker-from-store/remove-connection-marker-from-store-request.d.ts +1 -0
- package/domain/f-connection/remove-snap-connection-from-store/remove-snap-connection-from-store-request.d.ts +1 -0
- package/domain/f-connectors/add-input-to-store/add-input-to-store-request.d.ts +1 -0
- package/domain/f-connectors/add-outlet-to-store/add-outlet-to-store-request.d.ts +1 -0
- package/domain/f-connectors/add-output-to-store/add-output-to-store-request.d.ts +1 -0
- package/domain/f-connectors/calculate-closest-input/calculate-closest-input.request.d.ts +1 -0
- package/domain/f-connectors/find-input-at-position/find-input-at-position.request.d.ts +1 -0
- package/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.d.ts +1 -0
- package/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.d.ts +1 -0
- package/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.request.d.ts +1 -0
- package/domain/f-connectors/remove-input-from-store/remove-input-from-store-request.d.ts +1 -0
- package/domain/f-connectors/remove-outlet-from-store/remove-outlet-from-store-request.d.ts +1 -0
- package/domain/f-connectors/remove-output-from-store/remove-output-from-store-request.d.ts +1 -0
- package/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.request.d.ts +1 -0
- package/domain/f-draggable/add-dnd-to-store/add-dnd-to-store-request.d.ts +1 -0
- package/domain/f-draggable/emit-selection-change-event/emit-selection-change-event-request.d.ts +1 -0
- package/domain/f-draggable/end-drag-sequence/end-drag-sequence-request.d.ts +1 -0
- package/domain/f-draggable/initialize-drag-sequence/initialize-drag-sequence-request.d.ts +1 -0
- package/domain/f-draggable/is-drag-started/is-drag-started-request.d.ts +1 -0
- package/domain/f-draggable/on-pointer-move/on-pointer-move-request.d.ts +1 -0
- package/domain/f-draggable/prepare-drag-sequence/prepare-drag-sequence-request.d.ts +1 -0
- package/domain/f-draggable/remove-dnd-from-store/remove-dnd-from-store-request.d.ts +1 -0
- package/domain/f-draggable/start-drag-sequence/start-drag-sequence-request.d.ts +1 -0
- package/domain/f-flow/add-flow-to-store/add-flow-to-store-request.d.ts +1 -0
- package/domain/f-flow/get-flow/get-flow-request.d.ts +1 -0
- package/domain/f-flow/get-flow-host-element/get-flow-host-element.request.d.ts +1 -0
- package/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.d.ts +1 -0
- package/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.d.ts +1 -0
- package/domain/f-flow/get-flow-state/get-flow-state.request.d.ts +1 -0
- package/domain/f-flow/remove-flow-from-store/remove-flow-from-store-request.d.ts +1 -0
- package/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store-request.d.ts +1 -0
- package/domain/f-line-alignment/remove-line-alignment-from-store/remove-line-alignment-from-store-request.d.ts +1 -0
- package/domain/f-node/add-node-to-store/add-node-to-store-request.d.ts +1 -0
- package/domain/f-node/calculate-input-connections/calculate-input-connections-request.d.ts +1 -0
- package/domain/f-node/calculate-nodes-bounding-box/calculate-nodes-bounding-box.request.d.ts +1 -0
- package/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.request.d.ts +1 -0
- package/domain/f-node/calculate-output-connections/calculate-output-connections-request.d.ts +1 -0
- package/domain/f-node/get-node-padding/get-node-padding.request.d.ts +1 -0
- package/domain/f-node/get-nodes/get-nodes-request.d.ts +1 -0
- package/domain/f-node/get-parent-nodes/get-parent-nodes.request.d.ts +1 -0
- package/domain/f-node/remove-node-from-store/remove-node-from-store-request.d.ts +1 -0
- package/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed-request.d.ts +1 -0
- package/domain/f-selection/clear-selection/clear-selection.request.d.ts +1 -0
- package/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items-request.d.ts +1 -0
- package/domain/f-selection/get-current-selection/get-current-selection.request.d.ts +1 -0
- package/domain/f-selection/select/select.request.d.ts +1 -0
- package/domain/f-selection/select-all/select-all.request.d.ts +1 -0
- package/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.request.d.ts +1 -0
- package/domain/f-zoom/add-zoom-to-store/add-zoom-to-store-request.d.ts +1 -0
- package/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store-request.d.ts +1 -0
- package/domain/f-zoom/reset-zoom/reset-zoom-request.d.ts +1 -0
- package/domain/f-zoom/set-zoom/set-zoom-request.d.ts +1 -0
- package/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.d.ts +1 -0
- package/domain/get-element-rounded-rect/get-element-rounded-rect-request.d.ts +1 -0
- package/domain/get-normalized-connector-rect/get-normalized-connector-rect-request.d.ts +1 -0
- package/domain/get-normalized-element-rect/get-normalized-element-rect-request.d.ts +1 -0
- package/domain/get-normalized-point/get-normalized-point-request.d.ts +1 -0
- package/domain/sort-item-layers/sort-item-layers.request.d.ts +1 -0
- package/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.request.d.ts +1 -0
- package/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.request.d.ts +1 -0
- package/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.d.ts +1 -0
- package/domain/update-item-and-children-layers/update-item-and-children-layers.request.d.ts +1 -0
- package/esm2022/domain/f-background/add-background-to-store/add-background-to-store-request.mjs +2 -1
- package/esm2022/domain/f-background/add-pattern-to-background/add-pattern-to-background.request.mjs +2 -1
- package/esm2022/domain/f-background/remove-background-from-store/remove-background-from-store-request.mjs +2 -1
- package/esm2022/domain/f-background/set-background-transform/set-background-transform-request.mjs +2 -1
- package/esm2022/domain/f-canvas/add-canvas-to-store/add-canvas-to-store-request.mjs +2 -1
- package/esm2022/domain/f-canvas/center-group-or-node/center-group-or-node-request.mjs +2 -1
- package/esm2022/domain/f-canvas/fit-to-flow/fit-to-flow-request.mjs +2 -1
- package/esm2022/domain/f-canvas/get-canvas/get-canvas-request.mjs +2 -1
- package/esm2022/domain/f-canvas/input-canvas-position/input-canvas-position-request.mjs +2 -1
- package/esm2022/domain/f-canvas/input-canvas-scale/input-canvas-scale-request.mjs +2 -1
- package/esm2022/domain/f-canvas/redraw-canvas-with-animation/redraw-canvas-with-animation-request.mjs +2 -1
- package/esm2022/domain/f-canvas/remove-canvas-from-store/remove-canvas-from-store-request.mjs +2 -1
- package/esm2022/domain/f-canvas/reset-scale/reset-scale-request.mjs +2 -1
- package/esm2022/domain/f-canvas/reset-scale-and-center/reset-scale-and-center-request.mjs +2 -1
- package/esm2022/domain/f-canvas/update-scale/update-scale-request.mjs +2 -1
- package/esm2022/domain/f-connection/add-connection-for-create-to-store/add-connection-for-create-to-store-request.mjs +2 -1
- package/esm2022/domain/f-connection/add-connection-marker-to-store/add-connection-marker-to-store-request.mjs +2 -1
- package/esm2022/domain/f-connection/add-connection-to-store/add-connection-to-store-request.mjs +2 -1
- package/esm2022/domain/f-connection/add-snap-connection-to-store/add-snap-connection-to-store-request.mjs +2 -1
- package/esm2022/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.request.mjs +2 -1
- package/esm2022/domain/f-connection/create-connection-markers/create-connection-markers-request.mjs +2 -1
- package/esm2022/domain/f-connection/redraw-connections/redraw-connections-request.mjs +2 -1
- package/esm2022/domain/f-connection/remove-connection-for-create-from-store/remove-connection-for-create-from-store-request.mjs +2 -1
- package/esm2022/domain/f-connection/remove-connection-from-store/remove-connection-from-store-request.mjs +2 -1
- package/esm2022/domain/f-connection/remove-connection-marker-from-store/remove-connection-marker-from-store-request.mjs +2 -1
- package/esm2022/domain/f-connection/remove-snap-connection-from-store/remove-snap-connection-from-store-request.mjs +2 -1
- package/esm2022/domain/f-connectors/add-input-to-store/add-input-to-store-request.mjs +2 -1
- package/esm2022/domain/f-connectors/add-outlet-to-store/add-outlet-to-store-request.mjs +2 -1
- package/esm2022/domain/f-connectors/add-output-to-store/add-output-to-store-request.mjs +2 -1
- package/esm2022/domain/f-connectors/calculate-closest-input/calculate-closest-input.request.mjs +2 -1
- package/esm2022/domain/f-connectors/find-input-at-position/find-input-at-position.request.mjs +2 -1
- package/esm2022/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.mjs +2 -1
- package/esm2022/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.mjs +2 -1
- package/esm2022/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.request.mjs +2 -1
- package/esm2022/domain/f-connectors/remove-input-from-store/remove-input-from-store-request.mjs +2 -1
- package/esm2022/domain/f-connectors/remove-outlet-from-store/remove-outlet-from-store-request.mjs +2 -1
- package/esm2022/domain/f-connectors/remove-output-from-store/remove-output-from-store-request.mjs +2 -1
- package/esm2022/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.request.mjs +2 -1
- package/esm2022/domain/f-draggable/add-dnd-to-store/add-dnd-to-store-request.mjs +2 -1
- package/esm2022/domain/f-draggable/emit-selection-change-event/emit-selection-change-event-request.mjs +2 -1
- package/esm2022/domain/f-draggable/end-drag-sequence/end-drag-sequence-request.mjs +2 -1
- package/esm2022/domain/f-draggable/initialize-drag-sequence/initialize-drag-sequence-request.mjs +2 -1
- package/esm2022/domain/f-draggable/is-drag-started/is-drag-started-request.mjs +2 -1
- package/esm2022/domain/f-draggable/on-pointer-move/on-pointer-move-request.mjs +2 -1
- package/esm2022/domain/f-draggable/prepare-drag-sequence/prepare-drag-sequence-request.mjs +2 -1
- package/esm2022/domain/f-draggable/remove-dnd-from-store/remove-dnd-from-store-request.mjs +2 -1
- package/esm2022/domain/f-draggable/start-drag-sequence/start-drag-sequence-request.mjs +2 -1
- package/esm2022/domain/f-flow/add-flow-to-store/add-flow-to-store-request.mjs +2 -1
- package/esm2022/domain/f-flow/get-flow/get-flow-request.mjs +2 -1
- package/esm2022/domain/f-flow/get-flow-host-element/get-flow-host-element.request.mjs +2 -1
- package/esm2022/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.mjs +2 -1
- package/esm2022/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.mjs +2 -1
- package/esm2022/domain/f-flow/get-flow-state/get-flow-state.request.mjs +2 -1
- package/esm2022/domain/f-flow/remove-flow-from-store/remove-flow-from-store-request.mjs +2 -1
- package/esm2022/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store-request.mjs +2 -1
- package/esm2022/domain/f-line-alignment/remove-line-alignment-from-store/remove-line-alignment-from-store-request.mjs +2 -1
- package/esm2022/domain/f-node/add-node-to-store/add-node-to-store-request.mjs +2 -1
- package/esm2022/domain/f-node/calculate-input-connections/calculate-input-connections-request.mjs +2 -1
- package/esm2022/domain/f-node/calculate-nodes-bounding-box/calculate-nodes-bounding-box.request.mjs +2 -1
- package/esm2022/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.request.mjs +2 -1
- package/esm2022/domain/f-node/calculate-output-connections/calculate-output-connections-request.mjs +2 -1
- package/esm2022/domain/f-node/get-node-padding/get-node-padding.request.mjs +2 -1
- package/esm2022/domain/f-node/get-nodes/get-nodes-request.mjs +2 -1
- package/esm2022/domain/f-node/get-parent-nodes/get-parent-nodes.request.mjs +2 -1
- package/esm2022/domain/f-node/remove-node-from-store/remove-node-from-store-request.mjs +2 -1
- package/esm2022/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed-request.mjs +2 -1
- package/esm2022/domain/f-selection/clear-selection/clear-selection.request.mjs +2 -1
- package/esm2022/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items-request.mjs +2 -1
- package/esm2022/domain/f-selection/get-current-selection/get-current-selection.request.mjs +2 -1
- package/esm2022/domain/f-selection/select/select.request.mjs +2 -1
- package/esm2022/domain/f-selection/select-all/select-all.request.mjs +2 -1
- package/esm2022/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.request.mjs +2 -1
- package/esm2022/domain/f-zoom/add-zoom-to-store/add-zoom-to-store-request.mjs +2 -1
- package/esm2022/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store-request.mjs +2 -1
- package/esm2022/domain/f-zoom/reset-zoom/reset-zoom-request.mjs +2 -1
- package/esm2022/domain/f-zoom/set-zoom/set-zoom-request.mjs +2 -1
- package/esm2022/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.mjs +2 -1
- package/esm2022/domain/get-element-rounded-rect/get-element-rounded-rect-request.mjs +2 -1
- package/esm2022/domain/get-normalized-connector-rect/get-normalized-connector-rect-request.mjs +2 -1
- package/esm2022/domain/get-normalized-element-rect/get-normalized-element-rect-request.mjs +2 -1
- package/esm2022/domain/get-normalized-point/get-normalized-point-request.mjs +2 -1
- package/esm2022/domain/sort-item-layers/sort-item-layers.request.mjs +2 -1
- package/esm2022/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.request.mjs +2 -1
- package/esm2022/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.request.mjs +2 -1
- package/esm2022/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.mjs +2 -1
- package/esm2022/domain/update-item-and-children-layers/update-item-and-children-layers.request.mjs +2 -1
- package/esm2022/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.mjs +2 -1
- package/esm2022/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.mjs +2 -1
- package/esm2022/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.request.mjs +2 -1
- package/esm2022/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.mjs +2 -1
- package/esm2022/f-draggable/domain/is-connection-under-node/is-connection-under-node.request.mjs +2 -1
- package/esm2022/f-draggable/f-canvas/move-finalize/f-canvas-move-finalize.request.mjs +2 -1
- package/esm2022/f-draggable/f-canvas/move-preparation/f-canvas-move-preparation.request.mjs +2 -1
- package/esm2022/f-draggable/f-connection/f-create-connection/create-finalize/f-create-connection-finalize.request.mjs +2 -1
- package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/drag-handler-preparation/f-create-connection-drag-handler-preparation.request.mjs +2 -1
- package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/f-create-connection-preparation.request.mjs +2 -1
- package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/from-outlet-preparation/f-create-connection-from-outlet-preparation.request.mjs +2 -1
- package/esm2022/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/f-create-connection-from-output-preparation.request.mjs +2 -1
- package/esm2022/f-draggable/f-connection/f-create-connection/get-first-connectable-output/get-first-connectable-output.request.mjs +2 -1
- package/esm2022/f-draggable/f-connection/f-reassign-connection/reassign-finalize/f-reassign-connection-finalize.request.mjs +2 -1
- package/esm2022/f-draggable/f-connection/f-reassign-connection/reassign-preparation/f-reassign-connection-preparation.request.mjs +2 -1
- package/esm2022/f-draggable/f-draggable-base.mjs +1 -1
- package/esm2022/f-draggable/f-draggable.directive.mjs +5 -2
- package/esm2022/f-draggable/f-drop-to-group/drop-to-group-finalize/f-node-drop-to-group-finalize.request.mjs +2 -1
- package/esm2022/f-draggable/f-drop-to-group/drop-to-group-preparation/f-node-drop-to-group-preparation.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-limits/calculate-common-node-move-limits.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-limits/calculate-node-move-limits.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-move/f-move-nodes.event.mjs +7 -0
- package/esm2022/f-draggable/f-node-move/index.mjs +2 -1
- package/esm2022/f-draggable/f-node-move/line-alignment-preparation/line-alignment-preparation.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-move/move-finalize/f-node-move-finalize.execution.mjs +11 -1
- package/esm2022/f-draggable/f-node-move/move-finalize/f-node-move-finalize.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-move/move-preparation/f-node-move-preparation.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-resize/calculate-changed-position/calculate-changed-position.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-resize/calculate-changed-size/calculate-changed-size.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-resize/resize-finalize/f-node-resize-finalize.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-resize/resize-preparation/f-node-resize-preparation.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-rotate/rotate-finalize/f-node-rotate-finalize.request.mjs +2 -1
- package/esm2022/f-draggable/f-node-rotate/rotate-preparation/f-node-rotate-preparation.request.mjs +2 -1
- package/esm2022/f-draggable/f-single-select/f-single-select.request.mjs +2 -1
- package/esm2022/f-external-item/domain/create-placeholder/f-external-item-create-placeholder.request.mjs +2 -1
- package/esm2022/f-external-item/domain/create-preview/f-external-item-create-preview.request.mjs +2 -1
- package/esm2022/f-external-item/domain/finalize/f-external-item-finalize.request.mjs +2 -1
- package/esm2022/f-external-item/domain/preparation/f-external-item-preparation.request.mjs +2 -1
- package/esm2022/f-external-item/domain/prevent-default-is-external-item/prevent-default-is-external-item.request.mjs +2 -1
- package/esm2022/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.mjs +2 -1
- package/esm2022/f-minimap/domain/minimap-calculate-svg-scale-and-view-box/minimap-calculate-svg-scale-and-view-box.request.mjs +2 -1
- package/esm2022/f-minimap/domain/minimap-calculate-view-box/minimap-calculate-view-box.request.mjs +2 -1
- package/esm2022/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.mjs +2 -1
- package/esm2022/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.mjs +2 -1
- package/esm2022/f-minimap/domain/minimap-draw-nodes/minimap-draw-nodes.request.mjs +2 -1
- package/esm2022/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.mjs +2 -1
- package/esm2022/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.mjs +2 -1
- package/esm2022/f-storage/features/listen-components-data-changed/listen-data-changes-request.mjs +2 -1
- package/esm2022/f-storage/features/listen-count-changes/listen-count-changes-request.mjs +2 -1
- package/esm2022/f-storage/features/listen-transform-changes/listen-transform-changes.request.mjs +2 -1
- package/esm2022/f-storage/features/notify-data-changed/notify-data-changed-request.mjs +2 -1
- package/esm2022/f-storage/features/notify-transform-changed/notify-transform-changed.request.mjs +2 -1
- package/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.d.ts +1 -0
- package/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.d.ts +1 -0
- package/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.request.d.ts +1 -0
- package/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.d.ts +1 -0
- package/f-draggable/domain/is-connection-under-node/is-connection-under-node.request.d.ts +1 -0
- package/f-draggable/f-canvas/move-finalize/f-canvas-move-finalize.request.d.ts +1 -0
- package/f-draggable/f-canvas/move-preparation/f-canvas-move-preparation.request.d.ts +1 -0
- package/f-draggable/f-connection/f-create-connection/create-finalize/f-create-connection-finalize.request.d.ts +1 -0
- package/f-draggable/f-connection/f-create-connection/create-preparation/drag-handler-preparation/f-create-connection-drag-handler-preparation.request.d.ts +1 -0
- package/f-draggable/f-connection/f-create-connection/create-preparation/f-create-connection-preparation.request.d.ts +1 -0
- package/f-draggable/f-connection/f-create-connection/create-preparation/from-outlet-preparation/f-create-connection-from-outlet-preparation.request.d.ts +1 -0
- package/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/f-create-connection-from-output-preparation.request.d.ts +1 -0
- package/f-draggable/f-connection/f-create-connection/get-first-connectable-output/get-first-connectable-output.request.d.ts +1 -0
- package/f-draggable/f-connection/f-reassign-connection/reassign-finalize/f-reassign-connection-finalize.request.d.ts +1 -0
- package/f-draggable/f-connection/f-reassign-connection/reassign-preparation/f-reassign-connection-preparation.request.d.ts +1 -0
- package/f-draggable/f-connection/providers.d.ts +1 -1
- package/f-draggable/f-draggable-base.d.ts +2 -0
- package/f-draggable/f-draggable.directive.d.ts +3 -1
- package/f-draggable/f-drop-to-group/drop-to-group-finalize/f-node-drop-to-group-finalize.request.d.ts +1 -0
- package/f-draggable/f-drop-to-group/drop-to-group-preparation/f-node-drop-to-group-preparation.request.d.ts +1 -0
- package/f-draggable/f-drop-to-group/providers.d.ts +1 -1
- package/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.d.ts +1 -0
- package/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-limits/calculate-common-node-move-limits.request.d.ts +1 -0
- package/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-limits/calculate-node-move-limits.request.d.ts +1 -0
- package/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.request.d.ts +1 -0
- package/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.request.d.ts +1 -0
- package/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/providers.d.ts +1 -1
- package/f-draggable/f-node-move/f-move-nodes.event.d.ts +11 -0
- package/f-draggable/f-node-move/index.d.ts +1 -0
- package/f-draggable/f-node-move/line-alignment-preparation/line-alignment-preparation.request.d.ts +1 -0
- package/f-draggable/f-node-move/move-finalize/f-node-move-finalize.request.d.ts +1 -0
- package/f-draggable/f-node-move/move-preparation/f-node-move-preparation.request.d.ts +1 -0
- package/f-draggable/f-node-move/providers.d.ts +1 -1
- package/f-draggable/f-node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.d.ts +1 -0
- package/f-draggable/f-node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.d.ts +1 -0
- package/f-draggable/f-node-resize/calculate-changed-position/calculate-changed-position.request.d.ts +1 -0
- package/f-draggable/f-node-resize/calculate-changed-size/calculate-changed-size.request.d.ts +1 -0
- package/f-draggable/f-node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.d.ts +1 -0
- package/f-draggable/f-node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.d.ts +1 -0
- package/f-draggable/f-node-resize/providers.d.ts +1 -1
- package/f-draggable/f-node-resize/resize-finalize/f-node-resize-finalize.request.d.ts +1 -0
- package/f-draggable/f-node-resize/resize-preparation/f-node-resize-preparation.request.d.ts +1 -0
- package/f-draggable/f-node-rotate/rotate-finalize/f-node-rotate-finalize.request.d.ts +1 -0
- package/f-draggable/f-node-rotate/rotate-preparation/f-node-rotate-preparation.request.d.ts +1 -0
- package/f-draggable/f-single-select/f-single-select.request.d.ts +1 -0
- package/f-draggable/providers.d.ts +1 -1
- package/f-external-item/domain/create-placeholder/f-external-item-create-placeholder.request.d.ts +1 -0
- package/f-external-item/domain/create-preview/f-external-item-create-preview.request.d.ts +1 -0
- package/f-external-item/domain/finalize/f-external-item-finalize.request.d.ts +1 -0
- package/f-external-item/domain/preparation/f-external-item-preparation.request.d.ts +1 -0
- package/f-external-item/domain/prevent-default-is-external-item/prevent-default-is-external-item.request.d.ts +1 -0
- package/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.d.ts +1 -0
- package/f-minimap/domain/minimap-calculate-svg-scale-and-view-box/minimap-calculate-svg-scale-and-view-box.request.d.ts +1 -0
- package/f-minimap/domain/minimap-calculate-view-box/minimap-calculate-view-box.request.d.ts +1 -0
- package/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.d.ts +1 -0
- package/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.d.ts +1 -0
- package/f-minimap/domain/minimap-draw-nodes/minimap-draw-nodes.request.d.ts +1 -0
- package/f-minimap/domain/providers.d.ts +1 -1
- package/f-selection-area/domain/providers.d.ts +1 -1
- package/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.d.ts +1 -0
- package/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.d.ts +1 -0
- package/f-storage/features/listen-components-data-changed/listen-data-changes-request.d.ts +1 -0
- package/f-storage/features/listen-count-changes/listen-count-changes-request.d.ts +1 -0
- package/f-storage/features/listen-transform-changes/listen-transform-changes.request.d.ts +1 -0
- package/f-storage/features/notify-data-changed/notify-data-changed-request.d.ts +1 -0
- package/f-storage/features/notify-transform-changed/notify-transform-changed.request.d.ts +1 -0
- package/f-storage/providers.d.ts +1 -1
- package/fesm2022/foblex-flow.mjs +161 -2
- package/fesm2022/foblex-flow.mjs.map +1 -1
- package/package.json +2 -2
- package/schematics/shared/foblex-dependencies.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foblex-flow.mjs","sources":["../../../projects/f-flow/src/f-backgroud/domain/i-f-background-pattern.ts","../../../projects/f-flow/src/domain/get-element-rounded-rect/get-element-rounded-rect-request.ts","../../../projects/f-flow/src/domain/get-element-rounded-rect/get-element-rounded-rect.execution.ts","../../../projects/f-flow/src/domain/f-background/add-background-to-store/add-background-to-store-request.ts","../../../projects/f-flow/src/f-storage/features/notify-data-changed/notify-data-changed-request.ts","../../../projects/f-flow/src/f-storage/features/notify-data-changed/notify-data-changed.execution.ts","../../../projects/f-flow/src/f-storage/features/listen-components-data-changed/listen-data-changes-request.ts","../../../projects/f-flow/src/reactivity/debounce-time.ts","../../../projects/f-flow/src/reactivity/f-channel.ts","../../../projects/f-flow/src/reactivity/f-resize-channel.ts","../../../projects/f-flow/src/reactivity/f-channel-hub.ts","../../../projects/f-flow/src/reactivity/mediator-effect.ts","../../../projects/f-flow/src/reactivity/notify-on-start.ts","../../../projects/f-flow/src/f-storage/features/listen-components-data-changed/listen-data-changes.execution.ts","../../../projects/f-flow/src/f-storage/features/listen-count-changes/listen-count-changes-request.ts","../../../projects/f-flow/src/f-storage/features/listen-count-changes/listen-count-changes.execution.ts","../../../projects/f-flow/src/f-storage/features/listen-transform-changes/listen-transform-changes.request.ts","../../../projects/f-flow/src/f-storage/features/listen-transform-changes/listen-transform-changes.execution.ts","../../../projects/f-flow/src/f-storage/features/notify-transform-changed/notify-transform-changed.request.ts","../../../projects/f-flow/src/f-storage/f-components-store.ts","../../../projects/f-flow/src/f-storage/features/notify-transform-changed/notify-transform-changed.execution.ts","../../../projects/f-flow/src/f-storage/providers.ts","../../../projects/f-flow/src/domain/f-background/add-background-to-store/add-background-to-store.execution.ts","../../../projects/f-flow/src/domain/f-background/add-pattern-to-background/add-pattern-to-background.request.ts","../../../projects/f-flow/src/domain/f-background/add-pattern-to-background/add-pattern-to-background.execution.ts","../../../projects/f-flow/src/domain/f-background/remove-background-from-store/remove-background-from-store-request.ts","../../../projects/f-flow/src/domain/f-background/remove-background-from-store/remove-background-from-store.execution.ts","../../../projects/f-flow/src/domain/f-background/set-background-transform/set-background-transform-request.ts","../../../projects/f-flow/src/domain/f-background/set-background-transform/set-background-transform.execution.ts","../../../projects/f-flow/src/domain/f-background/providers.ts","../../../projects/f-flow/src/domain/f-canvas/add-canvas-to-store/add-canvas-to-store-request.ts","../../../projects/f-flow/src/domain/f-canvas/add-canvas-to-store/add-canvas-to-store.execution.ts","../../../projects/f-flow/src/domain/f-canvas/center-group-or-node/center-group-or-node-request.ts","../../../projects/f-flow/src/domain/f-canvas/center-group-or-node/center-group-or-node.execution.ts","../../../projects/f-flow/src/domain/f-canvas/fit-to-flow/fit-to-flow-request.ts","../../../projects/f-flow/src/domain/f-canvas/fit-to-flow/fit-to-flow.execution.ts","../../../projects/f-flow/src/domain/f-canvas/get-canvas/get-canvas-request.ts","../../../projects/f-flow/src/domain/f-canvas/get-canvas/get-canvas.execution.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-position/input-canvas-position-request.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-position/input-canvas-position.execution.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-scale/input-canvas-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-scale/input-canvas-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/redraw-canvas-with-animation/redraw-canvas-with-animation-request.ts","../../../projects/f-flow/src/domain/transition-end.ts","../../../projects/f-flow/src/domain/f-canvas/redraw-canvas-with-animation/redraw-canvas-with-animation.execution.ts","../../../projects/f-flow/src/domain/f-canvas/remove-canvas-from-store/remove-canvas-from-store-request.ts","../../../projects/f-flow/src/domain/f-canvas/remove-canvas-from-store/remove-canvas-from-store.execution.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale/reset-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale/reset-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale-and-center/reset-scale-and-center-request.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale-and-center/reset-scale-and-center.execution.ts","../../../projects/f-flow/src/domain/f-canvas/update-scale/update-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/update-scale/update-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/providers.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-for-create-to-store/add-connection-for-create-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-for-create-to-store/add-connection-for-create-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-marker-to-store/add-connection-marker-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-marker-to-store/add-connection-marker-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-to-store/add-connection-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-to-store/add-connection-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/add-snap-connection-to-store/add-snap-connection-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-snap-connection-to-store/add-snap-connection-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/create-connection-markers/create-connection-markers-request.ts","../../../projects/f-flow/src/domain/f-connection/create-connection-markers/create-connection-markers.execution.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.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-connectors/e-f-connectable-side.ts","../../../projects/f-flow/src/f-connectors/f-connector-base.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input-base.ts","../../../projects/f-flow/src/f-node/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-node/f-rotate-handle/is-rotate-handle.ts","../../../projects/f-flow/src/f-node/f-drag-handle.directive.ts","../../../projects/f-flow/src/mixins/change-selection/change-selection.ts","../../../projects/f-flow/src/mixins/change-visibility/change-visibility.ts","../../../projects/f-flow/src/f-node/f-node-base.ts","../../../projects/f-flow/src/f-node/f-group.directive.ts","../../../projects/f-flow/src/f-node/f-node.directive.ts","../../../projects/f-flow/src/f-node/is-node.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-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/domain/css-cls.ts","../../../projects/f-flow/src/f-connection/common/f-drag-handle/f-connection-drag-handle-start.component.ts","../../../projects/f-flow/src/f-connection/common/f-drag-handle/f-connection-drag-handle-end.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/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.execution.ts","../../../projects/f-flow/src/domain/f-connection/redraw-connections/redraw-connections-request.ts","../../../projects/f-flow/src/domain/get-normalized-connector-rect/get-normalized-connector-rect-request.ts","../../../projects/f-flow/src/domain/get-normalized-point/get-normalized-point-request.ts","../../../projects/f-flow/src/domain/get-normalized-point/get-normalized-point.execution.ts","../../../projects/f-flow/src/domain/get-normalized-connector-rect/get-normalized-connector-rect.execution.ts","../../../projects/f-flow/src/domain/f-connection/redraw-connections/redraw-connections.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-for-create-from-store/remove-connection-for-create-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-for-create-from-store/remove-connection-for-create-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-from-store/remove-connection-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-from-store/remove-connection-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-marker-from-store/remove-connection-marker-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-marker-from-store/remove-connection-marker-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-snap-connection-from-store/remove-snap-connection-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-snap-connection-from-store/remove-snap-connection-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/providers.ts","../../../projects/f-flow/src/domain/f-connectors/add-input-to-store/add-input-to-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/add-input-to-store/add-input-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/add-outlet-to-store/add-outlet-to-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/add-outlet-to-store/add-outlet-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/add-output-to-store/add-output-to-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/add-output-to-store/add-output-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/calculate-closest-input/calculate-closest-input.request.ts","../../../projects/f-flow/src/domain/f-connectors/calculate-closest-input/calculate-closest-input.execution.ts","../../../projects/f-flow/src/domain/f-connectors/find-input-at-position/find-input-at-position.request.ts","../../../projects/f-flow/src/domain/f-connectors/find-input-at-position/find-input-at-position.execution.ts","../../../projects/f-flow/src/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.ts","../../../projects/f-flow/src/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.ts","../../../projects/f-flow/src/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.execution.ts","../../../projects/f-flow/src/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.execution.ts","../../../projects/f-flow/src/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.request.ts","../../../projects/f-flow/src/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.execution.ts","../../../projects/f-flow/src/domain/f-connectors/remove-input-from-store/remove-input-from-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/remove-input-from-store/remove-input-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/remove-outlet-from-store/remove-outlet-from-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/remove-outlet-from-store/remove-outlet-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/remove-output-from-store/remove-output-from-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/remove-output-from-store/remove-output-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.request.ts","../../../projects/f-flow/src/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.execution.ts","../../../projects/f-flow/src/domain/f-connectors/providers.ts","../../../projects/f-flow/src/domain/f-draggable/add-dnd-to-store/add-dnd-to-store-request.ts","../../../projects/f-flow/src/domain/f-draggable/add-dnd-to-store/add-dnd-to-store.execution.ts","../../../projects/f-flow/src/domain/f-draggable/emit-selection-change-event/emit-selection-change-event-request.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/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/is-connection-under-node/f-node-intersected-with-connections.ts","../../../projects/f-flow/src/f-draggable/domain/is-connection-under-node/is-connection-under-node.request.ts","../../../projects/f-flow/src/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.ts","../../../projects/f-flow/src/f-draggable/domain/f-drag-started-event.ts","../../../projects/f-flow/src/f-draggable/domain/providers.ts","../../../projects/f-flow/src/f-draggable/f-canvas/move-finalize/f-canvas-move-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-draggable-data-context.ts","../../../projects/f-flow/src/f-draggable/f-canvas/f-canvas.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-canvas/move-finalize/f-canvas-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/f-canvas/move-preparation/f-canvas-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-canvas/move-preparation/f-canvas-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-canvas/providers.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-finalize/f-create-connection-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/get-first-connectable-output/get-first-connectable-output.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/get-first-connectable-output/get-first-connectable-output.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/f-create-connection.event.ts","../../../projects/f-flow/src/f-draggable/f-drag-handler/f-drag-handler-result.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/f-create-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-finalize/f-create-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/drag-handler-preparation/f-create-connection-drag-handler-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/drag-handler-preparation/f-create-connection-drag-handler-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/from-outlet-preparation/f-create-connection-from-outlet-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/from-outlet-preparation/f-create-connection-from-outlet-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/f-create-connection-from-output-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/f-create-connection-from-output-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/f-create-connection-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/f-create-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-reassign-connection/reassign-finalize/f-reassign-connection-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-reassign-connection/f-reassign-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-reassign-connection/f-reassign-connection.event.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-reassign-connection/reassign-finalize/f-reassign-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-reassign-connection/reassign-preparation/f-reassign-connection-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-reassign-connection/reassign-preparation/f-reassign-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/providers.ts","../../../projects/f-flow/src/f-draggable/f-drop-to-group/drop-to-group-finalize/f-node-drop-to-group-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-drop-to-group/f-node-drop-to-group.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-move/connection-drag-handlers/base-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-move/connection-drag-handlers/source-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-move/connection-drag-handlers/source-target-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-move/connection-drag-handlers/target-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-limits/calculate-common-node-move-limits.request.ts","../../../projects/f-flow/src/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-limits/calculate-common-node-move-limits.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-move/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/f-node-move/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/f-node-move/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/f-node-move/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/f-node-move/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-limits/calculate-node-move-limits.request.ts","../../../projects/f-flow/src/utils/infinity-min-max.ts","../../../projects/f-flow/src/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-limits/calculate-node-move-limits.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.ts","../../../projects/f-flow/src/f-draggable/f-node-move/f-node-move.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-move/point-bounds-limiter.ts","../../../projects/f-flow/src/f-draggable/f-node-move/f-summary-node-move.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/providers.ts","../../../projects/f-flow/src/f-draggable/f-node-move/line-alignment-preparation/line-alignment-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-node-move/f-line-alignment.drag-handler.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/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-draggable/f-node-move/line-alignment-preparation/line-alignment-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-move/move-preparation/f-node-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-node-move/move-preparation/f-node-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-move/move-finalize/f-node-move-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-node-move/move-finalize/f-node-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-move/providers.ts","../../../projects/f-flow/src/f-draggable/f-drop-to-group/f-drop-to-group.event.ts","../../../projects/f-flow/src/f-draggable/f-drop-to-group/drop-to-group-finalize/f-node-drop-to-group-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/f-drop-to-group/drop-to-group-preparation/f-node-drop-to-group-preparation.request.ts","../../../projects/f-flow/src/f-external-item/domain/create-placeholder/f-external-item-create-placeholder.request.ts","../../../projects/f-flow/src/f-external-item/domain/create-placeholder/f-external-item-create-placeholder.execution.ts","../../../projects/f-flow/src/f-external-item/domain/create-preview/f-external-item-create-preview.request.ts","../../../projects/f-flow/src/f-external-item/domain/create-preview/f-external-item-create-preview.execution.ts","../../../projects/f-flow/src/f-external-item/domain/finalize/f-external-item-finalize.request.ts","../../../projects/f-flow/src/f-external-item/domain/f-external-item.drag-handler.ts","../../../projects/f-flow/src/f-external-item/domain/f-create-node.event.ts","../../../projects/f-flow/src/f-external-item/domain/finalize/f-external-item-finalize.execution.ts","../../../projects/f-flow/src/f-external-item/domain/preparation/f-external-item-preparation.request.ts","../../../projects/f-flow/src/f-external-item/domain/preparation/f-external-item-preparation.execution.ts","../../../projects/f-flow/src/f-external-item/domain/prevent-default-is-external-item/prevent-default-is-external-item.request.ts","../../../projects/f-flow/src/f-external-item/is-external-item.ts","../../../projects/f-flow/src/f-external-item/domain/prevent-default-is-external-item/prevent-default-is-external-item.execution.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/f-external-item.service.ts","../../../projects/f-flow/src/f-external-item/f-external-item-token.ts","../../../projects/f-flow/src/f-external-item/f-external-item.directive.ts","../../../projects/f-flow/src/f-external-item/f-external-item-placeholder.directive.ts","../../../projects/f-flow/src/f-external-item/f-external-item-preview.directive.ts","../../../projects/f-flow/src/f-external-item/providers.ts","../../../projects/f-flow/src/f-draggable/f-drop-to-group/drop-to-group-preparation/f-node-drop-to-group-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-drop-to-group/providers.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/calculate-changed-position/calculate-changed-position.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/resize-direction.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/calculate-changed-position/calculate-changed-position.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/calculate-changed-size/calculate-changed-size.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/calculate-changed-size/calculate-changed-size.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/resize-finalize/f-node-resize-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/f-node-resize.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/resize-finalize/f-node-resize-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/resize-preparation/f-node-resize-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/resize-preparation/f-node-resize-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/providers.ts","../../../projects/f-flow/src/f-draggable/f-node-rotate/rotate-finalize/f-node-rotate-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-node-rotate/calculate-difference-after-rotation.ts","../../../projects/f-flow/src/f-draggable/f-node-rotate/f-node-rotate.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-rotate/rotate-finalize/f-node-rotate-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-rotate/rotate-preparation/f-node-rotate-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-node-rotate/rotate-preparation/f-node-rotate-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-rotate/providers.ts","../../../projects/f-flow/src/f-draggable/f-single-select/f-single-select.request.ts","../../../projects/f-flow/src/f-draggable/f-single-select/f-single-select.execution.ts","../../../projects/f-flow/src/f-draggable/f-single-select/providers.ts","../../../projects/f-flow/src/drag-toolkit/pointer-events/i-pointer-event.ts","../../../projects/f-flow/src/drag-toolkit/pointer-events/i-mouse-event.ts","../../../projects/f-flow/src/drag-toolkit/pointer-events/i-pointer-up-event.ts","../../../projects/f-flow/src/drag-toolkit/pointer-events/i-touch-down-event.ts","../../../projects/f-flow/src/drag-toolkit/pointer-events/i-touch-move-event.ts","../../../projects/f-flow/src/drag-toolkit/event.extensions.ts","../../../projects/f-flow/src/drag-toolkit/drag-and-drop-base.ts","../../../projects/f-flow/src/f-draggable/f-draggable-base.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/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/providers.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-draw-nodes/minimap-draw-nodes.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-draw-nodes/minimap-draw-nodes.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-view-box/minimap-calculate-view-box.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-view-box/minimap-calculate-view-box.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-svg-scale-and-view-box/minimap-calculate-svg-scale-and-view-box.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-svg-scale-and-view-box/minimap-calculate-svg-scale-and-view-box.execution.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.drag-handle.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.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/providers.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area-base.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area.component.ts","../../../projects/f-flow/src/f-selection-area/providers.ts","../../../projects/f-flow/src/f-draggable/providers.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.request.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items-request.ts","../../../projects/f-flow/src/domain/get-normalized-element-rect/get-normalized-element-rect-request.ts","../../../projects/f-flow/src/domain/get-normalized-element-rect/get-normalized-element-rect.execution.ts","../../../projects/f-flow/src/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items.execution.ts","../../../projects/f-flow/src/domain/f-selection/get-current-selection/get-current-selection.request.ts","../../../projects/f-flow/src/domain/f-selection/get-current-selection/get-current-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/select/select.request.ts","../../../projects/f-flow/src/domain/f-selection/select/select.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.request.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.execution.ts","../../../projects/f-flow/src/domain/f-selection/providers.ts","../../../projects/f-flow/src/domain/f-draggable/emit-selection-change-event/emit-selection-change-event.execution.ts","../../../projects/f-flow/src/domain/f-draggable/end-drag-sequence/end-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/end-drag-sequence/end-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/on-pointer-move/on-pointer-move-request.ts","../../../projects/f-flow/src/domain/f-draggable/on-pointer-move/on-pointer-move.execution.ts","../../../projects/f-flow/src/domain/f-draggable/initialize-drag-sequence/initialize-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/initialize-drag-sequence/initialize-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/is-drag-started/is-drag-started-request.ts","../../../projects/f-flow/src/domain/f-draggable/is-drag-started/is-drag-started.execution.ts","../../../projects/f-flow/src/domain/f-draggable/prepare-drag-sequence/prepare-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/start-drag-sequence/start-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/start-drag-sequence/start-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/prepare-drag-sequence/prepare-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/remove-dnd-from-store/remove-dnd-from-store-request.ts","../../../projects/f-flow/src/domain/f-draggable/remove-dnd-from-store/remove-dnd-from-store.execution.ts","../../../projects/f-flow/src/domain/f-draggable/providers.ts","../../../projects/f-flow/src/domain/f-flow/add-flow-to-store/add-flow-to-store-request.ts","../../../projects/f-flow/src/domain/f-flow/add-flow-to-store/add-flow-to-store.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow/get-flow-request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow/get-flow.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-host-element/get-flow-host-element.request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-host-element/get-flow-host-element.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state.request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/providers.ts","../../../projects/f-flow/src/domain/f-flow/remove-flow-from-store/remove-flow-from-store-request.ts","../../../projects/f-flow/src/domain/f-flow/remove-flow-from-store/remove-flow-from-store.execution.ts","../../../projects/f-flow/src/domain/f-flow/providers.ts","../../../projects/f-flow/src/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store-request.ts","../../../projects/f-flow/src/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store.execution.ts","../../../projects/f-flow/src/domain/f-line-alignment/remove-line-alignment-from-store/remove-line-alignment-from-store-request.ts","../../../projects/f-flow/src/domain/f-line-alignment/remove-line-alignment-from-store/remove-line-alignment-from-store.execution.ts","../../../projects/f-flow/src/domain/f-line-alignment/providers.ts","../../../projects/f-flow/src/domain/f-node/add-node-to-store/add-node-to-store-request.ts","../../../projects/f-flow/src/domain/f-node/add-node-to-store/add-node-to-store.execution.ts","../../../projects/f-flow/src/domain/f-node/calculate-input-connections/calculate-input-connections-request.ts","../../../projects/f-flow/src/domain/f-node/calculate-input-connections/calculate-input-connections.execution.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box/calculate-nodes-bounding-box.request.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box/calculate-nodes-bounding-box.execution.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.request.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.execution.ts","../../../projects/f-flow/src/domain/f-node/calculate-output-connections/calculate-output-connections-request.ts","../../../projects/f-flow/src/domain/f-node/calculate-output-connections/calculate-output-connections.execution.ts","../../../projects/f-flow/src/domain/f-node/get-node-padding/get-node-padding.request.ts","../../../projects/f-flow/src/domain/f-node/get-node-padding/get-node-padding.execution.ts","../../../projects/f-flow/src/domain/f-node/get-nodes/get-nodes-request.ts","../../../projects/f-flow/src/domain/f-node/get-nodes/get-nodes.execution.ts","../../../projects/f-flow/src/domain/f-node/get-parent-nodes/get-parent-nodes.request.ts","../../../projects/f-flow/src/domain/f-node/get-parent-nodes/get-parent-nodes.execution.ts","../../../projects/f-flow/src/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed-request.ts","../../../projects/f-flow/src/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed.execution.ts","../../../projects/f-flow/src/domain/f-node/remove-node-from-store/remove-node-from-store-request.ts","../../../projects/f-flow/src/domain/f-node/remove-node-from-store/remove-node-from-store.execution.ts","../../../projects/f-flow/src/domain/f-node/providers.ts","../../../projects/f-flow/src/domain/f-zoom/add-zoom-to-store/add-zoom-to-store-request.ts","../../../projects/f-flow/src/domain/f-zoom/f-zoom-tag.ts","../../../projects/f-flow/src/domain/f-zoom/add-zoom-to-store/add-zoom-to-store.execution.ts","../../../projects/f-flow/src/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store-request.ts","../../../projects/f-flow/src/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store.execution.ts","../../../projects/f-flow/src/domain/f-zoom/reset-zoom/reset-zoom-request.ts","../../../projects/f-flow/src/domain/f-zoom/reset-zoom/reset-zoom.execution.ts","../../../projects/f-flow/src/domain/f-zoom/set-zoom/set-zoom-request.ts","../../../projects/f-flow/src/domain/f-zoom/set-zoom/set-zoom.execution.ts","../../../projects/f-flow/src/domain/f-zoom/providers.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/create-dom-element.ts","../../../projects/f-flow/src/domain/f-event-trigger.ts","../../../projects/f-flow/src/domain/is-mobile.ts","../../../projects/f-flow/src/domain/log-deprecated.ts","../../../projects/f-flow/src/domain/log-execution-time.ts","../../../projects/f-flow/src/domain/providers.ts","../../../projects/f-flow/src/f-backgroud/f-rect-pattern/f-rect-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-circle-pattern/f-circle-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-background-base.ts","../../../projects/f-flow/src/f-backgroud/f-background.component.ts","../../../projects/f-flow/src/f-backgroud/providers.ts","../../../projects/f-flow/src/f-canvas/domain/f-canvas-change.event.ts","../../../projects/f-flow/src/f-canvas/f-canvas-base.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.html","../../../projects/f-flow/src/f-canvas/providers.ts","../../../projects/f-flow/src/f-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-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/e-f-zoom-direction.ts","../../../projects/f-flow/src/f-zoom/f-zoom-base.ts","../../../projects/f-flow/src/f-zoom/f-zoom.directive.ts","../../../projects/f-flow/src/f-zoom/providers.ts","../../../projects/f-flow/src/f-flow.module.ts","../../../projects/f-flow/src/foblex-flow.ts"],"sourcesContent":["import { ITransformModel } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_BACKGROUND_PATTERN = new InjectionToken<IFBackgroundPattern>('F_BACKGROUND_PATTERN');\n\nexport interface IFBackgroundPattern {\n\n hostElement: HTMLElement | SVGElement;\n\n setTransform(transform: ITransformModel): void;\n}\n","export class GetElementRoundedRectRequest {\n constructor(\n public element: HTMLElement | SVGElement,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetElementRoundedRectRequest } from './get-element-rounded-rect-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { RoundedRect, RectExtensions, IRect } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(GetElementRoundedRectRequest)\nexport class GetElementRoundedRectExecution implements IExecution<GetElementRoundedRectRequest, RoundedRect> {\n\n private _fBrowser = inject(BrowserService);\n\n public handle(request: GetElementRoundedRectRequest): RoundedRect {\n return this._getRoundedRect(\n RectExtensions.fromElement(request.element), request.element, this._getComputedStyle(request.element)\n );\n }\n\n private _getRoundedRect(rect: IRect, element: HTMLElement | SVGElement, styles: CSSStyleDeclaration): RoundedRect {\n return new RoundedRect(\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n this._toPixels(styles.borderTopLeftRadius, element, styles.fontSize),\n this._toPixels(styles.borderTopRightRadius, element, styles.fontSize),\n this._toPixels(styles.borderBottomRightRadius, element, styles.fontSize),\n this._toPixels(styles.borderBottomLeftRadius, element, styles.fontSize)\n );\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","import { FBackgroundBase } from '../../../f-backgroud';\n\nexport class AddBackgroundToStoreRequest {\n\n constructor(\n public fBackground: FBackgroundBase\n ) {\n }\n}\n","export class NotifyDataChangedRequest {\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { NotifyDataChangedRequest } from './notify-data-changed-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(NotifyDataChangedRequest)\nexport class NotifyDataChangedExecution implements IExecution<NotifyDataChangedRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: NotifyDataChangedRequest): void {\n this._fComponentsStore.dataChanged();\n }\n}\n","export class ListenDataChangesRequest {\n\n}\n","import { FChannelOperator } from './types';\n\nexport function debounceTime(delay: number): FChannelOperator {\n let timeoutId: any;\n return callback => {\n return () => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => callback(), delay);\n };\n };\n}\n","import { FChannelListener } from './types';\n\nexport class FChannel {\n\n protected _listeners = new Set<FChannelListener>();\n\n public notify(): void {\n this._listeners.forEach((callback) => callback());\n }\n\n public listen(callback: FChannelListener): () => void {\n this._listeners.add(callback);\n return () => this.stop(callback);\n }\n\n public stop(callback: FChannelListener): void {\n this._listeners.delete(callback);\n }\n}\n\n","import { FChannelListener } from './types';\nimport { FChannel } from './f-channel';\n\nexport class FResizeChannel extends FChannel {\n\n private _observer = new ResizeObserver(() => this.notify());\n\n private _isObserving = false;\n\n constructor(private _htmlElement: HTMLElement | SVGElement) {\n super();\n }\n\n public override listen(callback: FChannelListener): () => void {\n if (!this._isObserving) {\n this._observer.observe(this._htmlElement);\n this._isObserving = true;\n }\n return super.listen(callback);\n }\n\n public override stop(callback: FChannelListener): void {\n super.stop(callback);\n if (this._listeners.size === 0) {\n this._disconnect();\n }\n }\n\n private _disconnect(): void {\n this._observer.unobserve(this._htmlElement);\n this._observer.disconnect();\n this._isObserving = false;\n }\n}\n","import { FChannel } from './f-channel';\nimport { FChannelListener, FChannelOperator } from './types';\nimport { DestroyRef } from '@angular/core';\n\nexport class FChannelHub {\n\n private readonly _channels: FChannel[] = [];\n\n private _operators: FChannelOperator[] = [];\n\n constructor(...channels: FChannel[]) {\n this._channels = [...channels];\n }\n\n public pipe(...operators: FChannelOperator[]): FChannelHub {\n const result = new FChannelHub(...this._channels);\n result._operators = [...this._operators, ...operators];\n return result;\n }\n\n public listen(destroyRef: DestroyRef, callback: FChannelListener): void {\n let modifiedCallback = callback;\n\n this._operators.forEach(operator => {\n modifiedCallback = operator(modifiedCallback);\n });\n\n const unsubscribeCallbacks = this._channels.map(channel =>\n channel.listen(() => modifiedCallback())\n );\n\n destroyRef.onDestroy(() => {\n unsubscribeCallbacks.forEach(unsubscribe => unsubscribe());\n });\n }\n}\n","import { CreateEffectOptions, effect } from '@angular/core';\nimport { FMediator } from '@foblex/mediator';\n\nexport function mediatorEffect(fn: () => any, options?: CreateEffectOptions) {\n let isFirstRun = true;\n\n return effect(() => {\n const request = fn();\n if (isFirstRun) {\n isFirstRun = false;\n return;\n }\n options?.injector?.get(FMediator).execute(request);\n }, options);\n}\n","import { FChannelOperator } from './types';\n\nexport function notifyOnStart(): FChannelOperator {\n return callback => {\n callback();\n return callback;\n };\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ListenDataChangesRequest } from './listen-data-changes-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../../../reactivity';\n\n@Injectable()\n@FExecutionRegister(ListenDataChangesRequest)\nexport class ListenDataChangesExecution implements IExecution<ListenDataChangesRequest, FChannelHub> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: ListenDataChangesRequest): FChannelHub {\n return new FChannelHub(this._fComponentsStore.dataChanges$)\n .pipe(notifyOnStart(), debounceTime(1));\n }\n}\n","export class ListenCountChangesRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ListenCountChangesRequest } from './listen-count-changes-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../../../reactivity';\n\n@Injectable()\n@FExecutionRegister(ListenCountChangesRequest)\nexport class ListenCountChangesExecution implements IExecution<ListenCountChangesRequest, FChannelHub> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: ListenCountChangesRequest): FChannelHub {\n return new FChannelHub(this._fComponentsStore.countChanges$)\n .pipe(notifyOnStart(), debounceTime(1));\n }\n}\n\n","export class ListenTransformChangesRequest {\n\n}\n","import { ListenTransformChangesRequest } from './listen-transform-changes.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../index';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FChannelHub } from '../../../reactivity';\n\n@Injectable()\n@FExecutionRegister(ListenTransformChangesRequest)\nexport class ListenTransformChangesExecution\n implements IExecution<ListenTransformChangesRequest, FChannelHub> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: ListenTransformChangesRequest): FChannelHub {\n return new FChannelHub(\n this._fComponentsStore.transformChanges$,\n this._fComponentsStore.dataChanges$,\n this._fComponentsStore.countChanges$\n );\n }\n}\n","export class NotifyTransformChangedRequest {\n\n}\n","import { Injectable } from '@angular/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';\nimport { FChannel } from '../reactivity';\nimport { FLineAlignmentBase } from '../f-line-alignment';\nimport { IMap } from '../domain';\n\n@Injectable()\nexport class FComponentsStore {\n\n public readonly transformChanges$ = new FChannel();\n\n public readonly dataChanges$ = new FChannel();\n\n public readonly countChanges$ = new FChannel();\n\n public get flowHost(): HTMLElement {\n return this.fFlow?.hostElement!;\n }\n\n public fComponents: IMap<any> = {};\n\n public fFlow: FFlowBase | undefined;\n\n public fCanvas: FCanvasBase | undefined;\n\n public fBackground: FBackgroundBase | undefined;\n\n public fNodes: FNodeBase[] = [];\n\n public fConnections: FConnectionBase[] = [];\n\n public fTempConnection: FConnectionBase | undefined;\n\n public fSnapConnection: FConnectionBase | undefined;\n\n public fMarkers: FMarkerBase[] = [];\n\n public fOutputs: FConnectorBase[] = [];\n\n public fInputs: FConnectorBase[] = [];\n\n public fOutlets: FConnectorBase[] = [];\n\n public fDraggable: FDraggableBase | undefined;\n\n public fLineAlignment: FLineAlignmentBase | undefined;\n\n public addComponent<T>(collection: T[], component: T): void {\n collection.push(component);\n this.countChanged();\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.countChanged();\n }\n }\n\n public countChanged(): void {\n this.countChanges$.notify();\n }\n\n public dataChanged(): void {\n this.dataChanges$.notify();\n }\n\n public transformChanged(): void {\n this.transformChanges$.notify();\n }\n}\n","import { NotifyTransformChangedRequest } from './notify-transform-changed.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-components-store';\n\n@Injectable()\n@FExecutionRegister(NotifyTransformChangedRequest)\nexport class NotifyTransformChangedExecution\n implements IExecution<NotifyTransformChangedRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: NotifyTransformChangedRequest): void {\n this._fComponentsStore.transformChanged();\n }\n}\n","import { NotifyDataChangedExecution } from './features/notify-data-changed';\nimport { ListenDataChangesExecution } from './features/listen-components-data-changed';\nimport { FComponentsStore } from './f-components-store';\nimport { ListenCountChangesExecution } from './features/listen-count-changes';\nimport { ListenTransformChangesExecution } from './features/listen-transform-changes';\nimport { NotifyTransformChangedExecution } from './features/notify-transform-changed';\n\nexport const F_STORAGE_PROVIDERS = [\n\n NotifyDataChangedExecution,\n\n ListenCountChangesExecution,\n\n ListenDataChangesExecution,\n\n ListenTransformChangesExecution,\n\n NotifyTransformChangedExecution,\n\n FComponentsStore,\n];\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddBackgroundToStoreRequest } from './add-background-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddBackgroundToStoreRequest)\nexport class AddBackgroundToStoreExecution implements IExecution<AddBackgroundToStoreRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddBackgroundToStoreRequest): void {\n this._fComponentsStore.fBackground = request.fBackground;\n }\n}\n","import { IFBackgroundPattern } from '../../../f-backgroud';\n\nexport class AddPatternToBackgroundRequest {\n constructor(\n public fPattern: IFBackgroundPattern | undefined\n ) {\n }\n}\n","import { TransformModelExtensions } from '@foblex/2d';\nimport { AddPatternToBackgroundRequest } from './add-pattern-to-background.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { createSVGElement } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { FBackgroundBase } from '../../../f-backgroud';\n\nlet uniqueId: number = 0;\n\n@Injectable()\n@FExecutionRegister(AddPatternToBackgroundRequest)\nexport class AddPatternToBackgroundExecution implements IExecution<AddPatternToBackgroundRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fBrowser = inject(BrowserService);\n\n private get _fBackground(): FBackgroundBase {\n return this._fComponentsStore.fBackground!;\n }\n\n public handle(request: AddPatternToBackgroundRequest): void {\n const children = request.fPattern?.hostElement.getElementsByTagName('pattern') || [];\n const pattern = children.length ? children[ 0 ] : undefined;\n if (pattern) {\n const defs = createSVGElement('defs', this._fBrowser);\n pattern.id = 'f-background-pattern-' + uniqueId++;\n request.fPattern?.hostElement.remove();\n defs.appendChild(pattern);\n this._fBackground.hostElement?.firstChild?.appendChild(defs);\n const rect = createSVGElement('rect', this._fBrowser);\n rect.setAttribute('fill', 'url(#' + pattern.id + ')');\n rect.setAttribute('width', '100%');\n rect.setAttribute('height', '100%');\n this._fBackground.hostElement.firstChild?.appendChild(rect);\n const transform = this._fComponentsStore.fCanvas?.transform || TransformModelExtensions.default();\n request.fPattern?.setTransform(transform);\n }\n }\n}\n","import { FBackgroundBase } from '../../../f-backgroud';\n\nexport class RemoveBackgroundFromStoreRequest {\n\n constructor(\n public fConnection: FBackgroundBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveBackgroundFromStoreRequest } from './remove-background-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveBackgroundFromStoreRequest)\nexport class RemoveBackgroundFromStoreExecution implements IExecution<RemoveBackgroundFromStoreRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveBackgroundFromStoreRequest): void {\n this._fComponentsStore.fBackground = undefined;\n }\n}\n","import { ITransformModel } from '@foblex/2d';\n\nexport class SetBackgroundTransformRequest {\n\n constructor(\n public fTransform: ITransformModel\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { SetBackgroundTransformRequest } from './set-background-transform-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(SetBackgroundTransformRequest)\nexport class SetBackgroundTransformExecution implements IExecution<SetBackgroundTransformRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: SetBackgroundTransformRequest): void {\n this._fComponentsStore.fBackground?.setTransform(request.fTransform);\n }\n}\n","import { AddPatternToBackgroundExecution } from './add-pattern-to-background';\nimport { AddBackgroundToStoreExecution } from './add-background-to-store';\nimport { RemoveBackgroundFromStoreExecution } from './remove-background-from-store';\nimport { SetBackgroundTransformExecution } from './set-background-transform';\n\nexport const F_BACKGROUND_FEATURES = [\n\n AddBackgroundToStoreExecution,\n\n AddPatternToBackgroundExecution,\n\n RemoveBackgroundFromStoreExecution,\n\n SetBackgroundTransformExecution\n];\n","import { FCanvasBase } from '../../../f-canvas';\n\nexport class AddCanvasToStoreRequest {\n\n constructor(\n public fCanvas: FCanvasBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddCanvasToStoreRequest } from './add-canvas-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddCanvasToStoreRequest)\nexport class AddCanvasToStoreExecution implements IExecution<AddCanvasToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddCanvasToStoreRequest): void {\n this._fComponentsStore.fCanvas = request.fCanvas;\n }\n}\n","export class CenterGroupOrNodeRequest {\n\n constructor(\n public id: string,\n public animated: boolean\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { CenterGroupOrNodeRequest } from './center-group-or-node-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { RedrawCanvasWithAnimationRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(CenterGroupOrNodeRequest)\nexport class CenterGroupOrNodeExecution implements IExecution<CenterGroupOrNodeRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private _fMediator = inject(FMediator);\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 this._fMediator.execute(new RedrawCanvasWithAnimationRequest(request.animated));\n }\n\n public toCenter(fNodeRect: IRect, fFlowRect: IRect, position: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = PointExtensions.initialize(\n (fFlowRect.width - fNodeRect.width) / 2 - position.x * this.transform.scale,\n (fFlowRect.height - fNodeRect.height) / 2 - position.y * this.transform.scale\n );\n }\n\n private getNode(id: string): FNodeBase | undefined {\n return this._fComponentsStore.fNodes.find((x) => x.fId === id);\n }\n\n private getNodeRect(fNode: FNodeBase): IRect {\n return RectExtensions.fromElement(fNode.hostElement);\n }\n\n private getFlowRect(): IRect {\n return RectExtensions.fromElement(this._fComponentsStore.fFlow!.hostElement);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FitToFlowRequest {\n\n constructor(\n public toCenter: IPoint,\n public animated: boolean\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FitToFlowRequest } from './fit-to-flow-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { CalculateNodesBoundingBoxRequest, RedrawCanvasWithAnimationRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(FitToFlowRequest)\nexport class FitToFlowExecution implements IExecution<FitToFlowRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private _fMediator = inject(FMediator);\n\n public handle(request: FitToFlowRequest): void {\n const fNodesRect = this._fMediator.execute<IRect | null>(new CalculateNodesBoundingBoxRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n\n this.fitToParent(\n fNodesRect,\n RectExtensions.fromElement(this._fComponentsStore.fFlow!.hostElement),\n this._fComponentsStore.fNodes.map((x) => x.position),\n request.toCenter\n );\n\n this._fMediator.execute(new RedrawCanvasWithAnimationRequest(request.animated));\n }\n\n public fitToParent(rect: IRect, parentRect: IRect, points: IPoint[], toCenter: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n const itemsContainerWidth = (rect.width / this.transform.scale) + toCenter.x;\n const itemsContainerHeight = (rect.height / this.transform.scale) + toCenter.y;\n if (\n (itemsContainerWidth > parentRect.width || itemsContainerHeight > parentRect.height) ||\n itemsContainerWidth < parentRect.width && itemsContainerHeight < parentRect.height\n ) {\n this.transform.scale = Math.min(parentRect.width / itemsContainerWidth, parentRect.height / itemsContainerHeight);\n }\n\n const newX = (parentRect.width - itemsContainerWidth * this.transform.scale) / 2 - this.transform.position.x * this.transform.scale;\n const newY = (parentRect.height - itemsContainerHeight * this.transform.scale) / 2 - this.transform.position.y * this.transform.scale;\n\n this.transform.position = PointExtensions.initialize(newX + (toCenter.x / 2) * this.transform.scale, newY + (toCenter.y / 2) * this.transform.scale)\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","export class GetCanvasRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetCanvasRequest } from './get-canvas-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FCanvasBase } from '../../../f-canvas';\n\n@Injectable()\n@FExecutionRegister(GetCanvasRequest)\nexport class GetCanvasExecution implements IExecution<GetCanvasRequest, FCanvasBase> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetCanvasRequest): FCanvasBase {\n const result = this._fComponentsStore.fCanvas;\n if (!result) {\n throw new Error(`Canvas not found in store`);\n }\n return result;\n }\n}\n","import { IPoint, ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasPositionRequest {\n\n constructor(\n public transform: ITransformModel,\n public position: IPoint | undefined\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { InputCanvasPositionRequest } from './input-canvas-position-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasPositionRequest)\nexport class InputCanvasPositionExecution implements IExecution<InputCanvasPositionRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: InputCanvasPositionRequest): void {\n if (!request.position) {\n return;\n }\n const position = PointExtensions.sum(request.transform.position, request.transform.scaledPosition);\n if (!PointExtensions.isEqual(position, request.position)) {\n request.transform.position = request.position;\n request.transform.scaledPosition = PointExtensions.initialize();\n this._fComponentsStore.fCanvas?.redraw();\n }\n return void 0;\n }\n}\n","import { ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasScaleRequest {\n\n constructor(\n public transform: ITransformModel,\n public scale: number | undefined\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { InputCanvasScaleRequest } from './input-canvas-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasScaleRequest)\nexport class InputCanvasScaleExecution implements IExecution<InputCanvasScaleRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: InputCanvasScaleRequest): void {\n if (!request.scale && request.scale !== 0) {\n return;\n }\n request.transform.scale = request.scale;\n this._fComponentsStore.fCanvas?.redraw();\n }\n}\n","export class RedrawCanvasWithAnimationRequest {\n\n constructor(\n public animated: boolean\n ) {\n }\n}\n","export function transitionEnd(element: HTMLElement, callback: (event: TransitionEvent) => void): void {\n const onTransitionEnd = (event: TransitionEvent) => {\n if (event.propertyName === 'transform') {\n element.removeEventListener('transitionend', onTransitionEnd);\n callback(event);\n }\n };\n\n element.addEventListener('transitionend', onTransitionEnd);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { RedrawCanvasWithAnimationRequest } from './redraw-canvas-with-animation-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { transitionEnd } from '../../transition-end';\n\n@Injectable()\n@FExecutionRegister(RedrawCanvasWithAnimationRequest)\nexport class RedrawCanvasWithAnimationExecution implements IExecution<RedrawCanvasWithAnimationRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fCanvasElement(): HTMLElement {\n return this._fComponentsStore.fCanvas!.hostElement;\n }\n\n public handle(request: RedrawCanvasWithAnimationRequest): void {\n request.animated ? this._redrawWithAnimation() : this._redraw();\n this._fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n\n private _redrawWithAnimation(): void {\n this._fComponentsStore.fCanvas!.redrawWithAnimation();\n transitionEnd(this._fCanvasElement, () => this._fComponentsStore.dataChanged());\n }\n\n private _redraw(): void {\n this._fComponentsStore.fCanvas!.redraw();\n this._fComponentsStore.dataChanged();\n }\n}\n","export class RemoveCanvasFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveCanvasFromStoreRequest } from './remove-canvas-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveCanvasFromStoreRequest)\nexport class RemoveCanvasFromStoreExecution implements IExecution<RemoveCanvasFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveCanvasFromStoreRequest): void {\n this._fComponentsStore.fCanvas = undefined;\n }\n}\n","export class ResetScaleRequest {\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ResetScaleRequest } from './reset-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(ResetScaleRequest)\nexport class ResetScaleExecution implements IExecution<ResetScaleRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: ResetScaleRequest): void {\n this.transform.scale = 1;\n this.transform.scaledPosition = PointExtensions.initialize();\n }\n}\n","export class ResetScaleAndCenterRequest {\n\n constructor(\n public animated: boolean\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ResetScaleAndCenterRequest } from './reset-scale-and-center-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { CalculateNodesBoundingBoxRequest, RedrawCanvasWithAnimationRequest } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(ResetScaleAndCenterRequest)\nexport class ResetScaleAndCenterExecution implements IExecution<ResetScaleAndCenterRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: ResetScaleAndCenterRequest): void {\n const fNodesRect = this._fMediator.execute<IRect | null>(new CalculateNodesBoundingBoxRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n this._oneToOneCentering(\n fNodesRect,\n RectExtensions.fromElement(this._fComponentsStore.fFlow!.hostElement),\n this._fComponentsStore.fNodes.map((x) => x.position)\n );\n\n this._fMediator.execute(new RedrawCanvasWithAnimationRequest(request.animated));\n }\n\n public _oneToOneCentering(rect: IRect, parentRect: IRect, points: IPoint[]): void {\n this._transform.scaledPosition = PointExtensions.initialize();\n this._transform.position = this._getZeroPositionWithoutScale(points);\n\n const newX = (parentRect.width - rect.width / this._transform.scale) / 2 - this._transform.position.x;\n const newY = (parentRect.height - rect.height / this._transform.scale) / 2 - this._transform.position.y;\n\n this._transform.scale = 1;\n this._transform.position = PointExtensions.initialize(newX, newY);\n }\n\n private _getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class UpdateScaleRequest {\n\n constructor(\n public scale: number,\n public toPosition: IPoint\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { UpdateScaleRequest } from './update-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(UpdateScaleRequest)\nexport class UpdateScaleExecution implements IExecution<UpdateScaleRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: UpdateScaleRequest): void {\n if (request.scale !== this.transform.scale) {\n\n const summaryPosition = PointExtensions.sum(this.transform.scaledPosition, this.transform.position);\n\n const newX = request.toPosition.x - (request.toPosition.x - summaryPosition.x) * request.scale / this.transform.scale;\n const newY = request.toPosition.y - (request.toPosition.y - summaryPosition.y) * request.scale / this.transform.scale;\n\n this.transform.scale = request.scale;\n this.transform.scaledPosition = PointExtensions.sub(PointExtensions.initialize(newX, newY), this.transform.position);\n }\n }\n}\n","import { CenterGroupOrNodeExecution } from './center-group-or-node';\nimport { FitToFlowExecution } from './fit-to-flow';\nimport { ResetScaleAndCenterExecution } from './reset-scale-and-center';\nimport { ResetScaleExecution } from './reset-scale';\nimport { UpdateScaleExecution } from './update-scale';\nimport { InputCanvasPositionExecution } from './input-canvas-position';\nimport { InputCanvasScaleExecution } from './input-canvas-scale';\nimport { AddCanvasToStoreExecution } from './add-canvas-to-store';\nimport { RemoveCanvasFromStoreExecution } from './remove-canvas-from-store';\nimport { GetCanvasExecution } from './get-canvas';\nimport { RedrawCanvasWithAnimationExecution } from './redraw-canvas-with-animation';\n\nexport const F_CANVAS_FEATURES = [\n\n AddCanvasToStoreExecution,\n\n CenterGroupOrNodeExecution,\n\n FitToFlowExecution,\n\n GetCanvasExecution,\n\n InputCanvasPositionExecution,\n\n InputCanvasScaleExecution,\n\n RedrawCanvasWithAnimationExecution,\n\n RemoveCanvasFromStoreExecution,\n\n ResetScaleExecution,\n\n ResetScaleAndCenterExecution,\n\n UpdateScaleExecution\n];\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class AddConnectionForCreateToStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddConnectionForCreateToStoreRequest } from './add-connection-for-create-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddConnectionForCreateToStoreRequest)\nexport class AddConnectionForCreateToStoreExecution implements IExecution<AddConnectionForCreateToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddConnectionForCreateToStoreRequest): void {\n this._fComponentsStore.fTempConnection = request.fConnection;\n }\n}\n","import { FMarkerBase } from '../../../f-connection';\n\nexport class AddConnectionMarkerToStoreRequest {\n\n constructor(\n public fComponent: FMarkerBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddConnectionMarkerToStoreRequest } from './add-connection-marker-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddConnectionMarkerToStoreRequest)\nexport class AddConnectionMarkerToStoreExecution implements IExecution<AddConnectionMarkerToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddConnectionMarkerToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fMarkers, request.fComponent);\n }\n}\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class AddConnectionToStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddConnectionToStoreRequest } from './add-connection-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddConnectionToStoreRequest)\nexport class AddConnectionToStoreExecution implements IExecution<AddConnectionToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddConnectionToStoreRequest): void {\n this._fComponentsStore.fConnections.push(request.fConnection);\n this._fComponentsStore.dataChanged();\n }\n}\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class AddSnapConnectionToStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddSnapConnectionToStoreRequest } from './add-snap-connection-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddSnapConnectionToStoreRequest)\nexport class AddSnapConnectionToStoreExecution implements IExecution<AddSnapConnectionToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddSnapConnectionToStoreRequest): void {\n this._fComponentsStore.fSnapConnection = request.fConnection;\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';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionMarkersRequest)\nexport class CreateConnectionMarkersExecution implements IExecution<CreateConnectionMarkersRequest, void> {\n\n constructor(\n private fBrowser: BrowserService,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: CreateConnectionMarkersRequest): void {\n const element: SVGDefsElement = createSVGElement('defs', this.fBrowser);\n const fConnection = request.fConnection;\n\n this.getMarkers(fConnection).forEach((marker) => {\n\n const markerElement = this.createMarkerElement(marker, fConnection.fId);\n\n const clone = marker.hostElement.cloneNode(true) as HTMLElement;\n clone.setAttribute('height', `${ marker.height }`);\n clone.setAttribute('width', `${ marker.width }`);\n clone.removeAttribute('markerUnits');\n clone.style.display = 'unset';\n markerElement.append(clone);\n\n element.append(markerElement);\n });\n\n fConnection.fDefs.nativeElement.innerHTML = element.innerHTML;\n\n this.makeSafariCompatible(fConnection);\n }\n\n public getMarkers(fConnection: FConnectionBase): FMarkerBase[] {\n return this.fComponentsStore.fMarkers.filter((x) => fConnection.hostElement.contains(x.hostElement));\n }\n\n // Safari does not support markers on path elements if markers are defined after the path element\n private makeSafariCompatible(fConnection: FConnectionBase): void {\n fConnection.fPath.hostElement.replaceWith(fConnection.fPath.hostElement);\n }\n\n private createMarkerElement(marker: FMarkerBase, fConnectionId: string): SVGElement {\n const markerElement = createSVGElement('marker', this.fBrowser);\n\n markerElement.setAttribute('id', normalizeDomElementId(marker.type + '-' + fConnectionId));\n\n markerElement.setAttribute('markerHeight', `${ marker.height }`);\n markerElement.setAttribute('markerWidth', `${ marker.width }`);\n markerElement.setAttribute('orient', `${ marker.orient }`);\n markerElement.setAttribute('refX', `${ marker.refX }`);\n markerElement.setAttribute('refY', `${ marker.refY }`);\n markerElement.setAttribute('markerUnits', `${ marker.markerUnits }`);\n\n return markerElement;\n }\n}\n\nfunction createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","import { EFConnectionBehavior } from '../../../f-connection';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { IRoundedRect } from '@foblex/2d';\n\nexport class CalculateConnectionLineByBehaviorRequest {\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","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","export enum EFConnectableSide {\n\n LEFT = 'left',\n\n TOP = 'top',\n\n RIGHT = 'right',\n\n BOTTOM = 'bottom',\n\n AUTO = 'auto',\n}\n","import { EFConnectableSide } from './e-f-connectable-side';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport abstract class FConnectorBase implements IHasHostElement {\n\n public abstract fId: string;\n\n public abstract fNodeId: string;\n\n public abstract disabled: boolean;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract canBeConnected: boolean;\n\n private _isConnected: boolean = false;\n\n public get isConnected(): boolean {\n return this._isConnected;\n }\n\n public toConnector: FConnectorBase[] = [];\n\n public isSelfConnectable: boolean = true;\n\n public fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setConnected(toConnector: FConnectorBase): void {\n this._isConnected = true;\n this.toConnector.push(toConnector);\n }\n\n public resetConnected(): void {\n this._isConnected = false;\n this.toConnector = [];\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 get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export enum EFResizeHandleType {\n\n LEFT = 'left',\n\n LEFT_TOP = 'left-top',\n\n TOP = 'top',\n\n RIGHT_TOP = 'right-top',\n\n RIGHT = 'right',\n\n RIGHT_BOTTOM = 'right-bottom',\n\n BOTTOM = 'bottom',\n\n LEFT_BOTTOM = 'left-bottom',\n}\n","import {\n computed,\n Directive, input\n} from \"@angular/core\";\nimport { EFResizeHandleType } from './e-f-resize-handle-type';\nimport { castToEnum } from '@foblex/utils';\n\n@Directive({\n selector: \"[fResizeHandle]\",\n host: {\n class: `f-resize-handle f-component`,\n '[attr.data-f-resize-handle-type]': 'type().toUpperCase()',\n '[class]': 'class()'\n },\n})\nexport class FResizeHandleDirective {\n\n public type = input.required<EFResizeHandleType, unknown>({\n alias: 'fResizeHandleType',\n transform: (x) => castToEnum(x, 'fResizeHandleType', EFResizeHandleType)\n });\n\n protected class = computed(() => {\n return `f-resize-handle-${ EFResizeHandleType[ this.type().toUpperCase() as keyof typeof EFResizeHandleType ] }`;\n })\n}\n","import {\n Directive,\n} from \"@angular/core\";\n\n@Directive({\n selector: \"[fRotateHandle]\",\n host: {\n class: `f-rotate-handle f-component`,\n },\n})\nexport class FRotateHandleDirective {}\n","import { isClosestElementHasClass } from '@foblex/utils';\n\nexport function isRotateHandle(element: HTMLElement): boolean {\n return isClosestElementHasClass(element, '.f-rotate-handle');\n}\n","import {\n Directive\n} from \"@angular/core\";\n\n@Directive({\n selector: \"[fDragHandle]\",\n host: {\n class: \"f-drag-handle f-component\"\n },\n})\nexport class FDragHandleDirective {}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { ISelectable } from './i-selectable';\n\nexport const F_SELECTED_CLASS = 'f-selected';\n\ntype CanChangeSelectionConstructor = Constructor<ISelectable> & AbstractConstructor<ISelectable>;\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 unmarkAsSelected(): void {\n this.unmarkChildrenAsSelected?.();\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public markAsSelected(): void {\n this.markChildrenAsSelected?.();\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 markChildrenAsSelected(): void {\n }\n\n public unmarkChildrenAsSelected(): void {\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { ICanChangeVisibility } from './i-can-change-visibility';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { AbstractConstructor, Constructor } from '../constructor';\n\ntype CanChangeVisibilityConstructor = Constructor<ICanChangeVisibility> & AbstractConstructor<ICanChangeVisibility>;\n\nexport function mixinChangeVisibility<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T;\nexport function mixinChangeVisibility<T extends Constructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T {\n return class extends base {\n\n public show(): void {\n this.hostElement.style.display = \"unset\";\n }\n\n public hide(): void {\n this.hostElement.style.display = \"none\";\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport {\n FConnectorBase\n} from '../f-connectors';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { ISelectable, mixinChangeSelection } from '../mixins';\nimport { FChannel } from '../reactivity';\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 ISelectable, IHasHostElement {\n\n public abstract override fId: string;\n\n public abstract fParentId: string | null | undefined;\n\n public readonly stateChanges = new FChannel();\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 rotateChange: EventEmitter<number>;\n\n public abstract rotate: number;\n\n protected _rotate: number = 0;\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 fMinimapClass: string[] | string;\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 connectors: FConnectorBase[] = [];\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) rotate(${ this.rotate }deg)`);\n }\n\n public updatePosition(position: IPoint): void {\n this._position = position;\n }\n\n public updateRotate(rotate: number): void {\n this._rotate = rotate;\n }\n\n public updateSize(value: ISize): void {\n this._size = value;\n }\n\n public setClass(className: string): void {\n this.hostElement.classList.add(className);\n }\n\n public removeClass(className: string): void {\n this.hostElement.classList.remove(className);\n }\n\n public addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.refresh();\n }\n\n public removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.refresh();\n }\n}\n","import {\n AfterViewInit, booleanAttribute, DestroyRef,\n Directive,\n ElementRef,\n EventEmitter, inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions, SizeExtensions } from '@foblex/2d';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { NotifyTransformChangedRequest } from '../f-storage';\nimport { FMediator } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { AddNodeToStoreRequest, UpdateNodeWhenStateOrSizeChangedRequest, RemoveNodeFromStoreRequest } from '../domain';\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 readonly _destroyRef = inject(DestroyRef);\n private readonly _fMediator = inject(FMediator);\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 if(!PointExtensions.isEqual(this._position, value)) {\n this._position = value;\n this.redraw();\n this.refresh();\n }\n }\n public override get position(): IPoint {\n return this._position;\n }\n @Output('fGroupPositionChange')\n public override positionChange = new EventEmitter<IPoint>();\n\n\n @Input('fGroupRotate')\n public override set rotate(value: number) {\n if(this._rotate !== value) {\n this._rotate = value;\n this.redraw();\n this.refresh();\n }\n }\n public override get rotate(): number {\n return this._rotate;\n }\n\n @Output('fGroupRotateChange')\n public override rotateChange = new EventEmitter<number>();\n\n\n @Input('fGroupSize')\n public override set size(value: ISize) {\n if(!this.size || !SizeExtensions.isEqual(this._size!, value)) {\n this._size = value;\n this.redraw();\n this.refresh()\n }\n }\n public override get size(): ISize {\n return this._size!;\n }\n @Output('fGroupSizeChange')\n public override sizeChange = new EventEmitter<IRect>();\n\n @Input({ alias: 'fGroupDraggingDisabled', transform: booleanAttribute })\n public override fDraggingDisabled: boolean = false;\n\n @Input({ alias: 'fGroupSelectionDisabled', transform: booleanAttribute })\n public override fSelectionDisabled: boolean = false;\n\n @Input({ transform: booleanAttribute })\n public override fIncludePadding: boolean = true;\n\n @Input({ transform: booleanAttribute })\n public override fConnectOnNode: boolean = true;\n\n @Input()\n public override fMinimapClass: string[] | string = [];\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\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\n this._fMediator.execute<void>(new AddNodeToStoreRequest(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.execute(new NotifyTransformChangedRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this._listenStateSizeChanges();\n }\n\n private _listenStateSizeChanges(): void {\n this._fMediator.execute<void>(new UpdateNodeWhenStateOrSizeChangedRequest(this, this._destroyRef));\n }\n\n public refresh(): void {\n this.stateChanges.notify();\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute<void>(new RemoveNodeFromStoreRequest(this));\n }\n}\n","import {\n AfterViewInit, booleanAttribute, DestroyRef,\n Directive,\n ElementRef,\n EventEmitter, inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions, SizeExtensions } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\nimport { NotifyTransformChangedRequest } from '../f-storage';\nimport { FMediator } from '@foblex/mediator';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { AddNodeToStoreRequest, UpdateNodeWhenStateOrSizeChangedRequest, RemoveNodeFromStoreRequest } from '../domain';\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 readonly _destroyRef = inject(DestroyRef);\n private readonly _fMediator = inject(FMediator);\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 if(!PointExtensions.isEqual(this._position, value)) {\n this._position = value;\n this.redraw();\n this.refresh();\n }\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 if(!this.size || !SizeExtensions.isEqual(this._size!, value)) {\n this._size = value;\n this.redraw();\n this.refresh()\n }\n }\n\n @Input('fNodeRotate')\n public override set rotate(value: number) {\n if(this._rotate !== value) {\n this._rotate = value;\n this.redraw();\n this.refresh();\n }\n }\n public override get rotate(): number {\n return this._rotate;\n }\n\n @Output('fNodeRotateChange')\n public override rotateChange = new EventEmitter<number>();\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({ alias: 'fNodeDraggingDisabled', transform: booleanAttribute })\n public override fDraggingDisabled: boolean = false;\n\n @Input({ alias: 'fNodeSelectionDisabled', transform: booleanAttribute })\n public override fSelectionDisabled: boolean = false;\n\n @Input({ transform: booleanAttribute })\n public override fIncludePadding: boolean = true;\n\n //Add ability to connect to first connectable input if node is at pointer position\n @Input({ transform: booleanAttribute })\n public override fConnectOnNode: boolean = true;\n\n @Input()\n public override fMinimapClass: string[] | string = [];\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\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\n this._fMediator.execute<void>(new AddNodeToStoreRequest(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.execute(new NotifyTransformChangedRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this._listenStateSizeChanges();\n }\n\n private _listenStateSizeChanges(): void {\n this._fMediator.execute<void>(new UpdateNodeWhenStateOrSizeChangedRequest(this, this._destroyRef));\n }\n\n public override refresh(): void {\n this.stateChanges.notify();\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute<void>(new RemoveNodeFromStoreRequest(this));\n }\n}\n","export function isNode(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNode]');\n}\n\n","import { FNodeDirective } from './f-node.directive';\nimport { FResizeHandleDirective } from './f-resize-handle';\nimport { FGroupDirective } from './f-group.directive';\nimport { FDragHandleDirective } from './f-drag-handle.directive';\nimport { FRotateHandleDirective } from './f-rotate-handle';\n\nexport const F_NODE_PROVIDERS = [\n\n FGroupDirective,\n\n FNodeDirective,\n\n FDragHandleDirective,\n\n FResizeHandleDirective,\n\n FRotateHandleDirective,\n];\n","import {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit, SimpleChanges\n} from '@angular/core';\nimport { F_NODE_INPUT, FNodeInputBase } from './f-node-input-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { F_NODE } from '../../f-node';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddInputToStoreRequest, F_CSS_CLASS, RemoveInputFromStoreRequest } from '../../domain';\nimport { FConnectorBase } from '../f-connector-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeInput]\",\n exportAs: 'fNodeInput',\n host: {\n '[attr.data-f-input-id]': 'fId',\n class: \"f-component f-node-input\",\n '[class.f-node-input-multiple]': 'multiple',\n '[class.f-node-input-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_INPUT, useExisting: FNodeInputDirective } ],\n})\nexport class FNodeInputDirective extends FNodeInputBase implements OnInit, OnChanges, OnDestroy {\n\n private _elementReference = inject(ElementRef);\n private _fMediator = inject(FMediator);\n private _fNode = inject(F_NODE);\n\n @Input('fInputId')\n public override fId: any = `f-node-input-${ uniqueId++ }`;\n\n @Input('fInputMultiple')\n public override multiple: boolean = true;\n\n @Input({ alias: 'fInputDisabled', transform: booleanAttribute })\n public override disabled: boolean = false;\n\n @Input({\n alias: 'fInputConnectableSide',\n transform: (value: unknown) => castToEnum(value, 'fInputConnectableSide', EFConnectableSide)\n })\n public override userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override get fNodeId(): string {\n return this._fNode.fId;\n }\n\n public get hostElement(): HTMLElement | SVGElement {\n return this._elementReference.nativeElement;\n }\n\n public ngOnInit() {\n this._fMediator.execute(new AddInputToStoreRequest(this));\n this._fNode.addConnector(this);\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[ 'userFConnectableSide' ]) {\n this._fNode.refresh();\n }\n }\n\n public override setConnected(toConnector: FConnectorBase): void {\n super.setConnected(toConnector);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_CONNECTED, true);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_NOT_CONNECTABLE, !this.canBeConnected);\n }\n\n public override resetConnected(): void {\n super.resetConnected();\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_CONNECTED, false);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_NOT_CONNECTABLE, !this.canBeConnected);\n }\n\n public ngOnDestroy(): void {\n this._fNode.removeConnector(this);\n this._fMediator.execute(new RemoveInputFromStoreRequest(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 private outputs: FConnectorBase[] = [];\n\n public get canBeConnected(): boolean {\n return !this.disabled && this.outputs.some((output) => output.canBeConnected);\n }\n\n public abstract canBeConnectedInputs: string[];\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 { booleanAttribute, Directive, ElementRef, inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { F_NODE_OUTLET, FNodeOutletBase } from './f-node-outlet-base';\nimport { F_NODE } from '../../f-node';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { FMediator } from '@foblex/mediator';\nimport { AddOutletToStoreRequest, RemoveOutletFromStoreRequest } from '../../domain';\nimport { FConnectorBase } from '../f-connector-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutlet]\",\n exportAs: 'fNodeOutlet',\n host: {\n '[attr.data-f-outlet-id]': 'fId',\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 private _elementReference = inject(ElementRef);\n private _fMediator = inject(FMediator);\n /// Inject FNodeBase to check if the outlet inside the node\n private _fNode = inject(F_NODE);\n\n @Input('fOutletId')\n public override fId: string = `f-node-outlet-${ uniqueId++ }`;\n\n @Input({ alias: 'fOutletDisabled', transform: booleanAttribute })\n public override disabled: boolean = false;\n\n public override fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n @Input()\n public override isConnectionFromOutlet: boolean = false;\n\n @Input({ alias: 'fCanBeConnectedInputs' })\n public override canBeConnectedInputs: string[] = [];\n\n public override get fNodeId(): string {\n return this._fNode.fId;\n }\n\n public get hostElement(): HTMLElement | SVGElement {\n return this._elementReference.nativeElement;\n }\n\n public ngOnInit() {\n this._fMediator.execute(new AddOutletToStoreRequest(this));\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveOutletFromStoreRequest(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 override get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n\n public abstract canBeConnectedInputs: string[];\n}\n","export function isNodeOutput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutput]');\n}\n","import {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit, SimpleChanges\n} from '@angular/core';\nimport { FNodeOutputBase, F_NODE_OUTPUT } from './f-node-output-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { F_NODE } from '../../f-node';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddOutputToStoreRequest, F_CSS_CLASS, RemoveOutputFromStoreRequest } from '../../domain';\nimport { FConnectorBase } from '../f-connector-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutput]\",\n exportAs: 'fNodeOutput',\n host: {\n '[attr.data-f-output-id]': 'fId',\n class: \"f-component f-node-output\",\n '[class.f-node-output-multiple]': 'multiple',\n '[class.f-node-output-disabled]': 'disabled',\n '[class.f-node-output-self-connectable]': 'isSelfConnectable',\n },\n providers: [ { provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective } ],\n})\nexport class FNodeOutputDirective extends FNodeOutputBase implements OnInit, OnChanges, OnDestroy {\n\n private _elementReference = inject(ElementRef);\n private _fMediator = inject(FMediator);\n private _fNode = inject(F_NODE);\n\n @Input('fOutputId')\n public override fId: string = `f-node-output-${ uniqueId++ }`;\n\n @Input('fOutputMultiple')\n public override multiple: boolean = false;\n\n @Input({ alias: 'fOutputDisabled', transform: booleanAttribute })\n public override disabled: boolean = false;\n\n @Input({\n alias: 'fOutputConnectableSide',\n transform: (value: unknown) => castToEnum(value, 'fOutputConnectableSide', EFConnectableSide)\n })\n public override userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n @Input()\n public override isSelfConnectable: boolean = true;\n\n @Input({ alias: 'fCanBeConnectedInputs' })\n public override canBeConnectedInputs: string[] = [];\n\n public override get fNodeId(): string {\n return this._fNode.fId;\n }\n\n public get hostElement(): HTMLElement | SVGElement {\n return this._elementReference.nativeElement;\n }\n\n public ngOnInit() {\n this._fMediator.execute(new AddOutputToStoreRequest(this));\n this._fNode.addConnector(this);\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[ 'userFConnectableSide' ]) {\n this._fNode.refresh();\n }\n }\n\n public override setConnected(toConnector: FConnectorBase): void {\n super.setConnected(toConnector);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_CONNECTED, true);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_NOT_CONNECTABLE, !this.canBeConnected);\n }\n\n public override resetConnected(): void {\n super.resetConnected();\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_CONNECTED, false);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_NOT_CONNECTABLE, !this.canBeConnected);\n }\n\n public ngOnDestroy(): void {\n this._fNode.removeConnector(this);\n this._fMediator.execute(new RemoveOutputFromStoreRequest(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 { 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('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 public redraw(): void {\n this.hostElement.setAttribute('startOffset', this.base.fTextStartOffset || '50%');\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 || '12px';\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 this.textPathDirective.redraw();\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","export const F_CSS_CLASS = {\n\n DRAG_AND_DROP: {\n\n DRAGGING: 'f-dragging',\n\n CONNECTIONS_DRAGGING: 'f-connections-dragging',\n },\n\n CONNECTOR: {\n\n OUTPUT_CONNECTED: 'f-node-output-connected',\n\n OUTPUT_NOT_CONNECTABLE: 'f-node-output-not-connectable',\n\n INPUT_CONNECTED: 'f-node-input-connected',\n\n INPUT_NOT_CONNECTABLE: 'f-node-input-not-connectable',\n\n INPUT_CAN_BE_CONNECTED_TO: 'f-node-input-can-be-connected-to',\n },\n\n CONNECTION: {\n\n DRAG_HANDLE: 'f-connection-drag-handle',\n\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, inject\n} from \"@angular/core\";\nimport { IPoint } from '@foblex/2d';\nimport { IHasHostElement } from '../../../i-has-host-element';\nimport { F_CSS_CLASS } from '../../../domain/css-cls';\n\n@Component({\n selector: \"circle[f-connection-drag-handle-start]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'class'\n }\n})\nexport class FConnectionDragHandleStartComponent implements IHasHostElement {\n private readonly _elementReference = inject(ElementRef);\n\n protected readonly class: string = F_CSS_CLASS.CONNECTION.DRAG_HANDLE;\n\n public point!: IPoint;\n\n public get hostElement(): SVGCircleElement {\n return this._elementReference.nativeElement;\n }\n\n public redraw(penultimatePoint: IPoint, startPoint: IPoint): void {\n this.point = this._calculateCircleCenter(penultimatePoint, startPoint, 8);\n this.hostElement.setAttribute('cx', this.point.x.toString());\n this.hostElement.setAttribute('cy', this.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 {\n ChangeDetectionStrategy,\n Component, ElementRef, inject\n} from \"@angular/core\";\nimport { IPoint } from '@foblex/2d';\nimport { IHasHostElement } from '../../../i-has-host-element';\nimport { F_CSS_CLASS } from '../../../domain/css-cls';\n\n@Component({\n selector: \"circle[f-connection-drag-handle-end]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'class'\n }\n})\nexport class FConnectionDragHandleEndComponent implements IHasHostElement {\n private readonly _elementReference = inject(ElementRef);\n\n protected readonly class: string = F_CSS_CLASS.CONNECTION.DRAG_HANDLE;\n\n public point!: IPoint;\n\n public get hostElement(): SVGCircleElement {\n return this._elementReference.nativeElement;\n }\n\n public redraw(penultimatePoint: IPoint, endPoint: IPoint): void {\n this.point = this._calculateCircleCenter(penultimatePoint, endPoint, 8);\n this.hostElement.setAttribute('cx', this.point.x.toString());\n this.hostElement.setAttribute('cy', this.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<SVGPathElement> {\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 styleUrls: ['./f-connection-path.component.scss'],\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 styleUrls: ['./f-connection-selection.component.scss'],\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 { 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 { FConnectionDragHandleEndComponent } from './f-drag-handle';\nimport { FConnectionSelectionComponent } from './f-selection';\nimport { IConnectionText } from './f-connection-text';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport {\n ISelectable, 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, ISelectable,\n ICanChangeVisibility,\n 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 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 | string;\n\n public abstract fDefs: ElementRef<SVGDefsElement>;\n\n public abstract fPath: IConnectionPath;\n\n public abstract fGradient: IConnectionGradient;\n\n public abstract fDragHandle: FConnectionDragHandleEndComponent;\n\n public abstract fSelection: FConnectionSelectionComponent;\n\n public abstract fTextComponent: IConnectionText;\n\n public abstract fText: string;\n\n public abstract fTextStartOffset: 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({ point1, point2 }: ILine, sourceSide: EFConnectableSide, targetSide: EFConnectableSide): void {\n this.line = LineExtensions.initialize(point1, point2);\n const pathResult = this.getPathResult(point1, sourceSide, point2, targetSide);\n this.path = pathResult.path;\n this.penultimatePoint = pathResult.penultimatePoint || point1;\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 markChildrenAsSelected(): void {\n this.fPath.select();\n }\n\n public override unmarkChildrenAsSelected(): 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,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleEndComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { NotifyDataChangedRequest } 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';\nimport { FMediator } from '@foblex/mediator';\nimport { AddConnectionForCreateToStoreRequest, RemoveConnectionForCreateFromStoreRequest } from '../../domain';\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, OnChanges, OnDestroy {\n\n public override fId: string = `f-connection-for-create-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n public override fTextStartOffset: string = '';\n\n @Input()\n public override fStartColor: string = 'black';\n\n @Input()\n public override fEndColor: string = 'black';\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n @Input({ transform: numberAttribute })\n public override fRadius: number = 8;\n\n @Input({ transform: numberAttribute })\n public override fOffset: number = 12;\n\n @Input({ transform: (value: unknown) => castToEnum(value, 'fBehavior', EFConnectionBehavior) })\n public override fBehavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override fType: EFConnectionType | string = EFConnectionType.STRAIGHT;\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleEndComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleEndComponent;\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 private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddConnectionForCreateToStoreRequest(this));\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnChanges(): void {\n this._fMediator.execute(new NotifyDataChangedRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveConnectionForCreateFromStoreRequest());\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-end></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 booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChild,\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH,\n CONNECTION_TEXT,\n EFConnectionBehavior,\n EFConnectionType,\n FConnectionDragHandleEndComponent,\n FConnectionSelectionComponent,\n IConnectionGradient,\n IConnectionPath,\n IConnectionText,\n} from '../common';\nimport { NotifyDataChangedRequest } from '../../f-storage';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddConnectionToStoreRequest, RemoveConnectionFromStoreRequest } from '../../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection\",\n exportAs: 'fComponent',\n templateUrl: \"./f-connection.component.html\",\n styleUrls: [ \"./f-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'fId',\n class: \"f-component f-connection\",\n '[class.f-connection-selection-disabled]': 'fSelectionDisabled',\n '[class.f-connection-reassign-disabled]': 'fDraggingDisabled',\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionComponent } ],\n})\nexport class FConnectionComponent\n extends FConnectionBase implements OnInit, OnChanges, OnDestroy {\n\n @Input('fConnectionId')\n public override fId: string = `f-connection-${ uniqueId++ }`;\n\n @Input()\n public override fText: string = '';\n\n @Input()\n public override fTextStartOffset: string = '';\n\n @Input()\n public override fStartColor: string = 'black';\n\n @Input()\n public override fEndColor: string = 'black';\n\n @Input()\n public override fOutputId: any = '';\n\n @Input()\n public override fInputId: any = '';\n\n @Input({ transform: numberAttribute })\n public override fRadius: number = 8;\n\n @Input({ transform: numberAttribute })\n public override fOffset: number = 12;\n\n @Input({ transform: (value: unknown) => castToEnum(value, 'fBehavior', EFConnectionBehavior) })\n public override fBehavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override fType: EFConnectionType | string = EFConnectionType.STRAIGHT;\n\n @Input({ alias: 'fReassignDisabled', transform: booleanAttribute })\n public override fDraggingDisabled: boolean = false;\n\n @Input({ transform: booleanAttribute })\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleEndComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleEndComponent;\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 private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddConnectionToStoreRequest(this));\n }\n\n public ngOnChanges(): void {\n this._fMediator.execute(new NotifyDataChangedRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveConnectionFromStoreRequest(this));\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"overflow: visible; display: block; vertical-align: middle;\">\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-end></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, inject, Input, OnDestroy, OnInit\n} from \"@angular/core\";\nimport { F_MARKER, FMarkerBase } from './f-marker-base';\nimport { EFMarkerType } from './e-f-marker-type';\nimport { FMediator } from '@foblex/mediator';\nimport { AddConnectionMarkerToStoreRequest, RemoveConnectionMarkerFromStoreRequest } from '../../domain';\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 private _fMediator = inject(FMediator);\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n ) {\n super();\n this.hostElement.style.display = 'none';\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddConnectionMarkerToStoreRequest(this));\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveConnectionMarkerFromStoreRequest(this));\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleEndComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { NotifyDataChangedRequest } from '../../f-storage';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddSnapConnectionToStoreRequest, RemoveSnapConnectionFromStoreRequest } from '../../domain';\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, OnChanges, OnDestroy {\n\n public override fId: string = `f-snap-connection-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n public override fTextStartOffset: string = '';\n\n @Input()\n public override fStartColor: string = 'black';\n\n @Input()\n public override fEndColor: string = 'black';\n\n @Input({ transform: numberAttribute })\n public fSnapThreshold: number = 20;\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n @Input({ transform: numberAttribute })\n public override fRadius: number = 8;\n\n @Input({ transform: numberAttribute })\n public override fOffset: number = 12;\n\n @Input({ transform: (value: unknown) => castToEnum(value, 'fBehavior', EFConnectionBehavior) })\n public override fBehavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override fType: EFConnectionType | string = EFConnectionType.STRAIGHT;\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleEndComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleEndComponent;\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 private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddSnapConnectionToStoreRequest(this));\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnChanges(): void {\n this._fMediator.execute(new NotifyDataChangedRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveSnapConnectionFromStoreRequest());\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-end></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 FConnectionDragHandleEndComponent, FConnectionDragHandleStartComponent,\n FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent,\n FConnectionTextComponent,\n FConnectionTextPathDirective\n} from './common';\nimport { FConnectionComponent } from './f-connection';\nimport { FConnectionCenterDirective } from './f-connection-center';\nimport { FConnectionForCreateComponent } from './f-connection-for-create';\nimport { FMarkerDirective } from './f-marker';\nimport { FSnapConnectionComponent } from './f-snap-connection';\n\nexport const F_CONNECTION_PROVIDERS = [\n\n FConnectionTextComponent,\n FConnectionTextPathDirective,\n FConnectionDragHandleStartComponent,\n FConnectionDragHandleEndComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent,\n FConnectionSelectionComponent,\n\n FConnectionComponent,\n FConnectionCenterDirective,\n FConnectionForCreateComponent,\n FMarkerDirective,\n FSnapConnectionComponent\n];\n","import { GetIntersections, ILine, IPoint } from '@foblex/2d';\nimport { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\nimport { calculatePositionAfterRotation } from '../../../f-draggable/f-node-rotate/calculate-difference-after-rotation';\n\nexport function floatingBehavior(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return _getIntersectionsLine(\n _fromRoundedRectIntersections(payload),\n _toRoundedRectIntersections(payload),\n payload\n );\n}\n\nfunction _fromRoundedRectIntersections(payload: CalculateConnectionLineByBehaviorRequest) {\n return GetIntersections.getRoundedRectIntersections(\n payload.outputRect.gravityCenter, payload.inputRect.gravityCenter, payload.outputRect\n )[ 0 ];\n}\n\nfunction _toRoundedRectIntersections(payload: CalculateConnectionLineByBehaviorRequest) {\n return GetIntersections.getRoundedRectIntersections(\n payload.inputRect.gravityCenter, payload.outputRect.gravityCenter, payload.inputRect\n )[ 0 ];\n}\n\nfunction _getIntersectionsLine(from: IPoint, to: IPoint, payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return {\n point1: from ? from : payload.outputRect.gravityCenter,\n point2: to ? to : payload.inputRect.gravityCenter\n };\n}\n","import { ILine, Line } from '@foblex/2d';\nimport { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\n\nexport function fixedCenterBehavior(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return {\n point1: payload.outputRect.gravityCenter,\n point2: payload.inputRect.gravityCenter\n };\n}\n","import { ILine, IPoint, IRect } from '@foblex/2d';\nimport { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\nimport { EFConnectableSide } from '../../../f-connectors';\n\nexport function fixedOutboundBehavior(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return {\n point1: _getPosition(\n payload.outputRect,\n payload.outputSide === EFConnectableSide.AUTO ? EFConnectableSide.BOTTOM : payload.outputSide\n ),\n point2: _getPosition(\n payload.inputRect,\n payload.inputSide === EFConnectableSide.AUTO ? EFConnectableSide.TOP : payload.inputSide\n )\n };\n}\n\nfunction _getPosition(rect: IRect, side: EFConnectableSide): IPoint {\n switch (side) {\n case EFConnectableSide.TOP:\n return { x: rect.x + rect.width / 2, y: rect.y };\n case EFConnectableSide.BOTTOM:\n return { x: rect.x + rect.width / 2, y: rect.y + rect.height };\n case EFConnectableSide.LEFT:\n return { x: rect.x, y: rect.y + rect.height / 2 };\n case EFConnectableSide.RIGHT:\n return { x: rect.x + rect.width, y: rect.y + rect.height / 2 };\n default:\n throw new Error(`Unknown side: ${ side }`);\n }\n}\n\n\n\n\n","import { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\nimport { Injectable } from '@angular/core';\nimport { EFConnectionBehavior } from '../../../f-connection';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ILine } from '@foblex/2d';\nimport { floatingBehavior } from './floating-behavior';\nimport { fixedCenterBehavior } from './fixed-center-behavior';\nimport { fixedOutboundBehavior } from './fixed-outbound-behavior';\n\n@Injectable()\n@FExecutionRegister(CalculateConnectionLineByBehaviorRequest)\nexport class CalculateConnectionLineByBehaviorExecution\n implements IExecution<CalculateConnectionLineByBehaviorRequest, ILine> {\n\n private _handlers = {\n\n [ EFConnectionBehavior.FLOATING.toString() ]: floatingBehavior,\n\n [ EFConnectionBehavior.FIXED_CENTER.toString() ]: fixedCenterBehavior,\n\n [ EFConnectionBehavior.FIXED.toString() ]: fixedOutboundBehavior,\n }\n\n public handle(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return this._handlers[ payload.behavior ](payload);\n }\n}\n\n","export class RedrawConnectionsRequest {\n}\n","export class GetNormalizedConnectorRectRequest {\n constructor(\n public element: HTMLElement | SVGElement,\n ) {\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class GetNormalizedPointRequest {\n constructor(\n public position: IPoint\n ) {\n }\n}\n","import { IPoint, ITransformModel, Point } from '@foblex/2d';\nimport { inject, Injectable } from '@angular/core';\nimport { GetNormalizedPointRequest } from './get-normalized-point-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedPointRequest)\nexport class GetNormalizedPointExecution implements IExecution<GetNormalizedPointRequest, IPoint> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n // BrowserWindow\n // +------------------------------------------+\n // | F-Flow |\n // | +----------------------------------+ |\n // | | F-Canvas (scale: 0.5) | |\n // | | +-------------------------+ | |\n // | | | | | |\n // | | | Element | | |\n // | | | System: (500,300) | | |\n // | | | Normalize: (200,150) | | |\n // | | | | | |\n // | | | | | |\n // | | +-------------------------+ | |\n // | | | |\n // | +----------------------------------+ |\n // | |\n // +------------------------------------------+\n // Transform from the browser window to the canvas coordinates:\n public handle(request: GetNormalizedPointRequest): IPoint {\n return Point.fromPoint(request.position)\n .elementTransform(this._fComponentsStore.flowHost)\n .sub(this._transform.scaledPosition)\n .sub(this._transform.position)\n .div(this._transform.scale);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetNormalizedConnectorRectRequest } from './get-normalized-connector-rect-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport {\n IRoundedRect,\n RoundedRect,\n IPoint,\n ISize,\n SizeExtensions,\n ITransformModel,\n} from '@foblex/2d';\nimport { GetElementRoundedRectRequest } from '../get-element-rounded-rect';\nimport {GetNormalizedPointRequest} from \"../get-normalized-point\";\n\n@Injectable()\n@FExecutionRegister(GetNormalizedConnectorRectRequest)\nexport class GetNormalizedConnectorRectExecution implements IExecution<GetNormalizedConnectorRectRequest, IRoundedRect> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fMediator = inject(FMediator);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: GetNormalizedConnectorRectRequest): IRoundedRect {\n const systemRect = this._getElementRoundedRect(request);\n const position = this._normalizePosition(systemRect);\n const unscaledSize = this._unscaleSize(systemRect);\n const unscaledRect = this._getUnscaledRect(position, unscaledSize, systemRect)\n\n const offsetSize = this._getOffsetSize(request.element, unscaledSize);\n return RoundedRect.fromCenter(unscaledRect, offsetSize.width, offsetSize.height);\n }\n\n private _getElementRoundedRect(request: GetNormalizedConnectorRectRequest): IRoundedRect {\n return this._fMediator.execute<IRoundedRect>(\n new GetElementRoundedRectRequest(request.element)\n );\n }\n\n private _normalizePosition(rect: IRoundedRect): IPoint {\n return this._fMediator.execute(new GetNormalizedPointRequest(rect));\n }\n\n private _unscaleSize(rect: IRoundedRect): ISize {\n return SizeExtensions.initialize(rect.width / this._transform.scale, rect.height / this._transform.scale);\n }\n\n private _getUnscaledRect(position: IPoint, size: ISize, rect: IRoundedRect): IRoundedRect {\n return new RoundedRect(\n position.x, position.y, size.width, size.height,\n rect.radius1, rect.radius2, rect.radius3, rect.radius4\n )\n }\n\n private _getOffsetSize(element: HTMLElement | SVGElement, size: ISize): ISize {\n return SizeExtensions.offsetFromElement(element) || size\n }\n}\n","import {ILine, IRoundedRect} from '@foblex/2d';\nimport {inject, Injectable} from '@angular/core';\nimport {RedrawConnectionsRequest} from './redraw-connections-request';\nimport {FComponentsStore} from '../../../f-storage';\nimport {CalculateConnectionLineByBehaviorRequest} from '../calculate-connection-line-by-behavior';\nimport {FConnectorBase} from '../../../f-connectors';\nimport {FConnectionBase} from '../../../f-connection';\nimport {FExecutionRegister, FMediator, IExecution} from '@foblex/mediator';\nimport {CreateConnectionMarkersRequest} from '../create-connection-markers';\nimport {GetNormalizedConnectorRectRequest} from \"../../get-normalized-connector-rect\";\n\n@Injectable()\n@FExecutionRegister(RedrawConnectionsRequest)\nexport class RedrawConnectionsExecution implements IExecution<RedrawConnectionsRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RedrawConnectionsRequest): void {\n this._resetConnectors();\n\n if (this._fComponentsStore.fTempConnection) {\n this._setMarkers(this._fComponentsStore.fTempConnection);\n }\n\n if (this._fComponentsStore.fSnapConnection) {\n this._setMarkers(this._fComponentsStore.fSnapConnection);\n }\n\n this._fComponentsStore.fConnections.forEach((x) => {\n this._setupConnection(this._getOutput(x.fOutputId), this._getInput(x.fInputId), x);\n });\n }\n\n private _getOutput(id: string): FConnectorBase {\n const result = this._fComponentsStore.fOutputs.find((x) => x.fId === id)!;\n if (!result) {\n throw new Error(`Output with id ${id} not found`);\n }\n return result;\n }\n\n private _getInput(id: string): FConnectorBase {\n const result = this._fComponentsStore.fInputs.find((x) => x.fId === id)!;\n if (!result) {\n throw new Error(`Input with id ${id} not found`);\n }\n return result;\n }\n\n private _resetConnectors(): void {\n this._fComponentsStore.fOutputs.forEach((x) => x.resetConnected());\n this._fComponentsStore.fInputs.forEach((x) => x.resetConnected());\n }\n\n private _setupConnection(fOutput: FConnectorBase, fInput: FConnectorBase, fConnection: FConnectionBase): void {\n fOutput.setConnected(fInput);\n fInput.setConnected(fOutput);\n\n const line = this._getLine(fOutput, fInput, fConnection);\n\n this._setMarkers(fConnection);\n\n fConnection.setLine(line, fOutput.fConnectableSide, fInput.fConnectableSide);\n\n fConnection.initialize();\n fConnection.isSelected() ? fConnection.markAsSelected() : null;\n }\n\n private _getLine(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): ILine {\n return this._fMediator.execute(new CalculateConnectionLineByBehaviorRequest(\n this._fMediator.execute<IRoundedRect>(new GetNormalizedConnectorRectRequest(output.hostElement)),\n this._fMediator.execute<IRoundedRect>(new GetNormalizedConnectorRectRequest(input.hostElement)),\n connection.fBehavior,\n output.fConnectableSide,\n input.fConnectableSide\n )\n );\n }\n\n private _setMarkers(connection: FConnectionBase): void {\n this._fMediator.execute(\n new CreateConnectionMarkersRequest(connection)\n );\n }\n}\n\n","export class RemoveConnectionForCreateFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveConnectionForCreateFromStoreRequest } from './remove-connection-for-create-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveConnectionForCreateFromStoreRequest)\nexport class RemoveConnectionForCreateFromStoreExecution implements IExecution<RemoveConnectionForCreateFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveConnectionForCreateFromStoreRequest): void {\n this._fComponentsStore.fTempConnection = undefined;\n }\n}\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class RemoveConnectionFromStoreRequest {\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveConnectionFromStoreRequest } from './remove-connection-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FConnectionBase } from '../../../f-connection/common';\n\n@Injectable()\n@FExecutionRegister(RemoveConnectionFromStoreRequest)\nexport class RemoveConnectionFromStoreExecution implements IExecution<RemoveConnectionFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveConnectionFromStoreRequest): void {\n this._fComponentsStore.fConnections.splice(this._getIndexOfConnection(request.fConnection), 1);\n this._fComponentsStore.dataChanged();\n }\n\n private _getIndexOfConnection(fConnection: FConnectionBase): number {\n const result = this._fComponentsStore.fConnections.indexOf(fConnection);\n if (result === -1) {\n throw new Error(`Connection not found in store`);\n }\n return result;\n }\n}\n","import { FMarkerBase } from '../../../f-connection';\n\nexport class RemoveConnectionMarkerFromStoreRequest {\n\n constructor(\n public fComponent: FMarkerBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveConnectionMarkerFromStoreRequest } from './remove-connection-marker-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveConnectionMarkerFromStoreRequest)\nexport class RemoveConnectionMarkerFromStoreExecution implements IExecution<RemoveConnectionMarkerFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveConnectionMarkerFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fMarkers, request.fComponent);\n }\n}\n","export class RemoveSnapConnectionFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveSnapConnectionFromStoreRequest } from './remove-snap-connection-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveSnapConnectionFromStoreRequest)\nexport class RemoveSnapConnectionFromStoreExecution implements IExecution<RemoveSnapConnectionFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveSnapConnectionFromStoreRequest): void {\n this._fComponentsStore.fSnapConnection = undefined;\n }\n}\n","import { CreateConnectionMarkersExecution } from './create-connection-markers';\nimport { AddConnectionForCreateToStoreExecution } from './add-connection-for-create-to-store';\nimport { AddConnectionToStoreExecution } from './add-connection-to-store';\nimport { AddSnapConnectionToStoreExecution } from './add-snap-connection-to-store';\nimport { RemoveConnectionForCreateFromStoreExecution } from './remove-connection-for-create-from-store';\nimport { RemoveConnectionFromStoreExecution } from './remove-connection-from-store';\nimport { RemoveSnapConnectionFromStoreExecution } from './remove-snap-connection-from-store';\nimport { AddConnectionMarkerToStoreExecution } from './add-connection-marker-to-store';\nimport { RemoveConnectionMarkerFromStoreExecution } from './remove-connection-marker-from-store';\nimport { RedrawConnectionsExecution } from './redraw-connections';\nimport { CalculateConnectionLineByBehaviorExecution } from './calculate-connection-line-by-behavior';\n\nexport const F_CONNECTION_FEATURES = [\n\n AddConnectionForCreateToStoreExecution,\n\n AddConnectionMarkerToStoreExecution,\n\n AddConnectionToStoreExecution,\n\n AddSnapConnectionToStoreExecution,\n\n CreateConnectionMarkersExecution,\n\n CalculateConnectionLineByBehaviorExecution,\n\n RedrawConnectionsExecution,\n\n RemoveConnectionForCreateFromStoreExecution,\n\n RemoveConnectionFromStoreExecution,\n\n RemoveConnectionMarkerFromStoreExecution,\n\n RemoveSnapConnectionFromStoreExecution\n];\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class AddInputToStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddInputToStoreRequest } from './add-input-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddInputToStoreRequest)\nexport class AddInputToStoreExecution implements IExecution<AddInputToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddInputToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fInputs, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class AddOutletToStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddOutletToStoreRequest } from './add-outlet-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddOutletToStoreRequest)\nexport class AddOutletToStoreExecution implements IExecution<AddOutletToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddOutletToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fOutlets, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class AddOutputToStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddOutputToStoreRequest } from './add-output-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddOutputToStoreRequest)\nexport class AddOutputToStoreExecution implements IExecution<AddOutputToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddOutputToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fOutputs, request.fComponent);\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { IConnectorAndRect } from '../index';\n\nexport class CalculateClosestInputRequest {\n\n constructor(\n public position: IPoint,\n public canBeConnectedInputs: IConnectorAndRect[],\n ) {\n }\n}\n","import { CalculateClosestInputRequest } from './calculate-closest-input.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { IClosestInput } from '../i-closest-input';\nimport { IConnectorAndRect } from '../index';\n\n@Injectable()\n@FExecutionRegister(CalculateClosestInputRequest)\nexport class CalculateClosestInputExecution\n implements IExecution<CalculateClosestInputRequest, IClosestInput | undefined> {\n\n public handle(payload: CalculateClosestInputRequest): IClosestInput | undefined {\n let result: IConnectorAndRect | undefined;\n let minDistance = Infinity;\n\n for (const element of payload.canBeConnectedInputs) {\n const distance = this._distanceToRectangle(payload.position, element);\n\n if (distance < minDistance) {\n minDistance = distance;\n result = element;\n }\n }\n\n return result ? {\n ...result,\n distance: minDistance,\n } : undefined;\n }\n\n private _distanceToRectangle(point: IPoint, inputWithRect: IConnectorAndRect): number {\n const closestX = this._clamp(point.x, inputWithRect.fRect.x, inputWithRect.fRect.x + inputWithRect.fRect.width);\n const closestY = this._clamp(point.y, inputWithRect.fRect.y, inputWithRect.fRect.y + inputWithRect.fRect.height);\n\n const dx = point.x - closestX;\n const dy = point.y - closestY;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n private _clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n }\n}\n","import { IPoint, IRoundedRect } from '@foblex/2d';\nimport { IConnectorAndRect } from '../i-connector-and-rect';\n\nexport class FindInputAtPositionRequest {\n\n constructor(\n public pointerPosition: IPoint,\n public toConnectorRect: IRoundedRect,\n public canBeConnectedInputs: IConnectorAndRect[],\n ) {\n }\n}\n","import { IPoint, ITransformModel, Point, RectExtensions } from '@foblex/2d';\nimport { FindInputAtPositionRequest } from './find-input-at-position.request';\nimport { inject, Injectable } from '@angular/core';\nimport { BrowserService } from '@foblex/platform';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IClosestInput } from '../i-closest-input';\nimport { CalculateClosestInputRequest } from '../calculate-closest-input';\nimport { FSnapConnectionComponent } from '../../../f-connection';\nimport { IConnectorAndRect } from '../i-connector-and-rect';\n\n@Injectable()\n@FExecutionRegister(FindInputAtPositionRequest)\nexport class FindInputAtPositionExecution\n implements IExecution<FindInputAtPositionRequest, FConnectorBase | undefined> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fBrowser = inject(BrowserService);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private get _fNodes(): FNodeBase[] {\n return this._fComponentsStore.fNodes;\n }\n\n private get _fSnapConnection(): FSnapConnectionComponent | undefined {\n return this._fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n public handle(payload: FindInputAtPositionRequest): FConnectorBase | undefined {\n const fInputs = this._findInputsAtPosition(payload,);\n return fInputs.length > 0 ? fInputs[ 0 ] : undefined;\n }\n\n private _findInputsAtPosition(request: FindInputAtPositionRequest): FConnectorBase[] {\n const result: FConnectorBase[] = [];\n\n result.push(...this._getConnectableInputsAtPosition(request));\n\n const fClosestInput = this._calculateClosetInput(request);\n if (fClosestInput) {\n result.unshift(fClosestInput.fConnector);\n }\n\n const fInput = this._getFirstConnectableInputOfNodeAtPosition(request);\n if (fInput) {\n result.push(fInput);\n }\n\n return result;\n }\n\n private _getConnectableInputsAtPosition(request: FindInputAtPositionRequest): FConnectorBase[] {\n return request.canBeConnectedInputs.filter((x) => {\n return RectExtensions.isIncludePoint(x.fRect, this._getPointInFlow(request.pointerPosition));\n }).map((x) => x.fConnector);\n }\n\n private _getPointInFlow(position: IPoint): IPoint {\n return Point.fromPoint(position)\n .elementTransform(this._fHost)\n .sub(this._transform.scaledPosition).sub(this._transform.position)\n .div(this._transform.scale);\n }\n\n //if the closest input is valid, return it\n private _calculateClosetInput(request: FindInputAtPositionRequest): IClosestInput | undefined {\n if (!this._fSnapConnection) {\n return undefined;\n }\n\n const fClosestInput = this._fMediator.execute<IClosestInput | undefined>(\n new CalculateClosestInputRequest(this._getPointInFlow(request.pointerPosition), request.canBeConnectedInputs)\n );\n\n return this._isValidClosestInput(fClosestInput) ? fClosestInput : undefined;\n }\n\n private _isValidClosestInput(fClosestInput: IClosestInput | undefined): boolean {\n return !!fClosestInput && fClosestInput.distance < this._fSnapConnection!.fSnapThreshold;\n }\n\n //if node placed in position and fConnectOnNode is true, return the first connectable input of the node\n private _getFirstConnectableInputOfNodeAtPosition(request: FindInputAtPositionRequest): FConnectorBase | undefined {\n return this._getElementsFromPoint(request.pointerPosition)\n .map((x) => this._findConnectableNode(x))\n .filter((x) => !!x)\n .map((x) => this._findFirstConnectableInputOfNode(request.canBeConnectedInputs, x))\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 private _findConnectableNode(element: HTMLElement): FNodeBase | undefined {\n return this._fNodes.find((x) => x.isContains(element) && x.fConnectOnNode);\n }\n\n private _findFirstConnectableInputOfNode(connectableInputs: IConnectorAndRect[], fNode: FNodeBase): FConnectorBase | undefined {\n return connectableInputs.find((x) => x.fConnector.fNodeId === fNode.fId)?.fConnector\n }\n}\n","import { FNodeOutletBase, FNodeOutputBase } from '../../../f-connectors';\n\nexport class GetAllCanBeConnectedInputsAndRectsRequest {\n\n constructor(\n public fOutputOrOutlet: FNodeOutputBase | FNodeOutletBase,\n ) {\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class GetConnectorAndRectRequest {\n\n constructor(\n public fConnector: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetConnectorAndRectRequest } from './get-connector-and-rect-request';\nimport { IRoundedRect } from '@foblex/2d';\nimport { IConnectorAndRect } from '../i-connector-and-rect';\nimport { FConnectorBase } from '../../../f-connectors';\nimport {GetNormalizedConnectorRectRequest} from \"../../get-normalized-connector-rect\";\n\n@Injectable()\n@FExecutionRegister(GetConnectorAndRectRequest)\nexport class GetConnectorAndRectExecution implements IExecution<GetConnectorAndRectRequest, IConnectorAndRect> {\n\n private readonly _fMediator = inject(FMediator);\n\n public handle(request: GetConnectorAndRectRequest): IConnectorAndRect {\n return {\n fConnector: request.fConnector,\n fRect: this._getConnectorRect(request.fConnector)\n }\n }\n\n private _getConnectorRect(fConnector: FConnectorBase): IRoundedRect {\n return this._fMediator.execute<IRoundedRect>(new GetNormalizedConnectorRectRequest(fConnector.hostElement));\n }\n}\n","import { GetAllCanBeConnectedInputsAndRectsRequest } from './get-all-can-be-connected-inputs-and-rects.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase } from '../../../f-connectors';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IConnectorAndRect } from '../i-connector-and-rect';\nimport { GetConnectorAndRectRequest } from '../get-connector-and-rect';\n\n@Injectable()\n@FExecutionRegister(GetAllCanBeConnectedInputsAndRectsRequest)\nexport class GetAllCanBeConnectedInputsAndRectsExecution\n implements IExecution<GetAllCanBeConnectedInputsAndRectsRequest, IConnectorAndRect[]> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fInputs(): FConnectorBase[] {\n return this._fComponentsStore.fInputs;\n }\n\n public handle(payload: GetAllCanBeConnectedInputsAndRectsRequest): IConnectorAndRect[] {\n return this._getCanBeConnectedInputs(payload.fOutputOrOutlet).map((x) => {\n return this._fMediator.execute(new GetConnectorAndRectRequest(x));\n });\n }\n\n private _getCanBeConnectedInputs(fOutputOrOutlet: FNodeOutputBase | FNodeOutletBase): FConnectorBase[] {\n let fInputs: FConnectorBase[] = [];\n if (fOutputOrOutlet.canBeConnectedInputs?.length) {\n fInputs = this._fInputs.filter((x) => fOutputOrOutlet.canBeConnectedInputs.includes(x.fId));\n } else {\n fInputs = this._fInputs.filter((x) => x.canBeConnected);\n\n if(!fOutputOrOutlet.isSelfConnectable) {\n fInputs = this._filterSelfConnectable(fInputs, fOutputOrOutlet);\n }\n }\n return fInputs;\n }\n\n private _filterSelfConnectable(fInputs: FConnectorBase[], fOutputOrOutlet: FConnectorBase): FConnectorBase[] {\n return fInputs.filter((x) => fOutputOrOutlet.fNodeId !== x.fNodeId);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class MarkAllCanBeConnectedInputsRequest {\n\n constructor(\n public fInputs: FConnectorBase[],\n ) {\n }\n}\n","import { MarkAllCanBeConnectedInputsRequest } from './mark-all-can-be-connected-inputs.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { F_CSS_CLASS } from '../../css-cls';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(MarkAllCanBeConnectedInputsRequest)\nexport class MarkAllCanBeConnectedInputsExecution\n implements IExecution<MarkAllCanBeConnectedInputsRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(payload: MarkAllCanBeConnectedInputsRequest): void {\n this._fComponentsStore.flowHost.classList.add(F_CSS_CLASS.DRAG_AND_DROP.CONNECTIONS_DRAGGING);\n payload.fInputs.forEach((fInput) => this._markCanBeConnectedTo(fInput));\n }\n\n private _markCanBeConnectedTo(fInput: FConnectorBase): void {\n fInput.hostElement.classList.add(F_CSS_CLASS.CONNECTOR.INPUT_CAN_BE_CONNECTED_TO);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class RemoveInputFromStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveInputFromStoreRequest } from './remove-input-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveInputFromStoreRequest)\nexport class RemoveInputFromStoreExecution implements IExecution<RemoveInputFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveInputFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fInputs, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class RemoveOutletFromStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveOutletFromStoreRequest } from './remove-outlet-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveOutletFromStoreRequest)\nexport class RemoveOutletFromStoreExecution implements IExecution<RemoveOutletFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveOutletFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fOutlets, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class RemoveOutputFromStoreRequest {\n\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveOutputFromStoreRequest } from './remove-output-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveOutputFromStoreRequest)\nexport class RemoveOutputFromStoreExecution implements IExecution<RemoveOutputFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveOutputFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fOutputs, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class UnmarkAllCanBeConnectedInputsRequest {\n\n constructor(\n public fInputs: FConnectorBase[],\n ) {\n }\n}\n","import { UnmarkAllCanBeConnectedInputsRequest } from './unmark-all-can-be-connected-inputs.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { F_CSS_CLASS } from '../../css-cls';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(UnmarkAllCanBeConnectedInputsRequest)\nexport class UnmarkAllCanBeConnectedInputsExecution\n implements IExecution<UnmarkAllCanBeConnectedInputsRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(payload: UnmarkAllCanBeConnectedInputsRequest): void {\n this._fComponentsStore.flowHost.classList.remove(F_CSS_CLASS.DRAG_AND_DROP.CONNECTIONS_DRAGGING);\n payload.fInputs.forEach((fInput) => this._unmarkCanBeConnectedTo(fInput));\n }\n\n private _unmarkCanBeConnectedTo(fInput: FConnectorBase): void {\n fInput.hostElement.classList.remove(F_CSS_CLASS.CONNECTOR.INPUT_CAN_BE_CONNECTED_TO);\n }\n}\n","import { AddInputToStoreExecution } from './add-input-to-store';\nimport { AddOutletToStoreExecution } from './add-outlet-to-store';\nimport { AddOutputToStoreExecution } from './add-output-to-store';\nimport { RemoveInputFromStoreExecution } from './remove-input-from-store';\nimport { RemoveOutletFromStoreExecution } from './remove-outlet-from-store';\nimport { RemoveOutputFromStoreExecution } from './remove-output-from-store';\nimport { MarkAllCanBeConnectedInputsExecution } from './mark-all-can-be-connected-inputs';\nimport { UnmarkAllCanBeConnectedInputsExecution } from './unmark-all-can-be-connected-inputs';\nimport { GetAllCanBeConnectedInputsAndRectsExecution } from './get-all-can-be-connected-inputs-and-rects';\nimport { GetConnectorAndRectExecution } from './get-connector-and-rect';\nimport { CalculateClosestInputExecution } from './calculate-closest-input';\nimport { FindInputAtPositionExecution } from './find-input-at-position';\n\nexport const F_CONNECTORS_FEATURES = [\n\n AddInputToStoreExecution,\n\n AddOutletToStoreExecution,\n\n AddOutputToStoreExecution,\n\n CalculateClosestInputExecution,\n\n FindInputAtPositionExecution,\n\n GetAllCanBeConnectedInputsAndRectsExecution,\n\n GetConnectorAndRectExecution,\n\n MarkAllCanBeConnectedInputsExecution,\n\n RemoveInputFromStoreExecution,\n\n RemoveOutletFromStoreExecution,\n\n RemoveOutputFromStoreExecution,\n\n UnmarkAllCanBeConnectedInputsExecution\n];\n","import { FDraggableBase } from '../../../f-draggable';\n\nexport class AddDndToStoreRequest {\n\n constructor(\n public fComponent: FDraggableBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddDndToStoreRequest } from './add-dnd-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddDndToStoreRequest)\nexport class AddDndToStoreExecution implements IExecution<AddDndToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddDndToStoreRequest): void {\n this._fComponentsStore.fDraggable = request.fComponent;\n }\n}\n","export class EmitSelectionChangeEventRequest {\n\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedParentNodeRectRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import {inject, Injectable} from '@angular/core';\nimport { GetNormalizedParentNodeRectRequest } from './get-normalized-parent-node-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { GetNodePaddingRequest } from '../../../domain';\nimport { GetNormalizedElementRectRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedParentNodeRectRequest)\nexport class GetNormalizedParentNodeRectExecution\n implements IExecution<GetNormalizedParentNodeRectRequest, IRect> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fMediator = inject(FMediator);\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 // Parent Node\n // +----------------------------------------+\n // | padding-top |\n // | +----------------------------------+ |\n // | | | |\n // | | Available area for | |\n // |p | child nodes |p |\n // |a | |a |\n // |d | (width - padLeft - padRight) |d |\n // | | |d |\n // |l | (height - padTop - padBottom) |i |\n // |e | |n |\n // |f | |g |\n // |t | | |\n // | | |r |\n // | | |i |\n // | | |g |\n // | | |h |\n // | | |t |\n // | +----------------------------------+ |\n // | padding-bottom |\n // +----------------------------------------+\n private _getParentRect(node: FNodeBase): IRect {\n const rect = this._getNodeRect(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 _getNodeRect(fNode: FNodeBase): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(fNode.hostElement));\n }\n\n private _getNodePadding(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this._fMediator.execute<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class IsArrayHasParentNodeRequest {\n\n constructor(\n public fParentNodes: FNodeBase[],\n public fDraggedNodes: FNodeBase[]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IsArrayHasParentNodeRequest } from './is-array-has-parent-node.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(IsArrayHasParentNodeRequest)\nexport class IsArrayHasParentNodeExecution\n implements IExecution<IsArrayHasParentNodeRequest, boolean> {\n\n public handle(request: IsArrayHasParentNodeRequest): boolean {\n return this._isParentNodeInArray(this._getParentNodeIds(request.fParentNodes), request.fDraggedNodes);\n }\n\n private _getParentNodeIds(fParentNodes: FNodeBase[]): string[] {\n return fParentNodes.map((x) => x.fId);\n }\n\n private _isParentNodeInArray(parentNodeIds: string[], fDraggedNodes: FNodeBase[]): boolean {\n return fDraggedNodes.some((x) => parentNodeIds.includes(x.fId));\n }\n}\n\n\n","export class FNodeIntersectedWithConnections {\n\n constructor(\n public fNodeId: string,\n public fConnectionIds: string[],\n ) {\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class IsConnectionUnderNodeRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { GetIntersections, IRoundedRect } from '@foblex/2d';\nimport { inject, 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 { FNodeIntersectedWithConnections } from '../../index';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FConnectionBase } from '../../../f-connection';\nimport {GetNormalizedConnectorRectRequest, GetNormalizedElementRectRequest} from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(IsConnectionUnderNodeRequest)\nexport class IsConnectionUnderNodeExecution implements IExecution<IsConnectionUnderNodeRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: IsConnectionUnderNodeRequest): void {\n\n const fOutputConnectors = this._getOutputConnectors(request.fNode);\n const fInputConnectors = this._getInputConnectors(request.fNode);\n\n if (!fOutputConnectors.length || !fInputConnectors.length) {\n return;\n }\n\n const fOutputConnections = this._getOutputConnectionsId(fOutputConnectors);\n const fInputConnections = this._getInputConnectionsId(fInputConnectors);\n\n const fConnectionsUnderNode = this._calculateConnectionsUnderNode(request.fNode).filter((x) => {\n return !fOutputConnections.includes(x.fId) && !fInputConnections.includes(x.fId);\n });\n\n if (!fConnectionsUnderNode.length) {\n return;\n }\n\n this._emitNodeIntersectedWithConnections(request.fNode, fConnectionsUnderNode);\n }\n\n private _getOutputConnectors(fNode: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fOutputs.filter((x) => {\n return fNode.isContains(x.hostElement) && x.canBeConnected;\n });\n }\n\n private _getInputConnectors(fNode: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fInputs.filter((x) => {\n return fNode.isContains(x.hostElement) && x.canBeConnected;\n });\n }\n\n private _getOutputConnectionsId(connectors: FConnectorBase[]): string[] {\n const connectorsId = this._getConnectorsId(connectors);\n return this._fComponentsStore.fConnections\n .filter((x) => connectorsId.includes(x.fOutputId))\n .map((x) => x.fId);\n }\n\n private _getInputConnectionsId(connectors: FConnectorBase[]): string[] {\n const connectorsId = this._getConnectorsId(connectors);\n return this._fComponentsStore.fConnections\n .filter((x) => connectorsId.includes(x.fInputId))\n .map((x) => x.fId);\n }\n\n private _getConnectorsId(connectors: FConnectorBase[]): string[] {\n return connectors.map((x) => x.fId);\n }\n\n private _calculateConnectionsUnderNode(fNode: FNodeBase): FConnectionBase[] {\n const fNodeRect = this._fMediator.execute<IRoundedRect>(new GetNormalizedConnectorRectRequest(fNode.hostElement));\n return this._fComponentsStore.fConnections.filter((x) => this._isConnectionHasIntersectionsWithNode(x, fNodeRect));\n }\n\n private _isConnectionHasIntersectionsWithNode(fConnection: FConnectionBase, fNodeRect: IRoundedRect): boolean {\n return GetIntersections.getRoundedRectIntersectionsWithSVGPath(fConnection.fPath.hostElement, fNodeRect).length > 0;\n }\n\n private _emitNodeIntersectedWithConnections(fNode: FNodeBase, fConnections: FConnectionBase[]): void {\n this._fComponentsStore.fDraggable?.fNodeIntersectedWithConnections.emit(\n new FNodeIntersectedWithConnections(\n fNode.fId,\n fConnections.map((x) => x.fId)\n )\n );\n }\n}\n","export class FDragStartedEvent {\n\n constructor(\n public fEventType: string,\n public fData?: any,\n ) {\n }\n}\n","import { IsArrayHasParentNodeExecution } from './is-array-has-parent-node';\nimport { GetNormalizedParentNodeRectExecution } from './get-normalized-parent-node-rect';\nimport { IsConnectionUnderNodeExecution } from './is-connection-under-node';\n\nexport const DRAG_AND_DROP_COMMON_PROVIDERS = [\n\n GetNormalizedParentNodeRectExecution,\n\n IsArrayHasParentNodeExecution,\n\n IsConnectionUnderNodeExecution,\n];\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FCanvasMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Point } from '@foblex/2d';\nimport { IFDragHandler } from './f-drag-handler';\nimport { ISelectable } from '../mixins';\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: IFDragHandler[] = [];\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 public isEmpty(): boolean {\n return !this.draggableItems.length;\n }\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/2d';\nimport { IFDragHandler } from '../f-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\nimport { Injector } from '@angular/core';\n\nexport class FCanvasDragHandler implements IFDragHandler {\n\n public fEventType = 'canvas-move';\n\n private readonly _fComponentsStore: FComponentsStore;\n private _onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n _injector: Injector,\n ) {\n this._fComponentsStore = _injector.get(FComponentsStore);\n }\n\n public prepareDragSequence(): void {\n this._onPointerDownPosition = this._fComponentsStore.fCanvas!.transform.position;\n }\n\n public onPointerMove(difference: IPoint): void {\n this._fComponentsStore.fCanvas!.setPosition(Point.fromPoint(this._onPointerDownPosition).add(difference));\n this._fComponentsStore.fCanvas!.redraw();\n }\n\n public onPointerUp(): void {\n this._fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FCanvasMoveFinalizeRequest } from './f-canvas-move-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FCanvasDragHandler } from '../f-canvas.drag-handler';\n\n@Injectable()\n@FExecutionRegister(FCanvasMoveFinalizeRequest)\nexport class FCanvasMoveFinalizeExecution implements IExecution<FCanvasMoveFinalizeRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: FCanvasMoveFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n this._fDraggableDataContext.draggableItems.forEach((x) => x.onPointerUp?.());\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FCanvasDragHandler\n );\n }\n}\n","import { FEventTrigger } from '../../../domain';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FCanvasMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { FCanvasMovePreparationRequest } from './f-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 { FCanvasDragHandler } from '../f-canvas.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { isValidEventTrigger } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(FCanvasMovePreparationRequest)\nexport class FCanvasMovePreparationExecution implements IExecution<FCanvasMovePreparationRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _injector = inject(Injector);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n public handle(request: FCanvasMovePreparationRequest): void {\n if (!this._isValid(request) || !this._isValidTrigger(request)) {\n return;\n }\n this._fDraggableDataContext.onPointerDownScale = 1;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost);\n this._fDraggableDataContext.draggableItems = [ new FCanvasDragHandler(this._injector) ];\n }\n\n private _isValid(request: FCanvasMovePreparationRequest): boolean {\n return this._fDraggableDataContext.isEmpty() &&\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?.hostElement.contains(targetElement);\n }\n\n private _isDragOnHost(targetElement: HTMLElement): boolean {\n return this._fHost.contains(targetElement) && !this._getNode(targetElement);\n }\n\n private _getNode(targetElement: HTMLElement): FNodeBase | undefined {\n let result = this._fComponentsStore.fNodes\n .find(x => x.isContains(targetElement));\n if (result && result.fDraggingDisabled) {\n result = undefined;\n }\n return result;\n }\n\n private _isValidTrigger(request: FCanvasMovePreparationRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n}\n","import { FCanvasMovePreparationExecution } from './move-preparation';\nimport { FCanvasMoveFinalizeExecution } from './move-finalize';\n\nexport const CANVAS_PROVIDERS = [\n\n FCanvasMoveFinalizeExecution,\n\n FCanvasMovePreparationExecution,\n];\n","import {IPointerEvent} from \"../../../../drag-toolkit\";\n\nexport class FCreateConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { FNodeOutletBase } from '../../../../f-connectors';\n\nexport class GetFirstConnectableOutputRequest {\n\n constructor(\n public fOutlet: FNodeOutletBase\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { GetFirstConnectableOutputRequest } from './get-first-connectable-output.request';\nimport { FExecutionRegister } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetFirstConnectableOutputRequest)\nexport class GetFirstConnectableOutputExecution\n implements IHandler<GetFirstConnectableOutputRequest, FConnectorBase | undefined> {\n\n private readonly _fComponentStore = inject(FComponentsStore);\n\n private get _fNodes(): FNodeBase[] {\n return this._fComponentStore.fNodes;\n }\n\n private get _fOutputs(): FConnectorBase[] {\n return this._fComponentStore.fOutputs;\n }\n\n private _fNode: FNodeBase | undefined;\n\n public handle(request: GetFirstConnectableOutputRequest): FConnectorBase | undefined {\n if(!this._isValid(request)) {\n return;\n }\n\n const fOutputs = this._getConnectableOutputs();\n if(!fOutputs.length) {\n throw new Error('The fNode must contain at least one fOutput if there is an fOutlet')\n }\n return fOutputs[0];\n }\n\n private _isValid(request: GetFirstConnectableOutputRequest): boolean {\n return !!this._getNode(request.fOutlet);\n }\n\n private _getNode(fOutlet: FNodeOutletBase): FNodeBase {\n this._fNode = this._fNodes.find((x) => x.isContains(fOutlet.hostElement))!;\n return this._fNode;\n }\n\n private _getConnectableOutputs(): FConnectorBase[] {\n return this._fOutputs\n .filter((x) => this._fNode!.isContains(x.hostElement) && x.canBeConnected);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FCreateConnectionEvent {\n\n constructor(\n public fOutputId: string,\n public fInputId: string | undefined,\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class FDragHandlerResult<T> {\n\n private _data: T | undefined;\n\n public setData(data: Partial<T>): void {\n this._data = { ...this._data, ...data } as T;\n }\n\n public getData(): T {\n return this._data!;\n }\n\n public clear(): void {\n this._data = undefined;\n }\n}\n","import { FDragHandlerResult, IFDragHandler } from '../../f-drag-handler';\nimport {\n CalculateClosestInputRequest,\n GetAllCanBeConnectedInputsAndRectsRequest,\n CalculateConnectionLineByBehaviorRequest,\n GetConnectorAndRectRequest,\n IConnectorAndRect, IClosestInput, MarkAllCanBeConnectedInputsRequest, UnmarkAllCanBeConnectedInputsRequest\n} from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport {\n EFConnectableSide, FNodeOutletBase,\n FNodeOutputBase,\n} from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { RoundedRect, ILine, IPoint, PointExtensions, RectExtensions, IRoundedRect } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IFCreateConnectionDragResult } from './i-f-create-connection-drag-result';\nimport { Injector } from '@angular/core';\n\nexport class FCreateConnectionDragHandler implements IFDragHandler {\n\n public fEventType = 'create-connection';\n public fData: any;\n\n private readonly _fResult: FDragHandlerResult<IFCreateConnectionDragResult>;\n private readonly _fMediator: FMediator;\n private readonly _fComponentsStore: FComponentsStore;\n\n private readonly _toConnectorRect = new RoundedRect();\n\n private get _fConnection(): FConnectionBase {\n return this._fComponentsStore.fTempConnection!;\n }\n\n private get _fSnapConnection(): FSnapConnectionComponent | undefined {\n return this._fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private _fOutputWithRect!: IConnectorAndRect;\n\n private _canBeConnectedInputs: IConnectorAndRect[] = [];\n\n constructor(\n _injector: Injector,\n private _fOutputOrOutlet: FNodeOutputBase | FNodeOutletBase,\n _onPointerDownPosition: IPoint,\n ) {\n this._fResult = _injector.get(FDragHandlerResult);\n this._fMediator = _injector.get(FMediator);\n this._fComponentsStore = _injector.get(FComponentsStore);\n\n this._toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(_onPointerDownPosition.x, _onPointerDownPosition.y)\n );\n this.fData = {\n fOutputOrOutletId: this._fOutputOrOutlet.fId,\n };\n }\n\n public prepareDragSequence(): void {\n this._getAndMarkCanBeConnectedInputs();\n this._initializeSnapConnection();\n this._initializeConnectionForCreate();\n\n this._fOutputWithRect = this._fMediator.execute<IConnectorAndRect>(new GetConnectorAndRectRequest(this._fOutputOrOutlet));\n\n this._fConnection.show();\n this.onPointerMove(PointExtensions.initialize());\n\n this._fResult.setData({\n toConnectorRect: this._toConnectorRect,\n canBeConnectedInputs: this._canBeConnectedInputs,\n fOutputId: this._fOutputOrOutlet.fId,\n });\n }\n\n private _getAndMarkCanBeConnectedInputs(): void {\n this._canBeConnectedInputs = this._fMediator.execute<IConnectorAndRect[]>(\n new GetAllCanBeConnectedInputsAndRectsRequest(this._fOutputOrOutlet)\n );\n\n this._fMediator.execute(\n new MarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector))\n );\n }\n\n private _initializeSnapConnection(): void {\n if (!this._fSnapConnection) {\n return;\n }\n this._fSnapConnection.fOutputId = this._fOutputOrOutlet.fId;\n this._fSnapConnection.initialize();\n }\n\n private _initializeConnectionForCreate(): void {\n this._fConnection.fOutputId = this._fOutputOrOutlet.fId;\n this._fConnection.initialize();\n }\n\n public onPointerMove(difference: IPoint): void {\n const fClosestInput = this._findClosestInput(difference);\n\n this._drawConnectionForCreate(\n this._toConnectorRect.addPoint(difference),\n fClosestInput?.fConnector.fConnectableSide || EFConnectableSide.TOP\n );\n\n if (this._fSnapConnection) {\n this._drawSnapConnection(this._getClosestInputForSnapConnection(fClosestInput));\n }\n }\n\n private _drawConnectionForCreate(toConnectorRect: IRoundedRect, fSide: EFConnectableSide): void {\n const line = this._fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this._fOutputWithRect.fRect,\n toConnectorRect,\n this._fConnection.fBehavior,\n this._fOutputWithRect.fConnector.fConnectableSide,\n fSide\n )\n );\n\n this._fConnection.setLine(line, this._fOutputWithRect.fConnector.fConnectableSide, fSide);\n this._fConnection.redraw();\n }\n\n private _drawSnapConnection(fClosestInput: IClosestInput | undefined): void {\n if (fClosestInput) {\n const line = this._fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this._fOutputWithRect.fRect,\n fClosestInput.fRect,\n this._fSnapConnection!.fBehavior,\n this._fOutputWithRect.fConnector.fConnectableSide,\n fClosestInput.fConnector.fConnectableSide\n )\n );\n this._fSnapConnection!.show();\n this._fSnapConnection!.setLine(line, this._fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide);\n this._fSnapConnection!.redraw();\n } else {\n this._fSnapConnection?.hide();\n }\n }\n\n private _findClosestInput(difference: IPoint): IClosestInput | undefined {\n return this._fMediator.execute<IClosestInput | undefined>(\n new CalculateClosestInputRequest(\n this._toConnectorRect.addPoint(difference),\n this._canBeConnectedInputs,\n )\n );\n }\n\n private _getClosestInputForSnapConnection(fClosestInput: IClosestInput | undefined): IClosestInput | undefined {\n return fClosestInput && fClosestInput.distance < this._fSnapConnection!.fSnapThreshold ? fClosestInput : undefined;\n }\n\n public onPointerUp(): void {\n this._fConnection.redraw();\n this._fConnection.hide();\n this._fSnapConnection?.hide();\n\n this._fMediator.execute(\n new UnmarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector))\n );\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase, isNodeOutlet } from '../../../../f-connectors';\nimport { FCreateConnectionFinalizeRequest } from './f-create-connection-finalize.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { GetFirstConnectableOutputRequest } from '../get-first-connectable-output';\nimport { FCreateConnectionEvent } from '../f-create-connection.event';\nimport { FCreateConnectionDragHandler } from '../f-create-connection.drag-handler';\nimport { FindInputAtPositionRequest } from '../../../../domain';\nimport { FDragHandlerResult } from '../../../f-drag-handler';\nimport { IFCreateConnectionDragResult } from '../i-f-create-connection-drag-result';\nimport {IPointerEvent} from \"../../../../drag-toolkit\";\n\n@Injectable()\n@FExecutionRegister(FCreateConnectionFinalizeRequest)\nexport class FCreateConnectionFinalizeExecution\n implements IHandler<FCreateConnectionFinalizeRequest, void> {\n\n private _fResult: FDragHandlerResult<IFCreateConnectionDragResult> = inject(FDragHandlerResult);\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _fDragHandler(): FCreateConnectionDragHandler {\n return this._fDraggableDataContext.draggableItems[ 0 ] as FCreateConnectionDragHandler;\n }\n\n public handle(request: FCreateConnectionFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n this.emitEvent(request.event);\n this._fDragHandler.onPointerUp();\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FCreateConnectionDragHandler\n );\n }\n\n private getTargetOutput(output: FConnectorBase | undefined): FConnectorBase {\n if (!output) {\n throw new Error(`Output with fOutputId ${ this._fResult.getData().fOutputId } not found. Make sure there is no f-connection to a non-existent fOutput.`);\n }\n return isNodeOutlet(output.hostElement) ? this._fMediator.execute<FNodeOutputBase>(\n new GetFirstConnectableOutputRequest(output as FNodeOutletBase)\n ) : output;\n }\n\n private getOutput(): FConnectorBase | undefined {\n return this._fComponentsStore.fOutputs.find((x) => x.fId === this._fResult.getData().fOutputId);\n }\n\n private getOutlet(): FConnectorBase | undefined {\n return this._fComponentsStore.fOutlets.find((x) => x.fId === this._fResult.getData().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()).fId,\n this._getInputUnderPointer(event)?.fId,\n event.getPosition()\n )\n );\n }\n\n private _getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this._fMediator.execute<FConnectorBase | undefined>(\n new FindInputAtPositionRequest(\n event.getPosition(),\n this._fResult.getData().toConnectorRect,\n this._fResult.getData().canBeConnectedInputs\n )\n );\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../../../../f-connectors';\n\nexport class FCreateConnectionDragHandlerPreparationRequest {\n\n constructor(\n public onPointerDownPosition: IPoint,\n public fOutputOrOutlet: FNodeOutputBase | FNodeOutletBase\n ) {\n }\n}\n","import { ITransformModel, Point } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { inject, Injectable, Injector } from '@angular/core';\nimport { FCreateConnectionDragHandlerPreparationRequest } from './f-create-connection-drag-handler-preparation.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../../f-draggable-data-context';\nimport { FCreateConnectionDragHandler } from '../../f-create-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(FCreateConnectionDragHandlerPreparationRequest)\nexport class FCreateConnectionDragHandlerPreparationExecution\n implements IHandler<FCreateConnectionDragHandlerPreparationRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _injector = inject(Injector);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: FCreateConnectionDragHandlerPreparationRequest): void {\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n const positionRelativeToFlowComponent = Point.fromPoint(request.onPointerDownPosition)\n .elementTransform(this._fHost).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 FCreateConnectionDragHandler(\n this._injector, request.fOutputOrOutlet, positionRelativeToCanvasComponent\n )\n ];\n }\n}\n","import { FNodeBase } from '../../../../../f-node';\nimport {IPointerEvent} from \"../../../../../drag-toolkit\";\n\nexport class FCreateConnectionFromOutletPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fNode: FNodeBase\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { inject, Injectable } from '@angular/core';\nimport { FCreateConnectionFromOutletPreparationRequest } from './f-create-connection-from-outlet-preparation.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport {\n FConnectorBase,\n FNodeOutletBase,\n FNodeOutputBase,\n} from '../../../../../f-connectors';\nimport { GetFirstConnectableOutputRequest } from '../../get-first-connectable-output';\nimport { FCreateConnectionDragHandlerPreparationRequest } from '../drag-handler-preparation';\nimport { FNodeBase } from '../../../../../f-node';\n\n@Injectable()\n@FExecutionRegister(FCreateConnectionFromOutletPreparationRequest)\nexport class FCreateConnectionFromOutletPreparationExecution\n implements IHandler<FCreateConnectionFromOutletPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: FCreateConnectionFromOutletPreparationRequest): void {\n\n const fOutlet = this._getNodeOutlet(request.fNode);\n const fOutputs = this._getNodeOutputs(request.fNode);\n\n fOutlet.setOutputs(fOutputs);\n\n if (!fOutlet.canBeConnected) {\n return;\n }\n\n if (fOutlet.isConnectionFromOutlet) {\n this._createDragHandler(request.event.getPosition(), fOutlet);\n } else {\n this._createDragHandler(request.event.getPosition(), this._getConnectableOutput(fOutlet));\n }\n }\n\n private _getNodeOutlet(fNode: FNodeBase): FNodeOutletBase {\n const result = this._fComponentsStore.fOutlets\n .find((x) => fNode.isContains(x.hostElement));\n if (!result) {\n throw new Error('Outlet not found');\n }\n return result as FNodeOutletBase;\n }\n\n private _getNodeOutputs(fNode: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fOutputs\n .filter((x) => fNode.isContains(x.hostElement));\n }\n\n private _createDragHandler(position: IPoint, fOutputOrOutlet: FNodeOutputBase | FNodeOutletBase): void {\n this._fMediator.execute(new FCreateConnectionDragHandlerPreparationRequest(position, fOutputOrOutlet));\n }\n\n private _getConnectableOutput(fOutlet: FNodeOutletBase): FNodeOutputBase {\n return this._fMediator.execute<FNodeOutputBase>(new GetFirstConnectableOutputRequest(fOutlet));\n }\n}\n","import { FNodeBase } from '../../../../../f-node';\nimport {IPointerEvent} from \"../../../../../drag-toolkit\";\n\nexport class FCreateConnectionFromOutputPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fNode: FNodeBase\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { inject, Injectable } from '@angular/core';\nimport { FCreateConnectionFromOutputPreparationRequest } from './f-create-connection-from-output-preparation.request';\nimport { FConnectorBase, FNodeOutputBase, isNodeOutput } from '../../../../../f-connectors';\nimport { FCreateConnectionDragHandlerPreparationRequest } from '../drag-handler-preparation';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\n\n@Injectable()\n@FExecutionRegister(FCreateConnectionFromOutputPreparationRequest)\nexport class FCreateConnectionFromOutputPreparationExecution\n implements IHandler<FCreateConnectionFromOutputPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: FCreateConnectionFromOutputPreparationRequest): void {\n if(!this._isValid(request)) {\n return;\n }\n const fOutput = this._getOutput(request.event.targetElement);\n\n if (fOutput.canBeConnected) {\n this._fMediator.execute(\n new FCreateConnectionDragHandlerPreparationRequest(request.event.getPosition(), fOutput)\n );\n }\n }\n\n private _isValid(request: FCreateConnectionFromOutputPreparationRequest): boolean {\n return this._isNodeOutput(request.event.targetElement, request.fNode);\n }\n\n private _isNodeOutput(element: HTMLElement, fNode: FNodeBase): boolean {\n return isNodeOutput(element) && !this._getNodeOutlets(fNode).length;\n }\n\n private _getNodeOutlets(node: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fOutlets\n .filter((x) => node.isContains(x.hostElement));\n }\n\n private _getOutput(element: Element): FNodeOutputBase {\n const result = this._fComponentsStore.fOutputs\n .find((x) => x.hostElement.contains(element));\n if (!result) {\n throw new Error('Output not found');\n }\n return result as FNodeOutputBase;\n }\n}\n","import { FEventTrigger } from '../../../../domain';\nimport {IPointerEvent} from \"../../../../drag-toolkit\";\n\nexport class FCreateConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { isNodeOutlet, isNodeOutput } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { FCreateConnectionPreparationRequest } from './f-create-connection-preparation.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FCreateConnectionFromOutletPreparationRequest } from './from-outlet-preparation';\nimport { FCreateConnectionFromOutputPreparationRequest } from './from-output-preparation';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { FReassignConnectionPreparationRequest } from '../../f-reassign-connection';\nimport { isValidEventTrigger } from '../../../../domain';\nimport {IPointerEvent} from \"../../../../drag-toolkit\";\n\n@Injectable()\n@FExecutionRegister(FCreateConnectionPreparationRequest)\nexport class FCreateConnectionPreparationExecution\n implements IHandler<FCreateConnectionPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private _fNode: FNodeBase | undefined;\n\n public handle(request: FCreateConnectionPreparationRequest): void {\n if (!this._isValid(request) || !this._isValidTrigger(request)) {\n return;\n }\n\n if (isNodeOutlet(request.event.targetElement)) {\n this._fMediator.execute<void>(\n new FCreateConnectionFromOutletPreparationRequest(request.event, this._fNode!)\n );\n } else if (isNodeOutput(request.event.targetElement)) {\n this._fMediator.execute<void>(\n new FCreateConnectionFromOutputPreparationRequest(request.event, this._fNode!)\n );\n }\n }\n\n private _isValid(request: FCreateConnectionPreparationRequest): boolean {\n return !!this._getNode(request.event) && this._isValidConditions();\n }\n\n private _getNode(event: IPointerEvent): FNodeBase | undefined {\n this._fNode = this._fComponentsStore\n .fNodes.find(n => n.isContains(event.targetElement));\n return this._fNode;\n }\n\n private _isValidConditions(): boolean {\n return this._fDraggableDataContext.isEmpty() && !!this._fComponentsStore.fTempConnection;\n }\n\n private _isValidTrigger(request: FReassignConnectionPreparationRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n}\n","import {IPointerEvent} from \"../../../../drag-toolkit\";\n\nexport class FReassignConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { FDragHandlerResult, IFDragHandler } from '../../f-drag-handler';\nimport {\n CalculateClosestInputRequest,\n GetAllCanBeConnectedInputsAndRectsRequest,\n CalculateConnectionLineByBehaviorRequest, GetConnectorAndRectRequest,\n IConnectorAndRect, IClosestInput, MarkAllCanBeConnectedInputsRequest, UnmarkAllCanBeConnectedInputsRequest\n} from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport { EFConnectableSide, FConnectorBase, FNodeOutputDirective } from '../../../f-connectors';\nimport { ILine, IPoint, RectExtensions, RoundedRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IFReassignConnectionDragResult } from './i-f-reassign-connection-drag-result';\nimport { Injector } from '@angular/core';\n\nexport class FReassignConnectionDragHandler implements IFDragHandler {\n\n public fEventType = 'reassign-connection';\n public fData: any;\n\n private readonly _fResult: FDragHandlerResult<IFReassignConnectionDragResult>;\n private readonly _fMediator: FMediator;\n private readonly _fComponentsStore: FComponentsStore;\n\n private readonly _toConnectorRect = new RoundedRect();\n\n private get _fSnapConnection(): FSnapConnectionComponent | undefined {\n return this._fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private _fOutputWithRect!: IConnectorAndRect;\n private _fInputWithRect!: IConnectorAndRect;\n\n private _canBeConnectedInputs: IConnectorAndRect[] = [];\n\n private get _fOutput(): FConnectorBase {\n const result = this._fComponentsStore.fOutputs.find((x) => x.fId === this._fConnection.fOutputId);\n if (!result) {\n throw new Error('Connection output not found');\n }\n return result;\n }\n\n private get _fInput(): FConnectorBase {\n const result = this._fComponentsStore.fInputs.find((x) => x.fId === this._fConnection.fInputId);\n if (!result) {\n throw new Error('Connection input not found');\n }\n return result;\n }\n\n constructor(\n _injector: Injector,\n private _fConnection: FConnectionBase,\n ) {\n this._fResult = _injector.get(FDragHandlerResult);\n this._fMediator = _injector.get(FMediator);\n this._fComponentsStore = _injector.get(FComponentsStore);\n\n this._toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this._fConnection.line.point2.x, this._fConnection.line.point2.y)\n );\n this.fData = {\n fConnectionId: this._fConnection.fId\n };\n }\n\n public prepareDragSequence(): void {\n this._getAndMarkCanBeConnectedInputs();\n this._initializeSnapConnection();\n\n this._fOutputWithRect = this._fMediator.execute<IConnectorAndRect>(new GetConnectorAndRectRequest(this._fOutput));\n this._fInputWithRect = this._fMediator.execute<IConnectorAndRect>(new GetConnectorAndRectRequest(this._fInput));\n\n this._fResult.setData({\n toConnectorRect: this._toConnectorRect,\n canBeConnectedInputs: this._canBeConnectedInputs,\n fConnection: this._fConnection\n });\n }\n\n private _getAndMarkCanBeConnectedInputs(): void {\n this._canBeConnectedInputs = this._fMediator.execute<IConnectorAndRect[]>(\n new GetAllCanBeConnectedInputsAndRectsRequest(this._fOutput as FNodeOutputDirective)\n );\n\n this._fMediator.execute(\n new MarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector))\n );\n }\n\n private _initializeSnapConnection(): void {\n if (!this._fSnapConnection) {\n return;\n }\n this._fSnapConnection.fOutputId = this._fConnection.fOutputId;\n this._fSnapConnection.initialize();\n }\n\n public onPointerMove(difference: IPoint): void {\n const fClosestInput = this._findClosestInput(difference);\n\n this._drawConnection(\n this._toConnectorRect.addPoint(difference),\n fClosestInput?.fConnector.fConnectableSide || this._fInputWithRect.fConnector.fConnectableSide\n );\n if (this._fSnapConnection) {\n this._drawSnapConnection(this._getClosestInputForSnapConnection(fClosestInput));\n }\n }\n\n private _drawConnection(difference: IPoint, fSide: EFConnectableSide): void {\n const line = this._getLineToPointer(difference, fSide);\n this._fConnection.setLine(line, this._fOutputWithRect.fConnector.fConnectableSide, fSide);\n this._fConnection.redraw();\n }\n\n private _getLineToPointer(difference: IPoint, fSide: EFConnectableSide): ILine {\n return this._fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this._fOutputWithRect.fRect,\n RoundedRect.fromRect(RectExtensions.initialize(difference.x, difference.y)),\n this._fConnection.fBehavior,\n this._fOutputWithRect.fConnector.fConnectableSide,\n fSide\n )\n );\n }\n\n private _drawSnapConnection(fClosestInput: IClosestInput | undefined): void {\n if (fClosestInput) {\n const line = this._getLineToClosestInput(fClosestInput);\n this._fSnapConnection!.show();\n this._fSnapConnection!.setLine(line, this._fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide);\n this._fSnapConnection!.redraw();\n } else {\n this._fSnapConnection?.hide();\n }\n }\n\n private _getLineToClosestInput(fClosestInput: IClosestInput): ILine {\n return this._fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this._fOutputWithRect.fRect,\n fClosestInput.fRect,\n this._fSnapConnection!.fBehavior,\n this._fOutputWithRect.fConnector.fConnectableSide,\n fClosestInput.fConnector.fConnectableSide\n ));\n }\n\n private _findClosestInput(difference: IPoint): IClosestInput | undefined {\n return this._fMediator.execute<IClosestInput | undefined>(\n new CalculateClosestInputRequest(\n this._toConnectorRect.addPoint(difference),\n this._canBeConnectedInputs,\n )\n );\n }\n\n private _getClosestInputForSnapConnection(fClosestInput: IClosestInput | undefined): IClosestInput | undefined {\n return fClosestInput && fClosestInput.distance < this._fSnapConnection!.fSnapThreshold ? fClosestInput : undefined;\n }\n\n public onPointerUp(): void {\n this._drawConnection(this._toConnectorRect, this._fInputWithRect.fConnector.fConnectableSide);\n this._fSnapConnection?.hide();\n\n this._fMediator.execute(\n new UnmarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector))\n );\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FReassignConnectionEvent {\n\n constructor(\n public fConnectionId: string,\n public fOutputId: string,\n public oldFInputId: string,\n public newFInputId: string | undefined,\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FReassignConnectionFinalizeRequest } from './f-reassign-connection-finalize.request';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FReassignConnectionDragHandler } from '../f-reassign-connection.drag-handler';\nimport { FDraggableBase } from '../../../f-draggable-base';\nimport { FReassignConnectionEvent } from '../f-reassign-connection.event';\nimport { FConnectorBase } from '../../../../f-connectors';\nimport { FindInputAtPositionRequest } from '../../../../domain';\nimport { FDragHandlerResult } from '../../../f-drag-handler';\nimport { IFReassignConnectionDragResult } from '../i-f-reassign-connection-drag-result';\nimport {IPointerEvent} from \"../../../../drag-toolkit\";\n\n@Injectable()\n@FExecutionRegister(FReassignConnectionFinalizeRequest)\nexport class FReassignConnectionFinalizeExecution implements IExecution<FReassignConnectionFinalizeRequest, void> {\n\n private _fResult: FDragHandlerResult<IFReassignConnectionDragResult> = inject(FDragHandlerResult);\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _fDraggable(): FDraggableBase {\n return this._fComponentsStore.fDraggable!;\n }\n\n private get _fDragHandler(): FReassignConnectionDragHandler {\n return this._fDraggableDataContext.draggableItems[ 0 ] as FReassignConnectionDragHandler;\n }\n\n public handle(request: FReassignConnectionFinalizeRequest): void {\n if (!this._isDroppedConnectionReassignEvent()) {\n return;\n }\n this._applyReassignEvent(request.event);\n this._fDragHandler.onPointerUp();\n }\n\n private _isDroppedConnectionReassignEvent(): boolean {\n return this._fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FReassignConnectionDragHandler\n );\n }\n\n private _applyReassignEvent(event: IPointerEvent): void {\n const fInput = this._getInputUnderPointer(event);\n if (\n !!fInput && !this._isReassignToDifferentInput(fInput)\n ) {\n return;\n }\n\n this._emitReassignConnectionEvent(event, fInput);\n }\n\n private _getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this._fMediator.execute<FConnectorBase | undefined>(\n new FindInputAtPositionRequest(\n event.getPosition(),\n this._fResult.getData().toConnectorRect,\n this._fResult.getData().canBeConnectedInputs\n )\n );\n }\n\n private _isReassignToDifferentInput(fInput: FConnectorBase): boolean {\n return this._fResult.getData().fConnection.fInputId !== fInput.fId;\n }\n\n private _emitReassignConnectionEvent(event: IPointerEvent, fInput?: FConnectorBase): void {\n this._fDraggable.fReassignConnection.emit(this._getEventData(event, fInput));\n }\n\n private _getEventData(event: IPointerEvent, fInput?: FConnectorBase): FReassignConnectionEvent {\n const fConnection = this._fResult.getData().fConnection;\n\n return new FReassignConnectionEvent(\n fConnection.fId,\n fConnection.fOutputId,\n fConnection.fInputId,\n fInput?.fId, event.getPosition()\n );\n }\n}\n","import { FEventTrigger } from '../../../../domain';\nimport {IPointerEvent} from \"../../../../drag-toolkit\";\n\nexport class FReassignConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { FReassignConnectionPreparationRequest } from './f-reassign-connection-preparation.request';\nimport { IPoint, ITransformModel, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { isValidEventTrigger, UpdateItemAndChildrenLayersRequest } from '../../../../domain';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FConnectionBase } from '../../../../f-connection';\nimport { FReassignConnectionDragHandler } from '../f-reassign-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(FReassignConnectionPreparationRequest)\nexport class FReassignConnectionPreparationExecution implements IExecution<FReassignConnectionPreparationRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _injector = inject(Injector);\n\n private _fConnection: FConnectionBase | undefined;\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private get _fConnections(): FConnectionBase[] {\n return this._fComponentsStore.fConnections;\n }\n\n public handle(request: FReassignConnectionPreparationRequest): void {\n if (!this._isValid(request) || !this._isValidTrigger(request)) {\n return;\n }\n\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost).div(this._transform.scale);\n this._fDraggableDataContext.draggableItems = [\n new FReassignConnectionDragHandler(this._injector, this._fConnection!)\n ];\n\n setTimeout(() => this._updateConnectionLayer());\n }\n\n private _isValid(request: FReassignConnectionPreparationRequest): boolean {\n this._fConnection = this._getConnectionToReassign(this._getPointInFlow(request));\n return !!this._fConnection && !this._fDraggableDataContext.draggableItems.length;\n }\n\n private _isValidTrigger(request: FReassignConnectionPreparationRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n\n private _getPointInFlow(request: FReassignConnectionPreparationRequest): IPoint {\n return Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost)\n .sub(this._transform.scaledPosition).sub(this._transform.position)\n .div(this._transform.scale);\n }\n\n private _getConnectionToReassign(position: IPoint): FConnectionBase | undefined {\n const connections = this._getConnectionsFromPoint(position);\n return connections.length ? connections[0] : undefined;\n }\n\n private _getConnectionsFromPoint(position: IPoint): FConnectionBase[] {\n return this._fConnections.filter((x) => {\n return x.fDragHandle?.point && this._isPointInsideCircle(position, x.fDragHandle.point) && !x.fDraggingDisabled;\n });\n }\n\n private _isPointInsideCircle(point: IPoint, circleCenter: IPoint): boolean {\n return (point.x - circleCenter.x) ** 2 + (point.y - circleCenter.y) ** 2 <= 8 ** 2;\n }\n\n private _updateConnectionLayer(): void {\n this._fMediator.execute<void>(\n new UpdateItemAndChildrenLayersRequest(\n this._fConnection!, this._fComponentsStore.fCanvas!.fConnectionsContainer().nativeElement\n )\n );\n }\n}\n","import {\n FCreateConnectionDragHandlerPreparationExecution,\n FCreateConnectionFinalizeExecution,\n FCreateConnectionFromOutletPreparationExecution,\n FCreateConnectionFromOutputPreparationExecution,\n FCreateConnectionPreparationExecution,\n GetFirstConnectableOutputExecution,\n} from './f-create-connection';\nimport {\n FReassignConnectionFinalizeExecution,\n FReassignConnectionPreparationExecution,\n} from './f-reassign-connection';\n\nexport const CONNECTIONS_PROVIDERS = [\n\n FCreateConnectionFinalizeExecution,\n\n FCreateConnectionDragHandlerPreparationExecution,\n\n FCreateConnectionFromOutletPreparationExecution,\n\n GetFirstConnectableOutputExecution,\n\n FCreateConnectionFromOutputPreparationExecution,\n\n FCreateConnectionPreparationExecution,\n\n FReassignConnectionFinalizeExecution,\n\n FReassignConnectionPreparationExecution,\n];\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeDropToGroupFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Directive, Injector } from '@angular/core';\nimport { IPoint, ITransformModel, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { IFDragHandler } from '../f-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\nimport { INodeWithRect } from '../domain';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n@Directive()\nexport class FNodeDropToGroupDragHandler implements IFDragHandler {\n\n private readonly _fComponentsStore: FComponentsStore;\n private readonly _fDraggableDataContext: FDraggableDataContext;\n\n public fEventType = 'move-node-to-parent';\n\n private _DEBOUNCE_TIME = 1;\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private _onPointerDownPosition: IPoint = PointExtensions.initialize();\n private _debounceTimer: any = null;\n\n public fNodeWithRect: INodeWithRect | null = null;\n\n constructor(\n _injector: Injector,\n private notDraggedNodesRects: INodeWithRect[],\n ) {\n this._fComponentsStore = _injector.get(FComponentsStore);\n this._fDraggableDataContext = _injector.get(FDraggableDataContext);\n this._onPointerDownPosition = this._fDraggableDataContext.onPointerDownPosition;\n }\n\n private _toggleParentNode(difference: IPoint): void {\n const isInclude = this._isNodeInsideAnotherNode(this._getNewPosition(difference));\n if (isInclude) {\n this._markIncludeNode(isInclude);\n } else {\n this._unmarkIncludeNode();\n }\n }\n\n private _getNewPosition(difference: IPoint): IPoint {\n return Point.fromPoint(this._onPointerDownPosition).add(difference).mult(this._transform.scale);\n }\n\n private _isNodeInsideAnotherNode(point: IPoint): INodeWithRect | undefined {\n return this.notDraggedNodesRects.find((x) => RectExtensions.isIncludePoint(x.rect, point));\n }\n\n public onPointerMove(difference: IPoint): void {\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n }\n\n this._debounceTimer = setTimeout(() => this._toggleParentNode(difference), this._DEBOUNCE_TIME);\n }\n\n private _markIncludeNode(nodeWithRect: INodeWithRect): void {\n this._unmarkIncludeNode();\n this.fNodeWithRect = nodeWithRect;\n nodeWithRect.node.setClass('f-parent-for-drop');\n }\n\n private _unmarkIncludeNode(): void {\n this.fNodeWithRect?.node.removeClass('f-parent-for-drop');\n this.fNodeWithRect = null;\n }\n\n public onPointerUp(): void {\n this._unmarkIncludeNode();\n\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n this._debounceTimer = null;\n }\n }\n}\n","import { ILine, IPoint, PointExtensions, RoundedRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport {\n CalculateConnectionLineByBehaviorRequest,\n GetConnectorAndRectRequest,\n IConnectorAndRect\n} from '../../../domain';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FConnectionBase } from '../../../f-connection';\nimport { Injector } from '@angular/core';\n\nexport class BaseConnectionDragHandler {\n\n private readonly _fMediator: FMediator;\n private readonly _fComponentsStore: FComponentsStore;\n\n private _fOutputWithRect!: IConnectorAndRect;\n private _fInputWithRect!: IConnectorAndRect;\n\n private get _fOutput(): FConnectorBase {\n const result = this._fComponentsStore.fOutputs.find((x) => x.fId === this.fConnection.fOutputId)!;\n if (!result) {\n throw new Error(this._connectorNotFoundPrefix(`fOutput with id ${ this.fConnection.fOutputId } not found`));\n }\n return result;\n }\n\n private get _fInput(): FConnectorBase {\n const result = this._fComponentsStore.fInputs.find((x) => x.fId === this.fConnection.fInputId)!;\n if (!result) {\n throw new Error(this._connectorNotFoundPrefix(`fInput with id ${ this.fConnection.fInputId } not found`));\n }\n return result;\n }\n\n private _sourceDifference = PointExtensions.initialize();\n private _targetDifference = PointExtensions.initialize();\n\n constructor(\n _injector: Injector,\n public fConnection: FConnectionBase,\n ) {\n this._fMediator = _injector.get(FMediator);\n this._fComponentsStore = _injector.get(FComponentsStore);\n this._initialize();\n }\n\n private _initialize(): void {\n this._fOutputWithRect = this._fMediator.execute<IConnectorAndRect>(new GetConnectorAndRectRequest(this._fOutput));\n this._fInputWithRect = this._fMediator.execute<IConnectorAndRect>(new GetConnectorAndRectRequest(this._fInput));\n }\n\n public setSourceDifference(difference: IPoint): void {\n this._sourceDifference = difference;\n }\n\n public setTargetDifference(difference: IPoint): void {\n this._targetDifference = difference;\n }\n\n protected redraw(): void {\n this._redrawConnection(this._recalculateConnection());\n }\n\n private _recalculateConnection(): ILine {\n return this._fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n RoundedRect.fromRoundedRect(this._fOutputWithRect.fRect).addPoint(this._sourceDifference),\n RoundedRect.fromRoundedRect(this._fInputWithRect.fRect).addPoint(this._targetDifference),\n this.fConnection.fBehavior,\n this._fOutputWithRect.fConnector.fConnectableSide,\n this._fInputWithRect.fConnector.fConnectableSide\n ));\n }\n\n private _redrawConnection(line: ILine): void {\n this.fConnection.setLine(\n line,\n this._fOutputWithRect.fConnector.fConnectableSide,\n this._fInputWithRect.fConnector.fConnectableSide\n );\n this.fConnection.redraw();\n }\n\n private _connectorNotFoundPrefix(message: string): string {\n return `ConnectionDragHandler Error: Connection From (fOutput)${ this.fConnection.fOutputId } To (fInput)${ this.fConnection.fInputId }. ${ message }. Please ensure that all f-connections are associated with existing connectors`;\n }\n}\n","import { BaseConnectionDragHandler } from './base-connection.drag-handler';\nimport { FConnectionBase } from '../../../f-connection';\nimport { IPoint } from '@foblex/2d';\nimport { Injector } from '@angular/core';\n\nexport class SourceConnectionDragHandler extends BaseConnectionDragHandler {\n\n constructor(injector: Injector, fConnection: FConnectionBase) {\n super(injector, fConnection);\n }\n\n public override setSourceDifference(difference: IPoint) {\n super.setSourceDifference(difference);\n this.redraw();\n }\n}\n","import { BaseConnectionDragHandler } from './base-connection.drag-handler';\nimport { FConnectionBase } from '../../../f-connection';\nimport { IPoint } from '@foblex/2d';\nimport { Injector } from '@angular/core';\n\nexport class SourceTargetConnectionDragHandler extends BaseConnectionDragHandler {\n\n private readonly _callTracker = new Map<string, boolean>();\n\n constructor(injector: Injector, fConnection: FConnectionBase) {\n super(injector, fConnection);\n }\n\n public override setSourceDifference(difference: IPoint) {\n super.setSourceDifference(difference);\n this._checkAndTriggerAction();\n }\n\n public override setTargetDifference(difference: IPoint) {\n super.setTargetDifference(difference);\n this._checkAndTriggerAction();\n }\n\n private _checkAndTriggerAction() {\n if ([...this._callTracker.values()].every(Boolean)) {\n this._callTracker.clear();\n this.redraw();\n }\n }\n}\n\n","import { FConnectionBase } from '../../../f-connection';\nimport { BaseConnectionDragHandler } from './base-connection.drag-handler';\nimport { IPoint } from '@foblex/2d';\nimport { Injector } from '@angular/core';\n\nexport class TargetConnectionDragHandler extends BaseConnectionDragHandler {\n\n constructor(injector: Injector, fConnection: FConnectionBase) {\n super(injector, fConnection);\n }\n\n public override setTargetDifference(difference: IPoint) {\n super.setTargetDifference(difference);\n this.redraw();\n }\n}\n","import { INodeMoveLimitsAndPosition } from '../../i-node-move-limits-and-position';\n\nexport class CalculateCommonNodeMoveLimitsRequest {\n\n constructor(\n public limits: INodeMoveLimitsAndPosition[]\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { CalculateCommonNodeMoveLimitsRequest } from './calculate-common-node-move-limits.request';\nimport { IPoint } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { INodeMoveLimitsAndPosition } from '../../i-node-move-limits-and-position';\nimport { INodeMoveLimits } from '../../i-node-move-limits';\n\n@Injectable()\n@FExecutionRegister(CalculateCommonNodeMoveLimitsRequest)\nexport class CalculateCommonNodeMoveLimitsExecution\n implements IExecution<CalculateCommonNodeMoveLimitsRequest, INodeMoveLimits> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n private get _vCellSize(): number {\n return this._fComponentsStore.fDraggable!.vCellSize;\n }\n\n private get _hCellSize(): number {\n return this._fComponentsStore.fDraggable!.hCellSize;\n }\n\n public handle(request: CalculateCommonNodeMoveLimitsRequest): INodeMoveLimits {\n return this._calculateCommonLimits(request.limits);\n }\n\n private _calculateCommonLimits(limits: INodeMoveLimitsAndPosition[]): INodeMoveLimits {\n this._snapLimitToGrid(limits[0]);\n return limits.reduce((result: INodeMoveLimits, x) => {\n this._snapLimitToGrid(x);\n return this._clampRestrictions(result, x);\n }, limits[0]);\n }\n\n private _clampRestrictions(common: INodeMoveLimits, x: INodeMoveLimitsAndPosition): INodeMoveLimits {\n common.min = this._clampMinRestrictions(common.min, x.min);\n common.max = this._clampMaxRestrictions(common.max, x.max);\n return common;\n }\n\n private _clampMinRestrictions(common: IPoint, node: IPoint): IPoint {\n return {\n x: Math.max(common.x, node.x),\n y: Math.max(common.y, node.y),\n }\n }\n\n private _clampMaxRestrictions(common: IPoint, node: IPoint): IPoint {\n return {\n x: Math.min(common.x, node.x),\n y: Math.min(common.y, node.y),\n }\n }\n\n private _snapLimitToGrid(restriction: INodeMoveLimitsAndPosition): void {\n const { min, max, position } = restriction;\n restriction.min = {\n x: this._snapLimitToGridMinimum(position.x + min.x, this._hCellSize) - position.x,\n y: this._snapLimitToGridMinimum(position.y + min.y, this._vCellSize) - position.y,\n };\n restriction.max = {\n x: this._snapLimitToGridMaximum(position.x + max.x, this._hCellSize) - position.x,\n y: this._snapLimitToGridMaximum(position.y + max.y, this._vCellSize) - position.y,\n };\n }\n\n private _snapLimitToGridMinimum(value: number, cellSize: number): number {\n return Math.ceil(value / cellSize) * cellSize;\n }\n\n private _snapLimitToGridMaximum(value: number, cellSize: number): number {\n return Math.floor(value / cellSize) * cellSize;\n }\n}\n","import { FNodeMoveDragHandler } from '../../../f-node-move.drag-handler';\nimport { BaseConnectionDragHandler } from '../../../connection-drag-handlers/base-connection.drag-handler';\n\nexport class PutInputConnectionHandlersToArrayRequest {\n\n constructor(\n public fDragHandler: FNodeMoveDragHandler,\n public outputIds: string[],\n public result: BaseConnectionDragHandler[]\n ) {\n }\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { PutInputConnectionHandlersToArrayRequest } from './put-input-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { FConnectionBase } from '../../../../../f-connection';\nimport { BaseConnectionDragHandler } from '../../../connection-drag-handlers/base-connection.drag-handler';\nimport { SourceTargetConnectionDragHandler } from '../../../connection-drag-handlers/source-target-connection.drag-handler';\nimport { TargetConnectionDragHandler } from '../../../connection-drag-handlers/target-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(PutInputConnectionHandlersToArrayRequest)\nexport class PutInputConnectionHandlersToArrayExecution\n implements IExecution<PutInputConnectionHandlersToArrayRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _injector = inject(Injector);\n\n private get _fConnections(): FConnectionBase[] {\n return this._fComponentsStore.fConnections;\n }\n\n public handle(request: PutInputConnectionHandlersToArrayRequest): void {\n this._getInputConnections(request.fDragHandler.fNode).forEach((fConnection) => {\n this._createAndSetConnectionToNodeHandler(fConnection, request);\n });\n }\n\n private _getInputConnections(fNode: FNodeBase): FConnectionBase[] {\n const ids = new Set(this._getNodeInputIds(fNode));\n return this._fConnections.filter((x) => ids.has(x.fInputId));\n }\n\n private _getNodeInputIds(fNode: FNodeBase): string[] {\n return this._fComponentsStore.fInputs\n .filter((x) => fNode.isContains(x.hostElement))\n .map((x) => x.fId);\n }\n\n private _createAndSetConnectionToNodeHandler(fConnection: FConnectionBase, request: PutInputConnectionHandlersToArrayRequest): void {\n let fHandler = this._getExistingConnectionHandler(request.result, fConnection);\n if (!fHandler) {\n fHandler = this._createConnectionHandler(request.outputIds, fConnection);\n request.result.push(fHandler);\n }\n request.fDragHandler.fTargetHandlers.push(fHandler);\n }\n\n private _getExistingConnectionHandler(fHandlers: BaseConnectionDragHandler[], fConnection: FConnectionBase): BaseConnectionDragHandler | undefined {\n return fHandlers.find((x) => x.fConnection.fId === fConnection.fId);\n }\n\n private _createConnectionHandler(outputIds: string[], fConnection: FConnectionBase): BaseConnectionDragHandler {\n let result: BaseConnectionDragHandler | undefined;\n if (outputIds.includes(fConnection.fOutputId)) {\n result = new SourceTargetConnectionDragHandler(this._injector, fConnection);\n } else {\n result = new TargetConnectionDragHandler(this._injector, fConnection);\n }\n return result;\n }\n}\n\n","import { FNodeMoveDragHandler } from '../../../f-node-move.drag-handler';\nimport { BaseConnectionDragHandler } from '../../../connection-drag-handlers/base-connection.drag-handler';\n\nexport class PutOutputConnectionHandlersToArrayRequest {\n\n constructor(\n public fDragHandler: FNodeMoveDragHandler,\n public inputIds: string[],\n public result: BaseConnectionDragHandler[]\n ) {\n }\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { PutOutputConnectionHandlersToArrayRequest } from './put-output-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { FConnectionBase } from '../../../../../f-connection';\nimport { SourceTargetConnectionDragHandler } from '../../../connection-drag-handlers/source-target-connection.drag-handler';\nimport { BaseConnectionDragHandler } from '../../../connection-drag-handlers/base-connection.drag-handler';\nimport { SourceConnectionDragHandler } from '../../../connection-drag-handlers/source-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(PutOutputConnectionHandlersToArrayRequest)\nexport class PutOutputConnectionHandlersToArrayExecution\n implements IExecution<PutOutputConnectionHandlersToArrayRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _injector = inject(Injector);\n\n private get _fConnections(): FConnectionBase[] {\n return this._fComponentsStore.fConnections;\n }\n\n public handle(request: PutOutputConnectionHandlersToArrayRequest): void {\n this._getOutputConnections(request.fDragHandler.fNode).forEach((fConnection) => {\n this._createAndSetConnectionToNodeHandler(fConnection, request);\n });\n }\n\n public _getOutputConnections(node: FNodeBase): FConnectionBase[] {\n const ids = new Set(this._getNodeOutputIds(node));\n return this._fConnections.filter((x) => ids.has(x.fOutputId));\n }\n\n private _getNodeOutputIds(node: FNodeBase): string[] {\n return this._fComponentsStore.fOutputs\n .filter((x) => node.isContains(x.hostElement))\n .map((x) => x.fId);\n }\n\n private _createAndSetConnectionToNodeHandler(fConnection: FConnectionBase, request: PutOutputConnectionHandlersToArrayRequest): void {\n let fHandler = this._getExistingConnectionHandler(request.result, fConnection);\n if (!fHandler) {\n fHandler = this._createConnectionHandler(request.inputIds, fConnection);\n request.result.push(fHandler);\n }\n request.fDragHandler.fSourceHandlers.push(fHandler);\n }\n\n private _getExistingConnectionHandler(fHandlers: BaseConnectionDragHandler[], fConnection: FConnectionBase): BaseConnectionDragHandler | undefined {\n return fHandlers.find((x) => x.fConnection.fId === fConnection.fId);\n }\n\n private _createConnectionHandler(inputIds: string[], fConnection: FConnectionBase): BaseConnectionDragHandler {\n let result: BaseConnectionDragHandler;\n if (inputIds.includes(fConnection.fInputId)) {\n result = new SourceTargetConnectionDragHandler(this._injector, fConnection);\n } else {\n result = new SourceConnectionDragHandler(this._injector, fConnection)\n }\n return result;\n }\n}\n\n","import { FNodeBase } from '../../../../../f-node';\n\nexport class CalculateNodeMoveLimitsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public hasParentNodeInSelected: boolean\n ) {\n }\n}\n","import {IMinMaxPoint} from \"@foblex/2d\";\n\nexport function infinityMinMax(): IMinMaxPoint {\n return {\n min: { x: -Infinity, y: -Infinity },\n max: { x: Infinity, y: Infinity }\n };\n}\n","import {inject, Injectable} from '@angular/core';\nimport {CalculateNodeMoveLimitsRequest} from './calculate-node-move-limits.request';\nimport {IPoint, IRect, PointExtensions} from '@foblex/2d';\nimport {FExecutionRegister, FMediator, IExecution} from '@foblex/mediator';\nimport {GetNormalizedParentNodeRectRequest} from '../../../../domain';\nimport {FNodeBase} from '../../../../../f-node';\nimport {GetNormalizedElementRectRequest} from '../../../../../domain';\nimport {INodeMoveLimits} from '../../i-node-move-limits';\nimport {infinityMinMax} from \"../../../../../utils\";\n\n@Injectable()\n@FExecutionRegister(CalculateNodeMoveLimitsRequest)\nexport class CalculateNodeMoveLimitsExecution\n implements IExecution<CalculateNodeMoveLimitsRequest, INodeMoveLimits> {\n\n private _fMediator = inject(FMediator);\n\n public handle(request: CalculateNodeMoveLimitsRequest): INodeMoveLimits {\n if (!request.fNode.fParentId || request.hasParentNodeInSelected) {\n return {...infinityMinMax()};\n }\n\n return this._calculateDifference(\n this._fParentRect(request.fNode), this._fNodeRect(request.fNode)\n );\n }\n\n private _fNodeRect(fNode: FNodeBase): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(fNode.hostElement));\n }\n\n private _fParentRect(fNode: FNodeBase): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedParentNodeRectRequest(fNode));\n }\n\n private _calculateDifference(fParentRect: IRect, fRect: IRect): INodeMoveLimits {\n return {\n min: this._calculateMinimumDifference(fParentRect, fRect),\n max: this._calculateMaximumDifference(fParentRect, fRect)\n };\n }\n\n private _calculateMinimumDifference(fParentRect: IRect, fRect: IRect): IPoint {\n return PointExtensions.initialize(fParentRect.x - fRect.x, fParentRect.y - fRect.y);\n }\n\n private _calculateMaximumDifference(fParentRect: IRect, fRect: IRect): IPoint {\n return PointExtensions.initialize(\n (fParentRect.x + fParentRect.width) - (fRect.x + fRect.width),\n (fParentRect.y + fParentRect.height) - (fRect.y + fRect.height),\n );\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class CreateMoveNodesDragModelFromSelectionRequest {\n\n constructor(\n public nodeWithDisabledSelection?: FNodeBase\n ) {\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/2d';\nimport { IFDragHandler } from '../f-drag-handler';\nimport { FNodeBase } from '../../f-node';\nimport { BaseConnectionDragHandler } from './connection-drag-handlers';\n\nexport class FNodeMoveDragHandler implements IFDragHandler {\n\n public readonly fEventType = 'move-node';\n\n private readonly _onPointerDownPosition = PointExtensions.initialize();\n\n constructor(\n public fNode: FNodeBase,\n public fSourceHandlers: BaseConnectionDragHandler[] = [],\n public fTargetHandlers: BaseConnectionDragHandler[] = [],\n ) {\n this._onPointerDownPosition = { ...fNode.position };\n }\n\n public onPointerMove(difference: IPoint): void {\n this._redraw(this._calculateNewPosition(difference));\n\n this.fSourceHandlers.forEach((x) => x.setSourceDifference(difference));\n this.fTargetHandlers.forEach((x) => x.setTargetDifference(difference));\n }\n\n private _calculateNewPosition(difference: IPoint): IPoint {\n return PointExtensions.sum(this._onPointerDownPosition, difference);\n }\n\n private _redraw(position: IPoint): void {\n this.fNode.updatePosition(position);\n this.fNode.redraw();\n }\n\n public onPointerUp(): void {\n this.fNode.positionChange.emit(this.fNode.position);\n }\n}\n","import { IMinMaxPoint, IPoint } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { Injector } from '@angular/core';\n\nexport class PointBoundsLimiter {\n\n private readonly _fComponentsStore: FComponentsStore;\n\n private readonly _vCellSize: number;\n private readonly _hCellSize: number;\n\n constructor(\n _injector: Injector,\n private _onPointerDown: IPoint,\n private readonly _limit: IMinMaxPoint\n ) {\n this._fComponentsStore = _injector.get(FComponentsStore);\n this._vCellSize = this._fComponentsStore.fDraggable!.vCellSize;\n this._hCellSize = this._fComponentsStore.fDraggable!.hCellSize;\n }\n\n public limit(difference: IPoint, adjustCellSize: boolean): IPoint {\n const { min, max } = this._limit;\n\n const { x, y } = this._cellSizeStrategies[ +adjustCellSize ](difference);\n\n return {\n x: this._clamp(x, min.x, max.x),\n y: this._clamp(y, min.y, max.y),\n };\n }\n\n private _cellSizeStrategies: Record<number, (difference: IPoint) => IPoint> = {\n 0: this._skipCellSize.bind(this),\n 1: this._applyCellSize.bind(this)\n };\n\n private _applyCellSize(difference: IPoint): IPoint {\n return {\n x: this._snapToGrid(this._onPointerDown.x + difference.x, this._hCellSize) - this._onPointerDown.x,\n y: this._snapToGrid(this._onPointerDown.y + difference.y, this._vCellSize) - this._onPointerDown.y\n };\n }\n\n private _skipCellSize(difference: IPoint): IPoint {\n return difference;\n }\n\n private _clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n }\n\n private _snapToGrid(value: number, cellSize: number): number {\n return Math.round(value / cellSize) * cellSize;\n }\n}\n","import { IMinMaxPoint, IPoint, IRect } from '@foblex/2d';\nimport { IFDragHandler } from '../f-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\nimport { PointBoundsLimiter } from './point-bounds-limiter';\nimport { FNodeMoveDragHandler } from './f-node-move.drag-handler';\nimport { Injector } from '@angular/core';\n\nexport class FSummaryNodeMoveDragHandler implements IFDragHandler {\n\n public readonly fEventType = 'move-node';\n public readonly fData: any;\n\n private readonly _fComponentStore: FComponentsStore;\n private readonly _fBoundsLimiter: PointBoundsLimiter;\n\n constructor(\n _injector: Injector,\n public limits: IMinMaxPoint,\n public fHandlers: FNodeMoveDragHandler[],\n public commonRect: IRect\n ) {\n this._fComponentStore = _injector.get(FComponentsStore);\n this._fBoundsLimiter = new PointBoundsLimiter(_injector, this.commonRect, limits);\n this.fData = {\n fNodeIds: this.fHandlers.map((x) => x.fNode.fId)\n };\n }\n\n public onPointerMove(difference: IPoint): void {\n const adjustCellSize = this._fComponentStore.fDraggable!.fCellSizeWhileDragging;\n const differenceWithRestrictions = this._fBoundsLimiter.limit(difference, adjustCellSize);\n\n this.fHandlers.forEach((x) => x.onPointerMove(differenceWithRestrictions));\n }\n\n public onPointerUp(): void {\n this.fHandlers.forEach((x) => x.onPointerUp());\n }\n\n public calculateRestrictedDifference(difference: IPoint): IPoint {\n return this._fBoundsLimiter.limit(difference, true);\n }\n}\n","import { inject, Injectable, Injector } 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 { FNodeMoveDragHandler } from '../f-node-move.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { CalculateNodeMoveLimitsRequest } from './domain/calculate-node-move-limits';\nimport { PutOutputConnectionHandlersToArrayRequest } from './domain/put-output-connection-handlers-to-array';\nimport {\n PutInputConnectionHandlersToArrayRequest\n} from './domain/put-input-connection-handlers-to-array';\nimport { IsArrayHasParentNodeRequest } from '../../domain';\nimport {\n GetDeepChildrenNodesAndGroupsRequest,\n GetNormalizedElementRectRequest,\n GetParentNodesRequest\n} from '../../../domain';\nimport { flatMap } from '@foblex/utils';\nimport { CalculateCommonNodeMoveLimitsRequest } from './domain/calculate-common-node-move-limits';\nimport { IMinMaxPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { BaseConnectionDragHandler } from '../connection-drag-handlers';\nimport { FSummaryNodeMoveDragHandler } from '../f-summary-node-move.drag-handler';\nimport { INodeMoveLimitsAndPosition } from './i-node-move-limits-and-position';\nimport { INodeMoveLimits } from './i-node-move-limits';\n\n@Injectable()\n@FExecutionRegister(CreateMoveNodesDragModelFromSelectionRequest)\nexport class CreateMoveNodesDragModelFromSelectionExecution\n implements IExecution<CreateMoveNodesDragModelFromSelectionRequest, FSummaryNodeMoveDragHandler> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _injector = inject(Injector);\n\n public handle(request: CreateMoveNodesDragModelFromSelectionRequest): FSummaryNodeMoveDragHandler {\n const fDraggedNodes = this._getDraggedNodes(request.nodeWithDisabledSelection);\n\n const fNodesToDrag = this._getNodesToDragWithCommonLimits(fDraggedNodes);\n\n const fDragHandlers = this._mapToNodeDragHandlers(fNodesToDrag);\n\n this._setConnectionsHandlersToNodes(fDragHandlers, this._getAllOutputIds(fNodesToDrag), this._getAllInputIds(fNodesToDrag));\n\n const commonLimits = this._calculateCommonLimits(\n this._getNodesMoveLimits(fNodesToDrag, [], fDraggedNodes)\n );\n\n return new FSummaryNodeMoveDragHandler(\n this._injector,\n commonLimits, fDragHandlers, this._getDraggedNodesBoundingRect(fNodesToDrag)\n );\n }\n\n private _getDraggedNodes(nodeWithDisabledSelection?: FNodeBase): FNodeBase[] {\n const result = this._getNodesFromSelection();\n if (nodeWithDisabledSelection) {\n result.push(nodeWithDisabledSelection);\n }\n return result;\n }\n\n private _getNodesFromSelection(): FNodeBase[] {\n return this._fDraggableDataContext.selectedItems\n .map((x) => this._findNode(x.hostElement))\n .filter((x): x is FNodeBase => !!x);\n }\n\n private _findNode(hostElement: HTMLElement | SVGElement): FNodeBase | undefined {\n return this._fComponentsStore.fNodes\n .find(n => n.isContains(hostElement));\n }\n\n private _getNodesToDragWithCommonLimits(fDraggedNodes: FNodeBase[]): FNodeBase[] {\n return fDraggedNodes.reduce((result: FNodeBase[], x: FNodeBase) => {\n result.push(x);\n return result.concat(this._getChildrenNodes(x.fId));\n }, []);\n }\n\n private _getNodesMoveLimits(fNodes: FNodeBase[], fParentNodes: FNodeBase[], fDraggedNodes: FNodeBase[]): INodeMoveLimitsAndPosition[] {\n return fDraggedNodes.map((x) => {\n const fParentNodes = this._fMediator.execute<FNodeBase[]>(new GetParentNodesRequest(x));\n return { position: x.position, ...this._getNodeMoveLimits(x, fParentNodes, fDraggedNodes) };\n });\n }\n\n private _getNodeMoveLimits(fNode: FNodeBase, fParentNodes: FNodeBase[], fDraggedNodes: FNodeBase[]): INodeMoveLimits {\n return this._fMediator.execute<IMinMaxPoint>(\n new CalculateNodeMoveLimitsRequest(fNode, this._isParentNodeInArray(fParentNodes, fDraggedNodes))\n );\n }\n\n private _isParentNodeInArray(fParentNodes: FNodeBase[], fDraggedNodes: FNodeBase[]): boolean {\n return this._fMediator.execute<boolean>(new IsArrayHasParentNodeRequest(fParentNodes, fDraggedNodes))\n }\n\n private _getChildrenNodes(fId: string): FNodeBase[] {\n return this._fMediator.execute<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private _calculateCommonLimits(limits: INodeMoveLimitsAndPosition[]): IMinMaxPoint {\n return this._fMediator.execute<IMinMaxPoint>(\n new CalculateCommonNodeMoveLimitsRequest(limits)\n );\n }\n\n private _getAllOutputIds(fNodes: FNodeBase[]): string[] {\n return flatMap(fNodes, (fNode) => this._getNodeOutputIds(fNode));\n }\n\n private _getNodeOutputIds(fNode: FNodeBase): string[] {\n return this._fComponentsStore.fOutputs.filter((x) => fNode.fId === x.fNodeId)\n .map((x) => x.fId);\n }\n\n private _getAllInputIds(fNodes: FNodeBase[]): string[] {\n return flatMap(fNodes, (fNode) => this._getNodeInputIds(fNode));\n }\n\n private _getNodeInputIds(fNode: FNodeBase): string[] {\n return this._fComponentsStore.fInputs.filter((x) => fNode.fId === x.fNodeId)\n .map((x) => x.fId);\n }\n\n private _mapToNodeDragHandlers(items: FNodeBase[]): FNodeMoveDragHandler[] {\n return items.map((x) => new FNodeMoveDragHandler(x));\n }\n\n private _setConnectionsHandlersToNodes(\n handlers: FNodeMoveDragHandler[], outputIds: string[], inputIds: string[]\n ): void {\n const fConnectionHandlers: BaseConnectionDragHandler[] = [];\n handlers.forEach((fNodeHandler) => {\n this._fMediator.execute(new PutOutputConnectionHandlersToArrayRequest(fNodeHandler, inputIds, fConnectionHandlers));\n this._fMediator.execute(new PutInputConnectionHandlersToArrayRequest(fNodeHandler, outputIds, fConnectionHandlers));\n });\n }\n\n private _getDraggedNodesBoundingRect(fNodes: FNodeBase[]): IRect {\n return RectExtensions.union(fNodes.map((x) => {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.hostElement));\n })) || RectExtensions.initialize();\n }\n}\n","import { CreateMoveNodesDragModelFromSelectionExecution } from './create-move-nodes-drag-model-from-selection.execution';\nimport { CalculateNodeMoveLimitsExecution } from './domain/calculate-node-move-limits';\nimport { PutInputConnectionHandlersToArrayExecution } from './domain/put-input-connection-handlers-to-array';\nimport { PutOutputConnectionHandlersToArrayExecution } from './domain/put-output-connection-handlers-to-array';\nimport { CalculateCommonNodeMoveLimitsExecution } from './domain/calculate-common-node-move-limits';\n\nexport const CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS = [\n\n CalculateCommonNodeMoveLimitsExecution,\n\n CalculateNodeMoveLimitsExecution,\n\n PutInputConnectionHandlersToArrayExecution,\n\n PutOutputConnectionHandlersToArrayExecution,\n\n CreateMoveNodesDragModelFromSelectionExecution,\n];\n","import { IRect } from '@foblex/2d';\nimport { FNodeBase } from '../../../f-node';\n\nexport class LineAlignmentPreparationRequest {\n\n constructor(\n public fNodes: FNodeBase[],\n public commonRect: IRect\n ) {\n }\n}\n","import { findClosestAlignment, IMinMaxPoint, IPoint, IRect, ISize, ITransformModel, RectExtensions } from '@foblex/2d';\nimport { IFDragHandler } from '../index';\nimport { FComponentsStore } from '../../f-storage';\nimport { ILineAlignmentResult, LineService } from '../../f-line-alignment';\nimport { Injector } from '@angular/core';\n\nexport class FLineAlignmentDragHandler implements IFDragHandler {\n\n public readonly fEventType = 'line-alignment';\n\n private readonly _fComponentsStore: FComponentsStore;\n\n private _debounceTimer: any = null;\n\n private readonly _transform: ITransformModel;\n\n constructor(\n _injector: Injector,\n private _lineService: LineService,\n private _size: ISize,\n private _draggedNodeRect: IRect,\n private _rects: IRect[],\n private _restrictions: IMinMaxPoint,\n ) {\n this._fComponentsStore = _injector.get(FComponentsStore);\n this._transform = this._fComponentsStore.fCanvas?.transform!;\n }\n\n public onPointerMove(difference: IPoint): void {\n const restrictedDifference = this._getDifference(difference);\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n }\n\n this._debounceTimer = setTimeout(() => this._drawIntersectingLines(restrictedDifference), 15);\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 private _getDifference(difference: IPoint): IPoint {\n return {\n x: Math.min(Math.max(difference.x, this._restrictions.min.x), this._restrictions.max.x),\n y: Math.min(Math.max(difference.y, this._restrictions.min.y), this._restrictions.max.y)\n }\n }\n\n public findNearestCoordinate(difference: IPoint): ILineAlignmentResult {\n const rect = RectExtensions.addPoint(this._draggedNodeRect, difference);\n return findClosestAlignment(this._rects, rect, this._fComponentsStore.fLineAlignment!.fAlignThreshold());\n }\n\n public onPointerUp(): void {\n this._lineService.hideVerticalLine();\n this._lineService.hideHorizontalLine();\n\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n this._debounceTimer = null;\n }\n }\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 { Directive, InjectionToken, InputSignalWithTransform } from '@angular/core';\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;\n\n public abstract fAlignThreshold: InputSignalWithTransform<number, unknown>;\n}\n","import { Component, ElementRef, inject, input, numberAttribute, OnDestroy, OnInit } from '@angular/core';\nimport { F_LINE_ALIGNMENT, FLineAlignmentBase } from './f-line-alignment-base';\nimport {\n RemoveLineAlignmentFromStoreRequest,\n AddLineAlignmentToStoreRequest,\n} from '../domain';\nimport { FMediator } from '@foblex/mediator';\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\n extends FLineAlignmentBase implements OnInit, OnDestroy {\n\n public override fAlignThreshold = input<number, unknown>(10, { transform: numberAttribute });\n\n private readonly _fMediator = inject(FMediator);\n private readonly _elementReference = inject(ElementRef);\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddLineAlignmentToStoreRequest(this));\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveLineAlignmentFromStoreRequest());\n }\n}\n","import { FLineAlignmentComponent } from './f-line-alignment.component';\n\nexport const F_LINE_ALIGNMENT_PROVIDERS = [\n FLineAlignmentComponent\n];\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { LineAlignmentPreparationRequest } from './line-alignment-preparation.request';\nimport { IMinMaxPoint, IRect, ISize } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetFlowHostElementRequest } from '../../../domain';\nimport { GetNormalizedElementRectRequest } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext, FSummaryNodeMoveDragHandler } from '../../index';\nimport { FLineAlignmentDragHandler } from '../f-line-alignment.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { LineService } from '../../../f-line-alignment';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(LineAlignmentPreparationRequest)\nexport class LineAlignmentPreparationExecution implements IExecution<LineAlignmentPreparationRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _fBrowser = inject(BrowserService);\n private readonly _injector = inject(Injector);\n\n private _lineService: LineService | undefined;\n\n public handle(request: LineAlignmentPreparationRequest): void {\n this._addLineAlignmentDragHandler(request.fNodes, request.commonRect);\n }\n\n private _addLineAlignmentDragHandler(fNodes: FNodeBase[], commonRect: IRect): void {\n this._fDraggableDataContext.draggableItems.push(\n new FLineAlignmentDragHandler(\n this._injector,\n this._lineService || this._createLineService(),\n this._getFlowHostSize(),\n commonRect,\n this._getStaticNodeRects(fNodes),\n this._getCommonRestrictions()\n )\n );\n }\n\n private _getFlowHostSize(): ISize {\n return this._fMediator.execute<HTMLElement>(new GetFlowHostElementRequest())\n .getBoundingClientRect();\n }\n\n private _createLineService(): LineService {\n this._lineService = new LineService(\n this._fBrowser,\n this._fComponentsStore.fLineAlignment!.hostElement\n );\n return this._lineService;\n }\n\n private _getStaticNodeRects(fNodes: FNodeBase[]): IRect[] {\n return this._getStaticNodes(fNodes).map((x) => {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.hostElement));\n })\n }\n\n private _getStaticNodes(fNodes: FNodeBase[]): FNodeBase[] {\n return this._fComponentsStore.fNodes\n .filter((x) => !fNodes.includes(x));\n }\n\n private _getCommonRestrictions(): IMinMaxPoint {\n return this._fDraggableDataContext.draggableItems\n .filter((x) => x instanceof FSummaryNodeMoveDragHandler)[0].limits;\n }\n}\n","import { FEventTrigger } from '../../../domain';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FNodeMovePreparationRequest } from './f-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 { FNodeBase } from '../../../f-node';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from '../create-move-nodes-drag-model-from-selection';\nimport { isValidEventTrigger, SelectAndUpdateNodeLayerRequest } from '../../../domain';\nimport { isClosestElementHasClass } from '@foblex/utils';\nimport { LineAlignmentPreparationRequest } from '../line-alignment-preparation';\nimport { FSummaryNodeMoveDragHandler } from '../f-summary-node-move.drag-handler';\n\n@Injectable()\n@FExecutionRegister(FNodeMovePreparationRequest)\nexport class FNodeMovePreparationExecution implements IExecution<FNodeMovePreparationRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private _fNode: FNodeBase | undefined;\n\n public handle(request: FNodeMovePreparationRequest): void {\n if(!this._isValid(request) || !this._isValidTrigger(request)) {\n return;\n }\n\n const summaryDragHandler = this._calculateDraggedItems(this._fNode!);\n\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost).div(this._transform.scale);\n this._fDraggableDataContext.draggableItems = [summaryDragHandler];\n\n if(this._fComponentsStore.fLineAlignment) {\n this._fMediator.execute<void>(\n new LineAlignmentPreparationRequest(\n summaryDragHandler.fHandlers.map((x) => x.fNode), summaryDragHandler.commonRect\n )\n );\n }\n }\n\n private _isValid(request: FNodeMovePreparationRequest): boolean {\n return this._fDraggableDataContext.isEmpty()\n && this._isDragHandleElement(request.event.targetElement)\n && !!this._getNode(request.event.targetElement);\n }\n\n private _isDragHandleElement(element: HTMLElement): boolean {\n return isClosestElementHasClass(element, '.f-drag-handle');\n }\n\n private _getNode(element: HTMLElement): FNodeBase | undefined {\n this._fNode = this._fComponentsStore.fNodes\n .find(x => x.isContains(element) && !x.fDraggingDisabled);\n return this._fNode;\n }\n\n private _isValidTrigger(request: FNodeMovePreparationRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n\n //We drag nodes from selection model\n private _calculateDraggedItems(fNode: FNodeBase): FSummaryNodeMoveDragHandler {\n let result: FSummaryNodeMoveDragHandler;\n if (!fNode.fSelectionDisabled) {\n // Need to select node before drag\n this._fMediator.execute(new SelectAndUpdateNodeLayerRequest(fNode));\n\n result = this._dragModelFromSelection();\n } else {\n // User can drag node that can't be selected\n result = this._dragModelFromSelection(fNode);\n }\n return result;\n }\n\n private _dragModelFromSelection(nodeWithDisabledSelection?: FNodeBase): FSummaryNodeMoveDragHandler {\n return this._fMediator.execute(\n new CreateMoveNodesDragModelFromSelectionRequest(nodeWithDisabledSelection)\n );\n }\n}\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FNodeMoveFinalizeRequest } from './f-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';\nimport { IFDragHandler } from '../../f-drag-handler';\nimport { FNodeDropToGroupDragHandler } from '../../f-drop-to-group';\nimport { ILineAlignmentResult, INearestCoordinateResult } from '../../../f-line-alignment';\nimport { FLineAlignmentDragHandler } from '../f-line-alignment.drag-handler';\nimport { FSummaryNodeMoveDragHandler } from '../f-summary-node-move.drag-handler';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(FNodeMoveFinalizeRequest)\nexport class FNodeMoveFinalizeExecution implements IExecution<FNodeMoveFinalizeRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n public handle(request: FNodeMoveFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n const difference = this._getDifferenceWithLineAlignment(\n this._getDifferenceBetweenPreparationAndFinalize(request.event.getPosition())\n );\n\n const firstNodeOrGroup: FSummaryNodeMoveDragHandler = this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof FSummaryNodeMoveDragHandler)!;\n\n this._finalizeMove(firstNodeOrGroup.calculateRestrictedDifference(difference));\n\n this._applyConnectionUnderDroppedNode();\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some((x) => x instanceof FSummaryNodeMoveDragHandler);\n }\n\n private _finalizeMove(difference: IPoint): void {\n this._getItems().forEach((x) => {\n x.onPointerMove({ ...difference });\n x.onPointerUp?.();\n });\n }\n\n private _getItems(): IFDragHandler[] {\n return this._fDraggableDataContext.draggableItems\n .filter((x) => !(x instanceof FNodeDropToGroupDragHandler));\n }\n\n private _getDifferenceBetweenPreparationAndFinalize(position: IPoint): Point {\n return Point.fromPoint(position).elementTransform(this._fHost)\n .div(this._fDraggableDataContext.onPointerDownScale)\n .sub(this._fDraggableDataContext.onPointerDownPosition);\n }\n\n private _getDifferenceWithLineAlignment(difference: IPoint): IPoint {\n\n return this._applyLineAlignmentDifference(\n difference,\n this._getLineAlignmentDifference(difference)\n );\n }\n\n private _getLineAlignmentDifference(difference: IPoint): ILineAlignmentResult | undefined {\n return this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof FLineAlignmentDragHandler)\n ?.findNearestCoordinate(difference);\n }\n\n private _applyLineAlignmentDifference(difference: IPoint, intersection: ILineAlignmentResult | undefined): IPoint {\n if (intersection) {\n difference.x = this._isIntersectValue(intersection.xResult) ? (difference.x - intersection.xResult.distance!) : difference.x;\n difference.y = this._isIntersectValue(intersection.yResult) ? (difference.y - intersection.yResult.distance!) : difference.y;\n }\n return difference;\n }\n\n private _isIntersectValue(result: INearestCoordinateResult): boolean {\n return result.value !== undefined && result.value !== null;\n }\n\n private _applyConnectionUnderDroppedNode(): void {\n if (this._isDraggedJustOneNode() && this._fComponentsStore.fDraggable?.fEmitOnNodeIntersect) {\n\n const fNode = this._getFirstNodeOrGroup();\n setTimeout(() => this._fMediator.execute(new IsConnectionUnderNodeRequest(fNode)));\n }\n }\n\n private _isDraggedJustOneNode(): boolean {\n return (this._fDraggableDataContext.draggableItems[ 0 ] as FSummaryNodeMoveDragHandler).fHandlers.length === 1;\n }\n\n private _getFirstNodeOrGroup(): FNodeBase {\n return (this._fDraggableDataContext.draggableItems[ 0 ] as FSummaryNodeMoveDragHandler).fHandlers[ 0 ].fNode;\n }\n}\n","import { CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS } from './create-move-nodes-drag-model-from-selection';\nimport { FNodeMoveFinalizeExecution } from './move-finalize';\nimport { FNodeMovePreparationExecution } from './move-preparation';\nimport { LineAlignmentPreparationExecution } from './line-alignment-preparation';\n\nexport const NODE_PROVIDERS = [\n\n ...CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS,\n\n LineAlignmentPreparationExecution,\n\n FNodeMoveFinalizeExecution,\n\n FNodeMovePreparationExecution,\n];\n","import { IPoint } from '@foblex/2d';\n\nexport class FDropToGroupEvent {\n\n constructor(\n public fTargetNode: string,\n public fNodes: string[],\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FNodeDropToGroupFinalizeRequest } from './f-node-drop-to-group-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeDropToGroupDragHandler } from '../f-node-drop-to-group.drag-handler';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FSummaryNodeMoveDragHandler } from '../../f-node-move';\nimport { FDropToGroupEvent } from '../f-drop-to-group.event';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\n@Injectable()\n@FExecutionRegister(FNodeDropToGroupFinalizeRequest)\nexport class FNodeDropToGroupFinalizeExecution\n implements IExecution<FNodeDropToGroupFinalizeRequest, void> {\n\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: FNodeDropToGroupFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n const item = this._getDragHandleItem();\n if(item.fNodeWithRect) {\n this._emitDroppedChildrenEvent(item.fNodeWithRect.node.fId, request.event);\n }\n item.onPointerUp?.();\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems\n .some((x) => x instanceof FNodeDropToGroupDragHandler);\n }\n\n private _emitDroppedChildrenEvent(fTargetId: string, event: IPointerEvent): void {\n this._fComponentsStore.fDraggable?.fDropToGroup.emit(\n new FDropToGroupEvent(fTargetId, this._getDraggedNodeIds(), event.getPosition())\n );\n }\n\n private _getDragHandleItem(): FNodeDropToGroupDragHandler {\n const result = this._findDragHandleItem();\n if(!result) {\n throw new Error('NodeDragToParentDragHandler not found');\n }\n return result;\n }\n\n private _findDragHandleItem(): FNodeDropToGroupDragHandler | undefined {\n return this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof FNodeDropToGroupDragHandler);\n }\n\n private _getDraggedNodeIds(): string[] {\n return this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof FSummaryNodeMoveDragHandler)?.fHandlers\n .map((x) => x.fNode.fId) || [];\n }\n}\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeDropToGroupPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { FExternalItemBase } from '../../f-external-item-base';\n\nexport class FExternalItemCreatePlaceholderRequest {\n\n constructor(\n public fExternalItem: FExternalItemBase,\n ) {\n }\n}\n","import { FExternalItemCreatePlaceholderRequest } from './f-external-item-create-placeholder.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { EmbeddedViewRef, inject, Injectable, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { deepCloneNode, getOrCreateRootNodeForViewRef } from '@foblex/utils';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(FExternalItemCreatePlaceholderRequest)\nexport class FExternalItemCreatePlaceholderExecution\n implements IExecution<FExternalItemCreatePlaceholderRequest, HTMLElement | SVGElement> {\n\n private readonly _fBrowser = inject(BrowserService);\n private readonly _containerRef = inject(ViewContainerRef);\n\n public handle(request: FExternalItemCreatePlaceholderRequest): HTMLElement | SVGElement {\n const { hostElement, fPlaceholder } = request.fExternalItem;\n\n const result = fPlaceholder ?\n this._fromTemplate(fPlaceholder) :\n this._fromHost(hostElement as HTMLElement);\n\n result.classList.add('f-external-item-placeholder');\n result.style.pointerEvents = 'none';\n\n return result;\n }\n\n private _fromTemplate(template: TemplateRef<any>): HTMLElement {\n return getOrCreateRootNodeForViewRef(this._createViewRef(template), this._fBrowser.document);\n }\n\n private _fromHost(element: HTMLElement): HTMLElement {\n return deepCloneNode(element);\n }\n\n private _createViewRef(template: TemplateRef<any>): EmbeddedViewRef<any> {\n const result = this._containerRef.createEmbeddedView(template);\n result.detectChanges();\n return result;\n }\n}\n","import { FExternalItemBase } from '../../f-external-item-base';\n\nexport class FExternalItemCreatePreviewRequest {\n\n constructor(\n public fExternalItem: FExternalItemBase,\n ) {\n }\n}\n","import { FExternalItemCreatePreviewRequest } from './f-external-item-create-preview.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { EmbeddedViewRef, inject, Injectable, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { deepCloneNode, disableDragInteractions, extendStyles, getOrCreateRootNodeForViewRef } from '@foblex/utils';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(FExternalItemCreatePreviewRequest)\nexport class FExternalItemCreatePreviewExecution\n implements IExecution<FExternalItemCreatePreviewRequest, HTMLElement | SVGElement> {\n\n private readonly _fBrowser = inject(BrowserService);\n private readonly _containerRef = inject(ViewContainerRef);\n\n public handle(request: FExternalItemCreatePreviewRequest): HTMLElement | SVGElement {\n const { hostElement, fPreview } = request.fExternalItem;\n\n const result = fPreview ?\n this._fromTemplate(fPreview) :\n this._fromHost(hostElement as HTMLElement);\n\n this._setPreviewStyles(result);\n disableDragInteractions(result);\n result.classList.add('f-external-item-preview');\n\n return result;\n }\n\n private _fromTemplate(template: TemplateRef<any>): HTMLElement {\n return getOrCreateRootNodeForViewRef(this._createViewRef(template), this._fBrowser.document);\n }\n\n private _fromHost(element: HTMLElement): HTMLElement {\n return deepCloneNode(element);\n }\n\n private _createViewRef(template: TemplateRef<any>): EmbeddedViewRef<any> {\n const result = this._containerRef.createEmbeddedView(template);\n result.detectChanges();\n return result;\n }\n\n private _setPreviewStyles(element: HTMLElement): void {\n extendStyles(\n element.style,\n {\n 'pointer-events': 'none',\n 'margin': 'showPopover' in element ? '0 auto 0 0' : '0',\n 'position': 'fixed',\n 'top': '0',\n 'left': '0',\n 'z-index': '1000',\n },\n new Set([ 'position', ]),\n );\n }\n}\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FExternalItemFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import {IPoint, IRect, ITransformModel, Point, RectExtensions} from '@foblex/2d';\nimport {\n FExternalItemBase,\n FExternalItemCreatePlaceholderRequest,\n FExternalItemCreatePreviewRequest,\n IFExternalItemDragResult\n} from '../../f-external-item';\nimport {FDragHandlerResult, IFDragHandler, PointBoundsLimiter} from '../../f-draggable';\nimport {BrowserService} from '@foblex/platform';\nimport {FMediator} from '@foblex/mediator';\nimport {Injector} from '@angular/core';\nimport {FComponentsStore} from \"../../f-storage\";\nimport {GetNormalizedElementRectRequest} from \"../../domain\";\nimport {infinityMinMax} from \"../../utils\";\n\nexport class FExternalItemDragHandler implements IFDragHandler {\n\n public fEventType = 'external-item';\n public fData: any;\n\n private readonly _fResult: FDragHandlerResult<IFExternalItemDragResult>;\n private readonly _fMediator: FMediator;\n private readonly _fBrowser: BrowserService;\n private readonly _fComponentStore: FComponentsStore;\n\n private _preview: HTMLElement | SVGElement | undefined;\n private _placeholder: HTMLElement | SVGElement | undefined;\n private _onPointerDownRect: IRect = RectExtensions.initialize();\n private readonly _fBoundsLimiter: PointBoundsLimiter;\n\n private get _fItemHost(): HTMLElement | SVGElement {\n return this._fExternalItem.hostElement;\n }\n\n private get _body(): Element {\n return this._fBrowser.document.fullscreenElement ?? this._fBrowser.document.body;\n }\n\n private get _transform(): ITransformModel {\n return this._fComponentStore.fCanvas!.transform;\n }\n\n private readonly _fItemHostDisplay: string | undefined;\n\n constructor(\n _injector: Injector,\n private _fExternalItem: FExternalItemBase,\n ) {\n this.fData = {fData: _fExternalItem.fData};\n this._fResult = _injector.get(FDragHandlerResult);\n this._fMediator = _injector.get(FMediator);\n this._fBrowser = _injector.get(BrowserService);\n this._fComponentStore = _injector.get(FComponentsStore);\n\n this._fBoundsLimiter = new PointBoundsLimiter(\n _injector, this._getStartPoint(), infinityMinMax()\n );\n\n this._fItemHostDisplay = this._fItemHost.style.display;\n }\n\n private _getStartPoint(): IPoint {\n return this._fMediator.execute<IRect>(\n new GetNormalizedElementRectRequest(this._fExternalItem.hostElement)\n );\n }\n\n public prepareDragSequence(): void {\n this._onPointerDownRect = this._getExternalItemRect();\n\n this._createAndAppendPreview();\n this._createAndAppendPlaceholder();\n\n this._setFResultData();\n }\n\n private _createAndAppendPreview(): void {\n this._preview = this._fMediator.execute<HTMLElement>(\n new FExternalItemCreatePreviewRequest(this._fExternalItem)\n );\n if (this._fExternalItem.fPreviewMatchSize) {\n this._matchElementSize(this._preview, this._onPointerDownRect);\n }\n this._preview!.style.transform = setTransform(this._onPointerDownRect);\n this._body.appendChild(this._preview);\n }\n\n private _createAndAppendPlaceholder(): void {\n this._placeholder = this._fMediator.execute<HTMLElement>(\n new FExternalItemCreatePlaceholderRequest(this._fExternalItem)\n );\n this._body.appendChild(this._fItemHost.parentElement!.replaceChild(this._placeholder!, this._fItemHost));\n this._fItemHost.style.display = 'none';\n }\n\n private _matchElementSize(target: HTMLElement, sourceRect: IRect): void {\n target.style.width = `${sourceRect.width}px`;\n target.style.height = `${sourceRect.height}px`;\n }\n\n private _setFResultData(): void {\n this._fResult.setData({\n preview: this._preview,\n fExternalItem: this._fExternalItem,\n });\n }\n\n private _getExternalItemRect(): IRect {\n const rect = this._fExternalItem.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 onPointerMove(difference: IPoint): void {\n const adjustCellSize = this._fComponentStore.fDraggable?.fCellSizeWhileDragging ?? false;\n const differenceWithRestrictions = Point.fromPoint(this._fBoundsLimiter.limit(difference, adjustCellSize))\n .mult(this._transform.scale);\n\n const position = Point.fromPoint(this._onPointerDownRect).add(differenceWithRestrictions);\n this._preview!.style.transform = setTransform(position);\n }\n\n public onPointerUp(): void {\n this._body.removeChild(this._preview!);\n\n this._placeholder!.parentElement!.replaceChild(this._fItemHost, this._placeholder!);\n this._fItemHost.style.display = this._fItemHostDisplay ?? 'block';\n }\n}\n\nfunction setTransform({x, y}: IPoint): string {\n return `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;\n}\n\n","import {IPoint, IRect} from '@foblex/2d';\n\nexport class FCreateNodeEvent<TData = any> {\n\n constructor(\n public rect: IRect,\n public data: TData,\n public fTargetNode?: string,\n public fDropPosition?: IPoint,\n ) {\n }\n}\n","import {EventEmitter, inject, Injectable} from '@angular/core';\nimport {FExternalItemFinalizeRequest} from './f-external-item-finalize.request';\nimport {IPoint, IRect} from '@foblex/2d';\nimport {FExecutionRegister, FMediator, IExecution} from '@foblex/mediator';\nimport {FComponentsStore} from '../../../f-storage';\nimport {FExternalItemDragHandler} from '../f-external-item.drag-handler';\nimport {FCreateNodeEvent} from '../f-create-node.event';\nimport {GetNormalizedElementRectRequest} from '../../../domain';\nimport {\n FDraggableDataContext,\n FDragHandlerResult,\n FNodeDropToGroupDragHandler\n} from '../../../f-draggable';\nimport {BrowserService} from '@foblex/platform';\nimport {IFExternalItemDragResult} from '../i-f-external-item-drag-result';\n\n@Injectable()\n@FExecutionRegister(FExternalItemFinalizeRequest)\nexport class FExternalItemFinalizeExecution implements IExecution<FExternalItemFinalizeRequest, void> {\n\n private readonly _fResult: FDragHandlerResult<IFExternalItemDragResult> = inject(FDragHandlerResult);\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _fBrowser = inject(BrowserService);\n\n private get _fHost(): 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 _fDragHandler(): FExternalItemDragHandler {\n return this._fDraggableDataContext.draggableItems[0] as FExternalItemDragHandler;\n }\n\n public handle(request: FExternalItemFinalizeRequest): void {\n if (!this._isValid()) {\n return\n }\n\n const destinationNodeOrGroupId = this._getDestinationNodeOrGroupId();\n\n this._emitEvent(\n this._getElementsFromPoint(request.event.getPosition()),\n destinationNodeOrGroupId, request.event.getPosition()\n );\n\n this._fDragHandler.onPointerUp();\n this._fDraggableDataContext.draggableItems = [];\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FExternalItemDragHandler\n );\n }\n\n private _getDestinationNodeOrGroupId(): string | undefined {\n const dropToGroupHandler = this._getDropToGroupHandler();\n let result = dropToGroupHandler.fNodeWithRect?.node.fId;\n dropToGroupHandler.onPointerUp?.();\n return result;\n }\n\n private _getDropToGroupHandler(): FNodeDropToGroupDragHandler {\n const result = this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof FNodeDropToGroupDragHandler)\n if (!result) {\n throw new Error('NodeDragToParentDragHandler not found');\n }\n return result;\n }\n\n private _getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this._fBrowser.document.elementsFromPoint(position.x, position.y)\n .filter(x => !x.closest('.f-external-item')\n && !x.closest('.f-external-item-preview')) as HTMLElement[];\n }\n\n private _emitEvent(elements: HTMLElement[], destinationNodeOrGroupId: string | undefined, eventPosition: IPoint): void {\n if (this.isPointerInCanvasRect(elements)) {\n this._fCreateNode.emit(\n new FCreateNodeEvent(\n this._getPreviewRect(), this._fResult.getData().fExternalItem.fData,\n destinationNodeOrGroupId, destinationNodeOrGroupId ? eventPosition : undefined\n )\n );\n }\n }\n\n private isPointerInCanvasRect(elements: HTMLElement[]): boolean {\n return elements.length ? this._fHost.contains(elements[0]) : false;\n }\n\n private _getPreviewRect(): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(this._fResult.getData().preview));\n }\n}\n","import { FEventTrigger } from '../../../domain';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FExternalItemPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { FExternalItemPreparationRequest } from './f-external-item-preparation.request';\nimport {ITransformModel, Point} from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExternalItemBase, FExternalItemService, getExternalItem, isExternalItem } from '../../../f-external-item';\nimport { FExternalItemDragHandler } from '../f-external-item.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { isValidEventTrigger } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(FExternalItemPreparationRequest)\nexport class FExternalItemPreparationExecution implements IExecution<FExternalItemPreparationRequest, void> {\n\n private readonly _fExternalItemService = inject(FExternalItemService);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _injector = inject(Injector);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: FExternalItemPreparationRequest): void {\n if (!this._isValid(request) || !this._isValidTrigger(request)) {\n return;\n }\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost).div(this._transform.scale);\n this._fDraggableDataContext.draggableItems = [\n new FExternalItemDragHandler(\n this._injector,\n this._getExternalItem(request.event.targetElement)!,\n )\n ];\n }\n\n private _isValid(request: FExternalItemPreparationRequest): boolean {\n return this._isValidExternalItem(request.event.targetElement, this._getExternalItem(request.event.targetElement));\n }\n\n private _isValidExternalItem(element: HTMLElement, fExternalItem?: FExternalItemBase): boolean {\n return isExternalItem(element) && !!fExternalItem && !fExternalItem.fDisabled;\n }\n\n private _getExternalItem(targetElement: HTMLElement): FExternalItemBase<any> | undefined {\n return this._fExternalItemService.getItem(getExternalItem(targetElement));\n }\n\n private _isValidTrigger(request: FExternalItemPreparationRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n}\n","export class PreventDefaultIsExternalItemRequest {\n\n constructor(\n public event: Event\n ) {\n }\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 { PreventDefaultIsExternalItemRequest } from './prevent-default-is-external-item.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { isExternalItem } from '../../is-external-item';\n\n@Injectable()\n@FExecutionRegister(PreventDefaultIsExternalItemRequest)\nexport class PreventDefaultIsExternalItemExecution implements IExecution<PreventDefaultIsExternalItemRequest, void> {\n\n public handle(request: PreventDefaultIsExternalItemRequest): void {\n if (this._isTargetItemExternal(request.event)) {\n request.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","import { FExternalItemPreparationExecution } from './preparation';\nimport { FExternalItemFinalizeExecution } from './finalize';\nimport { PreventDefaultIsExternalItemExecution } from './prevent-default-is-external-item';\nimport { FExternalItemCreatePreviewExecution } from './create-preview';\nimport { FExternalItemCreatePlaceholderExecution } from './create-placeholder';\n\nexport const F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS = [\n\n FExternalItemCreatePlaceholderExecution,\n\n FExternalItemCreatePreviewExecution,\n\n FExternalItemFinalizeExecution,\n\n FExternalItemPreparationExecution,\n\n PreventDefaultIsExternalItemExecution,\n];\n","import { Directive, TemplateRef } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\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 public abstract fPreview: TemplateRef<any> | undefined;\n\n public abstract fPreviewMatchSize: boolean;\n\n public abstract fPlaceholder: TemplateRef<any> | undefined;\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 { InjectionToken } from '@angular/core';\nimport { FExternalItemBase } from './f-external-item-base';\n\nexport const F_EXTERNAL_ITEM = new InjectionToken<FExternalItemBase>('F_EXTERNAL_ITEM');\n","import {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef\n} from '@angular/core';\nimport { FExternalItemBase } from './f-external-item-base';\nimport { FExternalItemService } from './f-external-item.service';\nimport { F_EXTERNAL_ITEM } from './f-external-item-token';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fExternalItem]\",\n standalone: true,\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 private readonly _elementReference = inject(ElementRef);\n private readonly _fExternalItemService = inject(FExternalItemService);\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({ transform: booleanAttribute })\n public override fDisabled: boolean = false;\n\n @Input()\n public override fPreview: TemplateRef<any> | undefined;\n\n @Input({ transform: booleanAttribute })\n public override fPreviewMatchSize: boolean = true;\n\n @Input()\n public override fPlaceholder: TemplateRef<any> | undefined;\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 {\n Directive,\n inject,\n OnDestroy,\n OnInit, TemplateRef,\n} from '@angular/core';\nimport { F_EXTERNAL_ITEM } from './f-external-item-token';\n\n@Directive({\n selector: \"ng-template[fExternalItemPlaceholder]\",\n standalone: true,\n host: {\n class: \"f-component f-external-item-placeholder\",\n }\n})\nexport class FExternalItemPlaceholderDirective<T = any> implements OnInit, OnDestroy {\n\n private readonly _fExternalItem = inject(F_EXTERNAL_ITEM);\n private readonly _templateRef = inject<TemplateRef<T>>(TemplateRef);\n\n public ngOnInit(): void {\n this._fExternalItem.fPlaceholder = this._templateRef;\n }\n\n public ngOnDestroy(): void {\n this._fExternalItem.fPlaceholder = undefined;\n }\n}\n","import {\n Directive,\n inject,\n OnDestroy,\n OnInit, TemplateRef,\n} from '@angular/core';\nimport { F_EXTERNAL_ITEM } from './f-external-item-token';\n\n@Directive({\n selector: \"ng-template[fExternalItemPreview]\",\n standalone: true,\n host: {\n class: \"f-component f-external-item-preview\",\n },\n})\nexport class FExternalItemPreviewDirective<T = any> implements OnInit, OnDestroy {\n\n private readonly _fExternalItem = inject(F_EXTERNAL_ITEM);\n private readonly _templateRef = inject<TemplateRef<T>>(TemplateRef);\n\n public ngOnInit(): void {\n this._fExternalItem.fPreview = this._templateRef;\n }\n\n public ngOnDestroy(): void {\n this._fExternalItem.fPreview = undefined;\n }\n}\n","import { FExternalItemDirective } from './f-external-item.directive';\n\nexport const F_EXTERNAL_ITEM_PROVIDERS = [\n FExternalItemDirective\n];\n","import {inject, Injectable, Injector} from '@angular/core';\nimport {FNodeDropToGroupPreparationRequest} from './f-node-drop-to-group-preparation.request';\nimport {FExecutionRegister, FMediator, IExecution} from '@foblex/mediator';\nimport {FComponentsStore} from '../../../f-storage';\nimport {INodeWithRect} from '../../domain';\nimport {IPoint, IRect, ITransformModel, PointExtensions, RectExtensions} from '@foblex/2d';\nimport {GetNormalizedElementRectRequest, GetParentNodesRequest} from '../../../domain';\nimport {FNodeBase} from '../../../f-node';\nimport {FDraggableDataContext} from '../../f-draggable-data-context';\nimport {FNodeDropToGroupDragHandler} from '../f-node-drop-to-group.drag-handler';\nimport {FSummaryNodeMoveDragHandler} from '../../f-node-move';\nimport {FExternalItemDragHandler} from \"../../../f-external-item\";\n\n@Injectable()\n@FExecutionRegister(FNodeDropToGroupPreparationRequest)\nexport class FNodeDropToGroupPreparationExecution\n implements IExecution<FNodeDropToGroupPreparationRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _injector = inject(Injector);\n\n private get _fNodes(): FNodeBase[] {\n return this._fComponentsStore.fNodes;\n }\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fCanvasPosition(): IPoint {\n return PointExtensions.sum(this._transform.position, this._transform.scaledPosition)\n }\n\n public handle(request: FNodeDropToGroupPreparationRequest): void {\n if (!this._isValid()) {\n return;\n }\n const fNode = this._fComponentsStore\n .fNodes.find(n => n.isContains(request.event.targetElement));\n if (!fNode && !this._isExternalItemDragHandler()) {\n throw new Error('Node not found');\n }\n\n this._fDraggableDataContext.draggableItems.push(\n new FNodeDropToGroupDragHandler(\n this._injector,\n this._getNotDraggedNodesRects()\n )\n );\n }\n\n private _isValid(): boolean {\n return this._isNodeDragHandler() || this._isExternalItemDragHandler();\n }\n\n private _isNodeDragHandler(): boolean {\n return this._fDraggableDataContext.draggableItems\n .some((x) => x instanceof FSummaryNodeMoveDragHandler);\n }\n\n private _isExternalItemDragHandler(): boolean {\n return this._fDraggableDataContext.draggableItems\n .some((x) => x instanceof FExternalItemDragHandler);\n }\n\n private _getNotDraggedNodesRects(): INodeWithRect[] {\n const draggedNodes = this._addParentNodes(this._getNodesBeingDragged());\n return this._getNotDraggedNodes(draggedNodes).map((x) => {\n const rect = this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.hostElement));\n return {\n node: x,\n rect: RectExtensions.initialize(\n rect.x * this._transform.scale + this._fCanvasPosition.x,\n rect.y * this._transform.scale + this._fCanvasPosition.y,\n rect.width * this._transform.scale,\n rect.height * this._transform.scale\n )\n }\n });\n }\n\n private _getNodesBeingDragged(): FNodeBase[] {\n return this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof FSummaryNodeMoveDragHandler)\n ?.fHandlers.map((x) => x.fNode) || [];\n }\n\n private _addParentNodes(fNodes: FNodeBase[]): FNodeBase[] {\n return fNodes.reduce((result: FNodeBase[], x: FNodeBase) => {\n result.push(x, ...this._fMediator.execute<FNodeBase[]>(new GetParentNodesRequest(x)));\n return result;\n }, []);\n }\n\n private _getNotDraggedNodes(draggedNodes: FNodeBase[]): FNodeBase[] {\n return this._fNodes.filter((x) => !draggedNodes.includes(x));\n }\n}\n","import { FNodeDropToGroupPreparationExecution } from './drop-to-group-preparation';\nimport { FNodeDropToGroupFinalizeExecution } from './drop-to-group-finalize';\n\nexport const NODE_DROP_TO_GROUP_PROVIDERS = [\n\n FNodeDropToGroupPreparationExecution,\n\n FNodeDropToGroupFinalizeExecution\n];\n","import { IRect } from '@foblex/2d';\nimport { INodeResizeRestrictions } from '../get-node-resize-restrictions';\n\nexport class ApplyChildResizeRestrictionsRequest {\n\n constructor(\n public rect: IRect,\n public restrictions: INodeResizeRestrictions\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 CHILD_RESIZE_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._apply(request.rect, request.restrictions.childrenBounds!);\n }\n\n private _apply(rect: IRect, restrictionsRect: IRect): void {\n this._restrictLeft(rect, restrictionsRect);\n this._restrictTop(rect, restrictionsRect);\n this._restrictRight(rect, restrictionsRect);\n this._restrictBottom(rect, restrictionsRect);\n }\n\n private _restrictLeft(rect: IRect, restrictions: IRect): void {\n const delta = rect.x - (restrictions.x - CHILD_RESIZE_OFFSET);\n if (delta > 0) {\n rect.x -= delta;\n rect.width += delta;\n }\n }\n\n private _restrictTop(rect: IRect, restrictions: IRect): void {\n const delta = rect.y - (restrictions.y - CHILD_RESIZE_OFFSET);\n if (delta > 0) {\n rect.y -= delta;\n rect.height += delta;\n }\n }\n\n private _restrictRight(rect: IRect, restrictions: IRect): void {\n const maxRight = restrictions.x + restrictions.width + CHILD_RESIZE_OFFSET;\n if (rect.x + rect.width <= maxRight) {\n rect.width = maxRight - rect.x;\n }\n }\n\n private _restrictBottom(rect: IRect, restrictions: IRect): void {\n const maxBottom = restrictions.y + restrictions.height + CHILD_RESIZE_OFFSET;\n if (rect.y + rect.height <= maxBottom) {\n rect.height = maxBottom - rect.y;\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 ]: { x: -1, y: 0 },\n\n [ EFResizeHandleType.LEFT_TOP ]: { x: -1, y: -1 },\n\n [ EFResizeHandleType.TOP ]: { x: 0, y: -1 },\n\n [ EFResizeHandleType.RIGHT_TOP ]: { x: 1, y: -1 },\n\n [ EFResizeHandleType.RIGHT ]: { x: 1, y: 0 },\n\n [ EFResizeHandleType.RIGHT_BOTTOM ]: { x: 1, y: 1 },\n\n [ EFResizeHandleType.BOTTOM ]: { x: 0, 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, ISize, 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(\n request.originalRect, request.difference,\n RESIZE_DIRECTIONS[ request.fResizeHandleType ], request.changedRect,\n );\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, ISize } from '@foblex/2d';\nimport { EFResizeHandleType } from '../../../f-node';\n\nexport class CalculateChangedSizeRequest {\n\n constructor(\n public originalRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedSizeRequest)\nexport class CalculateChangedSizeExecution\n implements IExecution<CalculateChangedSizeRequest, IRect> {\n\n public handle(request: CalculateChangedSizeRequest): IRect {\n return this.change(\n request.originalRect,\n request.difference,\n RESIZE_DIRECTIONS[ request.fResizeHandleType ],\n );\n }\n\n private change(\n rect: IRect, difference: IPoint, direction: IPoint\n ): 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';\n\nexport class GetNormalizedChildrenNodesRectRequest {\n\n constructor(\n public fNode: FNodeBase,\n public paddings: [ number, number, number, number ]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedChildrenNodesRectRequest } from './get-normalized-children-nodes-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest, GetNormalizedElementRectRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedChildrenNodesRectRequest)\nexport class GetNormalizedChildrenNodesRectExecution\n implements IExecution<GetNormalizedChildrenNodesRectRequest, IRect | null> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNormalizedChildrenNodesRectRequest): IRect | null {\n const childNodeRect = RectExtensions.union(\n this.getChildrenNodes(request.fNode.fId).map((x) => this.normalizeRect(x))\n );\n return childNodeRect ?\n this.concatRectWithParentPadding(childNodeRect, request.paddings) : null;\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.execute<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private normalizeRect(fNode: FNodeBase): IRect {\n return this.fMediator.execute<IRect>(new GetNormalizedElementRectRequest(fNode.hostElement));\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 { inject, Injectable } from '@angular/core';\nimport { GetNodeResizeRestrictionsRequest } from './get-node-resize-restrictions.request';\nimport { IRect, SizeExtensions } from '@foblex/2d';\nimport { INodeResizeRestrictions } from './i-node-resize-restrictions';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNormalizedParentNodeRectRequest } from '../../domain';\nimport { GetNormalizedChildrenNodesRectRequest } from '../get-normalized-children-nodes-rect';\nimport { FNodeBase } from '../../../f-node';\nimport { GetNodePaddingRequest } from '../../../domain';\n\n\n@Injectable()\n@FExecutionRegister(GetNodeResizeRestrictionsRequest)\nexport class GetNodeResizeRestrictionsExecution\n implements IExecution<GetNodeResizeRestrictionsRequest, INodeResizeRestrictions> {\n\n private _fMediator = inject(FMediator);\n\n public handle(request: GetNodeResizeRestrictionsRequest): INodeResizeRestrictions {\n const paddings = this._calculateNodePaddings(request.fNode, request.rect);\n\n return {\n parentBounds: this._getNormalizedParentBounds(request.fNode),\n childrenBounds: this._getNormalizedChildrenBounds(request.fNode, paddings),\n minimumSize: SizeExtensions.initialize(paddings[0] + paddings[2], paddings[1] + paddings[3])\n }\n }\n\n private _calculateNodePaddings(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this._fMediator.execute<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n\n private _getNormalizedParentBounds(fNode: FNodeBase): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedParentNodeRectRequest(fNode));\n }\n\n private _getNormalizedChildrenBounds(fNode: FNodeBase, fNodePaddings: [ number, number, number, number ]): IRect | null {\n return this._fMediator.execute<IRect | null>(new GetNormalizedChildrenNodesRectRequest(fNode, fNodePaddings));\n }\n}\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeResizeFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPoint, IRect, ISize, RectExtensions } from '@foblex/2d';\nimport { IFDragHandler } from '../f-drag-handler';\nimport { EFResizeHandleType, FNodeBase } from '../../f-node';\nimport { FMediator } from '@foblex/mediator';\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';\nimport { GetNormalizedElementRectRequest } from '../../domain';\nimport { Injector } from '@angular/core';\n\nexport class FNodeResizeDragHandler implements IFDragHandler {\n\n public readonly fEventType = 'node-resize';\n public readonly fData: any;\n\n private readonly _fMediator: FMediator;\n\n private _originalRect!: IRect;\n private _resizeRestrictions!: INodeResizeRestrictions;\n\n constructor(\n _injector: Injector,\n private _fNode: FNodeBase,\n private _fResizeHandleType: EFResizeHandleType,\n ) {\n this.fData = {\n fNodeId: _fNode.fId,\n };\n this._fMediator = _injector.get(FMediator);\n }\n\n public prepareDragSequence(): void {\n this._originalRect = this._getOriginalNodeRect();\n this._resizeRestrictions = this._getNodeResizeRestrictions();\n }\n\n private _getOriginalNodeRect(): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(this._fNode.hostElement));\n }\n\n private _getNodeResizeRestrictions(): INodeResizeRestrictions {\n return this._fMediator.execute<INodeResizeRestrictions>(\n new GetNodeResizeRestrictionsRequest(this._fNode, this._originalRect)\n );\n }\n\n public onPointerMove(difference: IPoint): void {\n this._applyResizeChanges(this._calculateChangedRect(difference));\n }\n\n private _calculateChangedRect(difference: IPoint): IRect {\n const changedSize = this._calculateSize(difference);\n return this._calculatePosition(difference, changedSize);\n }\n\n private _calculateSize(difference: IPoint): IRect {\n return this._fMediator.execute<IRect>(\n new CalculateChangedSizeRequest(this._originalRect, difference, this._fResizeHandleType)\n );\n }\n\n private _calculatePosition(difference: IPoint, changedSize: IRect): IRect {\n return this._fMediator.execute<IRect>(\n new CalculateChangedPositionRequest(this._originalRect, changedSize, difference, this._fResizeHandleType)\n );\n }\n\n private _applyResizeChanges(changedRect: IRect): void {\n if (this._resizeRestrictions.childrenBounds) {\n this._applyChildRestrictions(changedRect);\n }\n\n this._applyParentRestrictions(changedRect, this._resizeRestrictions.parentBounds);\n this._updateNodeRendering(changedRect);\n }\n\n private _updateNodeRendering(changedRect: IRect): void {\n this._fNode.updatePosition(changedRect);\n this._fNode.updateSize(changedRect);\n this._fNode.redraw();\n }\n\n private _applyChildRestrictions(changedRect: IRect): void {\n this._fMediator.execute(\n new ApplyChildResizeRestrictionsRequest(changedRect, this._resizeRestrictions)\n );\n }\n\n private _applyParentRestrictions(changedRect: IRect, restrictions: IRect): void {\n this._fMediator.execute(\n new ApplyParentResizeRestrictionsRequest(changedRect, restrictions)\n );\n }\n\n public onPointerUp(): void {\n this._fNode.sizeChange.emit(this._getNewRect());\n }\n\n private _getNewRect(): IRect {\n return RectExtensions.initialize(\n this._fNode.position.x, this._fNode.position.y, this._fNode.size?.width, this._fNode.size?.height\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FNodeResizeFinalizeRequest } from './f-node-resize-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeResizeDragHandler } from '../f-node-resize.drag-handler';\n\n@Injectable()\n@FExecutionRegister(FNodeResizeFinalizeRequest)\nexport class FNodeResizeFinalizeExecution implements IExecution<FNodeResizeFinalizeRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: FNodeResizeFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n this._fDraggableDataContext.draggableItems.forEach((x) => {\n x.onPointerUp?.();\n });\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some((x) =>\n x instanceof FNodeResizeDragHandler\n );\n }\n}\n","import { FEventTrigger } from '../../../domain';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeResizePreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { FNodeResizePreparationRequest } from './f-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 isValidEventTrigger,\n SelectAndUpdateNodeLayerRequest,\n} from '../../../domain';\nimport { EFResizeHandleType, FNodeBase } from '../../../f-node';\nimport { FNodeResizeDragHandler } from '../f-node-resize.drag-handler';\nimport { getDataAttrValueFromClosestElementWithClass, isClosestElementHasClass } from '@foblex/utils';\n\n@Injectable()\n@FExecutionRegister(FNodeResizePreparationRequest)\nexport class FNodeResizePreparationExecution implements IExecution<FNodeResizePreparationRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _injector = inject(Injector);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private _fNode: FNodeBase | undefined;\n\n public handle(request: FNodeResizePreparationRequest): void {\n if(!this._isValid(request) || !this._isValidTrigger(request)) {\n return;\n }\n\n this._selectAndUpdateNodeLayer();\n\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost).div(this._transform.scale);\n\n const resizeHandleType = EFResizeHandleType[ this._getHandleType(request.event.targetElement) ];\n this._fDraggableDataContext.draggableItems = [\n new FNodeResizeDragHandler(\n this._injector,\n this._fNode!, resizeHandleType\n )\n ];\n }\n\n private _isValid(request: FNodeResizePreparationRequest): boolean {\n return this._fDraggableDataContext.isEmpty()\n && this._isDragHandleElement(request.event.targetElement)\n && this._isNodeCanBeDragged(this._getNode(request.event.targetElement));\n }\n\n private _isDragHandleElement(element: HTMLElement): boolean {\n return isClosestElementHasClass(element, '.f-resize-handle');\n }\n\n private _isNodeCanBeDragged(fNode?: FNodeBase): boolean {\n return !!fNode && !fNode.fDraggingDisabled;\n }\n\n private _getNode(element: HTMLElement): FNodeBase | undefined {\n this._fNode = this._fComponentsStore\n .fNodes.find(x => x.isContains(element));\n return this._fNode;\n }\n\n private _isValidTrigger(request: FNodeResizePreparationRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n\n private _selectAndUpdateNodeLayer() {\n this._fMediator.execute(\n new SelectAndUpdateNodeLayerRequest(this._fNode!)\n );\n }\n\n private _getHandleType(element: HTMLElement): keyof typeof EFResizeHandleType {\n return getDataAttrValueFromClosestElementWithClass(element, 'fResizeHandleType', '.f-resize-handle');\n }\n}\n","import { FNodeResizeFinalizeExecution } from './resize-finalize';\nimport { FNodeResizePreparationExecution } from './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 FNodeResizeFinalizeExecution,\n\n FNodeResizePreparationExecution,\n];\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeRotateFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export function calculateDifferenceAfterRotation(\n position: { x: number; y: number },\n rotation: number,\n pivot: { x: number; y: number }\n): { x: number; y: number } {\n\n const { x: newX, y: newY } = calculatePositionAfterRotation(position, rotation, pivot);\n\n const dx = newX - position.x;\n const dy = newY - position.y;\n\n return { x: dx, y: dy };\n}\n\nexport function calculatePositionAfterRotation(\n position: { x: number; y: number },\n rotation: number,\n pivot: { x: number; y: number }\n): { x: number; y: number } {\n const translatedX = position.x - pivot.x;\n const translatedY = position.y - pivot.y;\n\n const theta = rotation * Math.PI / 180;\n\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n\n const rotatedX = translatedX * cosTheta - translatedY * sinTheta;\n const rotatedY = translatedX * sinTheta + translatedY * cosTheta;\n\n const newX = rotatedX + pivot.x;\n const newY = rotatedY + pivot.y;\n\n return { x: newX, y: newY };\n}\n\n","import { IPoint, IRect, ITransformModel, PointExtensions } from '@foblex/2d';\nimport { IFDragHandler } from '../f-drag-handler';\nimport { FNodeBase } from '../../f-node';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { FComponentsStore } from '../../f-storage';\nimport { BaseConnectionDragHandler } from '../f-node-move';\nimport {\n calculateDifferenceAfterRotation,\n} from './calculate-difference-after-rotation';\nimport { GetNormalizedElementRectRequest } from '../../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { Injector } from '@angular/core';\n\nexport class FNodeRotateDragHandler implements IFDragHandler {\n\n private readonly _fComponentsStore: FComponentsStore;\n private readonly _fMediator: FMediator;\n private readonly _fDraggableDataContext: FDraggableDataContext;\n\n public fEventType = 'node-rotate';\n public fData: any;\n\n private _initialRotationToX: number = 0;\n private readonly _startRotation: number = 0;\n\n private _onDownPoint!: IPoint;\n private _fNodeRect!: IRect;\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n _injector: Injector,\n private _fNode: FNodeBase,\n private _fSourceHandlers: {\n connection: BaseConnectionDragHandler,\n connector: IPoint,\n }[],\n private _fTargetHandlers: {\n connection: BaseConnectionDragHandler,\n connector: IPoint,\n }[],\n ) {\n this._startRotation = this._fNode.rotate;\n this.fData = {\n fNodeId: _fNode.fId,\n };\n\n this._fComponentsStore = _injector.get(FComponentsStore);\n this._fMediator = _injector.get(FMediator);\n this._fDraggableDataContext = _injector.get(FDraggableDataContext);\n }\n\n public prepareDragSequence(): void {\n this._fNodeRect = this._getOriginalNodeRect();\n this._onDownPoint = this._calculateDownPoint();\n this._initialRotationToX = this._calculateAngleBetweenVectors(this._onDownPoint) - this._startRotation;\n }\n\n private _getOriginalNodeRect(): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(this._fNode!.hostElement));\n }\n\n private _calculateDownPoint(): IPoint {\n return PointExtensions.sub(\n this._fDraggableDataContext.onPointerDownPosition,\n PointExtensions.sum(this._transform.position, this._transform.scaledPosition)\n );\n }\n\n private _calculateAngleBetweenVectors(position: IPoint): number {\n return Math.atan2(\n position.y - this._fNodeRect.gravityCenter.y,\n position.x - this._fNodeRect.gravityCenter.x\n ) * (180 / Math.PI);\n }\n\n public onPointerMove(difference: IPoint): void {\n const position = PointExtensions.sum(this._onDownPoint, difference);\n const rotation = this._calculateAngleBetweenVectors(position) - this._initialRotationToX;\n this._updateNodeRendering(rotation);\n\n this._fSourceHandlers.forEach((x) => {\n x.connection.setSourceDifference(\n this._calculateDifferenceAfterRotation(x.connector, rotation)\n )\n });\n this._fTargetHandlers.forEach((x) => {\n x.connection.setTargetDifference(\n this._calculateDifferenceAfterRotation(x.connector, rotation)\n );\n });\n }\n\n private _updateNodeRendering(rotation: number): void {\n this._fNode.updateRotate(rotation);\n this._fNode.redraw();\n }\n\n private _calculateDifferenceAfterRotation(position: IPoint, rotation: number): IPoint {\n return calculateDifferenceAfterRotation(\n position,\n rotation - this._startRotation,\n this._fNodeRect.gravityCenter\n )\n }\n\n public onPointerUp(): void {\n this._fNode.rotateChange.emit(this._fNode.rotate);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FNodeRotateFinalizeRequest } from './f-node-rotate-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeRotateDragHandler } from '../f-node-rotate.drag-handler';\n\n@Injectable()\n@FExecutionRegister(FNodeRotateFinalizeRequest)\nexport class FNodeRotateFinalizeExecution implements IExecution<FNodeRotateFinalizeRequest, void> {\n\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: FNodeRotateFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n this._fDraggableDataContext.draggableItems.forEach((x) => {\n x.onPointerUp?.();\n });\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some((x) =>\n x instanceof FNodeRotateDragHandler\n );\n }\n}\n","import { FEventTrigger } from '../../../domain';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeRotatePreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { FNodeRotatePreparationRequest } from './f-node-rotate-preparation.request';\nimport { IPoint, IRect, ITransformModel, Point, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n CalculateInputConnectionsRequest, CalculateOutputConnectionsRequest, GetNormalizedElementRectRequest,\n isValidEventTrigger,\n SelectAndUpdateNodeLayerRequest,\n} from '../../../domain';\nimport { FNodeBase, isRotateHandle } from '../../../f-node';\nimport { FNodeRotateDragHandler } from '../f-node-rotate.drag-handler';\nimport { BaseConnectionDragHandler, SourceConnectionDragHandler, TargetConnectionDragHandler } from '../../f-node-move';\nimport { FConnectionBase } from '../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(FNodeRotatePreparationRequest)\nexport class FNodeRotatePreparationExecution implements IExecution<FNodeRotatePreparationRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _injector = inject(Injector);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private _fNode: FNodeBase | undefined;\n\n public handle(request: FNodeRotatePreparationRequest): void {\n if (!this._isValid(request) || !this._isValidTrigger(request)) {\n return;\n }\n\n this._selectAndUpdateNodeLayer();\n\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost).div(this._transform.scale);\n\n this._fDraggableDataContext.draggableItems = [\n new FNodeRotateDragHandler(\n this._injector,\n this._fNode!,\n this._calculateOutputConnectionsDragHandlers(),\n this._calculateInputConnectionsDragHandlers(),\n )\n ];\n }\n\n private _isValid(request: FNodeRotatePreparationRequest): boolean {\n return this._fDraggableDataContext.isEmpty()\n && isRotateHandle(request.event.targetElement)\n && this._isNodeCanBeDragged(this._getNode(request.event.targetElement));\n }\n\n private _isNodeCanBeDragged(fNode?: FNodeBase): boolean {\n return !!fNode && !fNode.fDraggingDisabled;\n }\n\n private _getNode(element: HTMLElement): FNodeBase | undefined {\n this._fNode = this._fComponentsStore\n .fNodes.find(x => x.isContains(element));\n return this._fNode;\n }\n\n private _isValidTrigger(request: FNodeRotatePreparationRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n\n private _selectAndUpdateNodeLayer() {\n this._fMediator.execute(\n new SelectAndUpdateNodeLayerRequest(this._fNode!)\n );\n }\n\n private _calculateInputConnectionsDragHandlers(): {\n connection: BaseConnectionDragHandler,\n connector: IPoint,\n }[] {\n return this._fMediator.execute<FConnectionBase[]>(\n new CalculateInputConnectionsRequest(this._fNode!)\n ).map((x: FConnectionBase) => {\n const connector = this._fComponentsStore.fInputs.find((y) => y.fId === x.fInputId)!.hostElement;\n return {\n connection: new TargetConnectionDragHandler(this._injector, x),\n connector: this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(connector)).gravityCenter\n }\n });\n }\n\n private _calculateOutputConnectionsDragHandlers(): {\n connection: BaseConnectionDragHandler,\n connector: IPoint,\n }[] {\n return this._fMediator.execute<FConnectionBase[]>(\n new CalculateOutputConnectionsRequest(this._fNode!)\n ).map((x: FConnectionBase) => {\n const connector = this._fComponentsStore.fOutputs.find((y) => y.fId === x.fOutputId)!.hostElement;\n return {\n connection: new SourceConnectionDragHandler(this._injector, x),\n connector: this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(connector)).gravityCenter\n }\n });\n }\n}\n","import { FNodeRotateFinalizeExecution } from './rotate-finalize';\nimport { FNodeRotatePreparationExecution } from './rotate-preparation';\n\nexport const NODE_ROTATE_PROVIDERS = [\n\n FNodeRotateFinalizeExecution,\n\n FNodeRotatePreparationExecution,\n];\n","import { FEventTrigger } from '../../domain';\nimport {IPointerEvent} from \"../../drag-toolkit\";\n\nexport class FSingleSelectRequest {\n\n constructor(\n public event: IPointerEvent,\n public fMultiSelectTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FSingleSelectRequest } from './f-single-select.request';\nimport { isValidEventTrigger, UpdateItemAndChildrenLayersRequest } from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { ISelectable } from '../../mixins';\nimport { FNodeBase } from '../../f-node';\nimport {IPointerEvent} from \"../../drag-toolkit\";\n\n/**\n * Implements the functionality for selecting elements in a graphical interface.\n * This class handles both single and multi-selection, updating the selection state\n * of elements and managing related data.\n *\n * Logic flow:\n * 1. **Validate the selection event**:\n * - The event is considered valid if it occurs within the flow boundaries\n * and there are no active draggable data operations.\n *\n * 2. **Determine the target element to select**:\n * - The target element is determined based on the event’s target.\n * It can be a node, a group of nodes, or a connection.\n * - If no element is found, the current selection state is cleared.\n *\n * 3. **Update element layers**:\n * - If an element is found, its visual layer and the layers of its child elements are updated.\n *\n * 4. **Single or multi-selection**:\n * - If the event meets the criteria for multi-selection (e.g., a modifier key is pressed),\n * multi-selection logic is applied.\n * - Otherwise, single-selection logic is used.\n *\n * 5. **Single-selection logic**:\n * - If the element is not selected and can be selected:\n * - Clear the selection of all other elements.\n * - Mark the current element as selected.\n * - If the element cannot be selected, the current selection is cleared.\n *\n * 6. **Multi-selection logic**:\n * - If the element is already selected, it is removed from the selection.\n * - If the element is not selected and can be selected, it is added to the selection.\n *\n * 7. **Manage selection state**:\n * - Adding or removing an element from the selection triggers the corresponding methods.\n * - Selection state is tracked in the shared context for future use.\n */\n\n@Injectable()\n@FExecutionRegister(FSingleSelectRequest)\nexport class FSingleSelectExecution implements IExecution<FSingleSelectRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: FSingleSelectRequest): void {\n if (!this._isValid(request)) {\n return;\n }\n\n const fItem = this._getItemToSelect(request.event);\n\n setTimeout(() => this._updateItemAndChildrenLayers(fItem));\n\n this._isMultiSelect(request) ? this._multiSelect(fItem) : this._singleSelect(fItem);\n }\n\n private _isValid(request: FSingleSelectRequest): boolean {\n return this._isEventInFlowBounds(request.event) && this._fDraggableDataContext.isEmpty();\n }\n\n private _isEventInFlowBounds(event: IPointerEvent): boolean {\n return this._fComponentsStore.fFlow!.hostElement.contains(event.targetElement);\n }\n\n private _getItemToSelect(event: IPointerEvent): ISelectable | undefined {\n return this._getNodeOrGroup(event.targetElement) || this._getConnection(event.targetElement);\n }\n\n private _getNodeOrGroup(targetElement: HTMLElement): FNodeBase | undefined {\n return this._fComponentsStore.fNodes.find((x) => (x).isContains(targetElement));\n }\n\n private _getConnection(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this._fComponentsStore.fConnections\n .find(c => c.isContains(element) || c.fConnectionCenter?.nativeElement?.contains(element));\n }\n\n private _updateItemAndChildrenLayers(fItem?: ISelectable): void {\n if (fItem) {\n this._fMediator.execute<void>(\n new UpdateItemAndChildrenLayersRequest(fItem, fItem.hostElement.parentElement!)\n );\n }\n }\n\n private _isMultiSelect(request: FSingleSelectRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fMultiSelectTrigger);\n }\n\n private _singleSelect(fItem?: ISelectable): void {\n if (fItem) {\n if (this._isItemNotSelectedAndSelectable(fItem)) {\n this._clearSelection();\n this._selectItem(fItem);\n } else if (fItem.fSelectionDisabled) {\n this._clearSelection();\n }\n } else {\n this._clearSelection();\n }\n }\n\n private _isItemNotSelectedAndSelectable(item: ISelectable): boolean {\n return !item.isSelected() && !item.fSelectionDisabled;\n }\n\n private _clearSelection(): void {\n this._fDraggableDataContext.selectedItems.forEach((x) => {\n x.unmarkAsSelected();\n this._fDraggableDataContext.markSelectionAsChanged();\n });\n this._fDraggableDataContext.selectedItems = [];\n }\n\n private _multiSelect(fItem?: ISelectable): void {\n if (fItem && !fItem.fSelectionDisabled) {\n fItem.isSelected() ? this._deselectItem(fItem) : this._selectItem(fItem);\n }\n }\n\n private _deselectItem(fItem: ISelectable): void {\n this._removeItemFromSelectedItems(fItem);\n fItem.unmarkAsSelected();\n this._fDraggableDataContext.markSelectionAsChanged();\n }\n\n private _removeItemFromSelectedItems(fItem: ISelectable): void {\n const indexInSelection = this._fDraggableDataContext.selectedItems.indexOf(fItem);\n if (indexInSelection > -1) {\n this._fDraggableDataContext.selectedItems.splice(indexInSelection, 1);\n }\n }\n\n private _selectItem(fItem: ISelectable): void {\n this._fDraggableDataContext.selectedItems.push(fItem);\n fItem.markAsSelected();\n this._fDraggableDataContext.markSelectionAsChanged();\n }\n}\n","import { FSingleSelectExecution } from './f-single-select.execution';\n\nexport const SINGLE_SELECT_PROVIDERS = [\n\n FSingleSelectExecution,\n];\n","export abstract class IPointerEvent {\n\n public get originalEvent(): (MouseEvent | TouchEvent) {\n return this.event;\n }\n\n public get targetElement(): HTMLElement {\n return this.target || this.originalEvent.target as HTMLElement;\n }\n\n protected constructor(private readonly event: (MouseEvent | TouchEvent), private target?: HTMLElement) {\n this.event = event;\n }\n\n public setTarget(target: HTMLElement): void {\n this.target = target;\n }\n\n public abstract isMouseLeftButton(): boolean;\n\n public abstract isMouseRightButton(): boolean;\n\n public preventDefault(): void {\n this.originalEvent.preventDefault();\n }\n\n public abstract getPosition(): { x: number, y: number };\n\n public get isEventInLockedContext(): boolean {\n return this.targetElement.closest('[fLockedContext]') !== null;\n }\n}\n","import { IPointerEvent } from './i-pointer-event';\n\nexport class IMouseEvent extends IPointerEvent {\n\n constructor(event: MouseEvent, target?: HTMLElement) {\n super(event, target);\n }\n\n public isMouseLeftButton(): boolean {\n return (this.originalEvent as MouseEvent).button === 0;\n }\n\n public isMouseRightButton(): boolean {\n return (this.originalEvent as MouseEvent).buttons === 2;\n }\n\n public getPosition(): { x: number, y: number } {\n return { x: (this.originalEvent as MouseEvent).clientX, y: (this.originalEvent as MouseEvent).clientY };\n }\n}\n","import {IPointerEvent} from \"./i-pointer-event\";\n\nexport class IPointerUpEvent extends IPointerEvent {\n\n constructor(event: PointerEvent, target?: HTMLElement) {\n super(event, target);\n }\n\n public isMouseLeftButton(): boolean {\n const evt = this.originalEvent as PointerEvent;\n return evt.pointerType === 'mouse' && evt.button === 0 || evt.pointerType === 'touch';\n }\n\n public isMouseRightButton(): boolean {\n const evt = this.originalEvent as PointerEvent;\n return evt.pointerType === 'mouse' && evt.button === 2 || evt.pointerType === 'touch';\n }\n\n public getPosition(): { x: number, y: number } {\n const evt = this.originalEvent as PointerEvent;\n return { x: evt.clientX, y: evt.clientY };\n }\n\n public getPointerType(): string {\n return (this.originalEvent as PointerEvent).pointerType;\n }\n\n public getPointerId(): number {\n return (this.originalEvent as PointerEvent).pointerId;\n }\n}\n","import { IPointerEvent } from './i-pointer-event';\n\nexport class ITouchDownEvent extends IPointerEvent {\n\n constructor(event: TouchEvent) {\n super(event);\n }\n\n public isMouseLeftButton(): boolean {\n return true;\n }\n\n public isMouseRightButton(): boolean {\n return false;\n }\n\n public getPosition(): { x: number, y: number } {\n const touches = (this.originalEvent as TouchEvent).touches;\n return { x: touches[ 0 ].clientX, y: touches[ 0 ].clientY };\n }\n}\n","import { IPointerEvent } from './i-pointer-event';\n\nexport class ITouchMoveEvent extends IPointerEvent {\n\n constructor(event: TouchEvent, target?: HTMLElement) {\n super(event, target);\n }\n\n public isMouseLeftButton(): boolean {\n return true;\n }\n\n public isMouseRightButton(): boolean {\n return false;\n }\n\n public getPosition(): { x: number, y: number } {\n const touch = (this.originalEvent as TouchEvent).targetTouches[0];\n return { x: touch.clientX, y: touch.clientY };\n }\n}\n","export class EventExtensions {\n\n private static isSupported: boolean;\n\n private static isPassiveEventListenerSupported(): boolean {\n\n if (EventExtensions.isSupported == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', EventExtensions.emptyListener, { passive: true });\n EventExtensions.isSupported = true;\n } catch (e) {\n EventExtensions.isSupported = false;\n }\n }\n\n return EventExtensions.isSupported;\n }\n\n private static passiveEventListener(options: AddEventListenerOptions): AddEventListenerOptions | boolean {\n return EventExtensions.isPassiveEventListenerSupported() ? options : !!options.capture;\n }\n\n public static activeListener(): boolean | AddEventListenerOptions {\n return EventExtensions.passiveEventListener({ passive: false });\n }\n\n public static passiveListener(): boolean | AddEventListenerOptions {\n return EventExtensions.passiveEventListener({ passive: true });\n }\n\n public static emptyListener(): Function {\n return () => {\n };\n }\n}\n","import { ICanRunOutsideAngular } from './i-can-run-outside-angular';\nimport {\n IMouseEvent,\n IPointerEvent,\n IPointerUpEvent,\n ITouchDownEvent,\n ITouchMoveEvent,\n} from './pointer-events';\nimport { EventExtensions } from './event.extensions';\n\nexport const MOUSE_EVENT_IGNORE_TIME = 800;\n\nexport abstract class DragAndDropBase {\n\n public abstract hostElement: HTMLElement;\n\n private document: 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: { x: number, y: number } = { x: 0, y: 0 };\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.document?.addEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.document?.addEventListener('mousemove', this.onMouseMove);\n this.document?.addEventListener('pointerup', this.onPointerUpEvent);\n });\n\n this.mouseListeners = () => {\n this.document?.removeEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.document?.removeEventListener('mousemove', this.onMouseMove);\n this.document?.removeEventListener('pointerup', this.onPointerUpEvent);\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.document?.addEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.document?.addEventListener('touchmove', this.onTouchMove);\n this.document?.addEventListener('pointerup', this.onPointerUpEvent);\n });\n\n this.touchListeners = () => {\n this.document?.removeEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.document?.removeEventListener('touchmove', this.onTouchMove);\n this.document?.removeEventListener('pointerup', this.onPointerUpEvent);\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 onPointerUpEvent = (event: PointerEvent) => {\n if (this.isDragStarted) {\n this.onPointerUp(new IPointerUpEvent(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.document) {\n this.unsubscribe();\n }\n this.document = 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 { Directive, EventEmitter, } from '@angular/core';\nimport { FCreateConnectionEvent, FReassignConnectionEvent } from './f-connection';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FCreateNodeEvent } from '../f-external-item';\nimport { FDragStartedEvent, FNodeIntersectedWithConnections } from './domain';\nimport { FDropToGroupEvent } from './f-drop-to-group';\nimport {DragAndDropBase, ICanRunOutsideAngular} from \"../drag-toolkit\";\n\n@Directive()\nexport abstract class FDraggableBase extends DragAndDropBase {\n\n public abstract fSelectionChange: EventEmitter<FSelectionChangeEvent>;\n\n public abstract fNodeIntersectedWithConnections: EventEmitter<FNodeIntersectedWithConnections>;\n\n public abstract fEmitOnNodeIntersect: boolean;\n\n public abstract fCreateNode: EventEmitter<FCreateNodeEvent>;\n\n public abstract fReassignConnection: EventEmitter<FReassignConnectionEvent>;\n\n public abstract fCreateConnection: EventEmitter<FCreateConnectionEvent>;\n\n public abstract fDropToGroup: EventEmitter<FDropToGroupEvent>;\n\n public abstract vCellSize: number;\n\n public abstract hCellSize: number;\n\n public abstract fCellSizeWhileDragging: boolean;\n\n public abstract fDragStarted: EventEmitter<FDragStartedEvent>;\n\n public abstract fDragEnded: EventEmitter<void>;\n\n protected constructor(\n ngZone: ICanRunOutsideAngular | undefined\n ) {\n super(ngZone);\n }\n}\n","import {InjectionToken} from '@angular/core';\nimport {IPointerEvent} from \"../drag-toolkit\";\n\nexport const F_BEFORE_MAIN_PLUGIN = new InjectionToken<IFDragAndDropPlugin>('F_BEFORE_MAIN_PLUGIN');\nexport const F_AFTER_MAIN_PLUGIN = new InjectionToken<IFDragAndDropPlugin>('F_AFTER_MAIN_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, booleanAttribute, ContentChildren,\n Directive,\n ElementRef,\n EventEmitter, inject, Inject,\n Input,\n NgZone, numberAttribute,\n OnDestroy,\n OnInit, Optional, Output, QueryList\n} from \"@angular/core\";\nimport { FDraggableBase } from './f-draggable-base';\nimport {\n FNodeMoveFinalizeRequest,\n FNodeMovePreparationRequest\n} from './f-node-move';\nimport { FCanvasMoveFinalizeRequest, FCanvasMovePreparationRequest } from './f-canvas';\nimport {\n FCreateConnectionEvent,\n FReassignConnectionEvent,\n FReassignConnectionPreparationRequest,\n FReassignConnectionFinalizeRequest,\n FCreateConnectionPreparationRequest,\n FCreateConnectionFinalizeRequest\n} from './f-connection';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FMediator } from '@foblex/mediator';\nimport {\n AddDndToStoreRequest,\n EmitSelectionChangeEventRequest,\n PrepareDragSequenceRequest,\n RemoveDndFromStoreRequest,\n EndDragSequenceRequest,\n InitializeDragSequenceRequest,\n OnPointerMoveRequest, FEventTrigger, FTriggerEvent, defaultEventTrigger\n} from '../domain';\nimport {\n FExternalItemFinalizeRequest,\n FExternalItemPreparationRequest,\n FCreateNodeEvent,\n PreventDefaultIsExternalItemRequest\n} from '../f-external-item';\nimport { FSingleSelectRequest } from './f-single-select';\nimport { FNodeResizeFinalizeRequest, FNodeResizePreparationRequest } from './f-node-resize';\nimport { F_AFTER_MAIN_PLUGIN, F_BEFORE_MAIN_PLUGIN, IFDragAndDropPlugin } from './i-f-drag-and-drop-plugin';\nimport { BrowserService, EOperationSystem, PlatformService } from '@foblex/platform';\nimport { FDragStartedEvent, FNodeIntersectedWithConnections } from './domain';\nimport { FDragHandlerResult } from './f-drag-handler';\nimport {\n FDropToGroupEvent,\n FNodeDropToGroupFinalizeRequest,\n FNodeDropToGroupPreparationRequest\n} from './f-drop-to-group';\nimport { FNodeRotateFinalizeRequest, FNodeRotatePreparationRequest } from './f-node-rotate';\nimport {ICanRunOutsideAngular, IPointerEvent} from \"../drag-toolkit\";\n// ┌──────────────────────────────┐\n// │ Angular Realm │\n// │ │\n// │ ┌────────────────────────┐ │\n// │ │ FDraggableDirective │ │\n// │ └──────────┬─────────────┘ │\n// │ │ extends │\n// │ ┌──────────▼─────────────┐ │\n// │ │ FDraggableBase │ │\n// │ └──────────┬─────────────┘ │\n// │ │ │\n// │ │ overrides │\n// │ ┌──────────▼─────────────┐ │\n// │ │ DragAndDropBase │ │\n// │ └──────────┬─────────────┘ │\n// │ │ │\n// │ subscribes to │\n// │ │ │\n// │ ┌────▼────┐ │\n// │ │ Document│ │\n// │ └─────────┘ │\n// │ │\n// │ ┌────────────────────────┐ │\n// │ │ FMediator │◄─┬────┐\n// │ └─────┬────────┬─────────┘ │ │\n// │ │ │ │ │\n// │ executes executes │ │\n// │ F*Request F*Event │ │\n// │ │ │ │ │\n// └────────┴────────┴────────────┴────┘\n//\n//\n// ┌──────────────────────────────────────┐\n// │ Drag & Drop Runtime Layer │\n// │ │\n// │ Events from DOM: │\n// │ - mousedown / touchstart │\n// │ - mousemove / touchmove │\n// │ - pointerup │\n// │ │\n// │ ↓ Routed to │\n// │ │\n// │ ┌──────────────────────────────┐ │\n// │ │ DragAndDropBase │ │\n// │ └──────────────────────────────┘ │\n// │ ▲ ▲ │\n// │ │ │ │\n// │ checkDrag onPointerMove │\n// │ Sequence + Finalization │\n// │ To Start │\n// └──────────────────────────────────────┘\n@Directive({\n selector: \"f-flow[fDraggable]\",\n exportAs: 'fDraggable',\n providers: [ FDragHandlerResult ]\n})\nexport class FDraggableDirective extends FDraggableBase implements OnInit, AfterViewInit, OnDestroy {\n\n private _elementReference = inject(ElementRef);\n\n private _fResult = inject(FDragHandlerResult);\n private _fMediator = inject(FMediator);\n private _fPlatform = inject(PlatformService);\n\n @Input({ transform: booleanAttribute, alias: 'fDraggableDisabled' })\n public override disabled: boolean = false;\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n @Input()\n public fMultiSelectTrigger: FEventTrigger = (event: FTriggerEvent) => {\n return (this._fPlatform.getOS() === EOperationSystem.MAC_OS) ? event.metaKey : event.ctrlKey;\n };\n\n @Input()\n public fReassignConnectionTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input()\n public fCreateConnectionTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input()\n public fNodeResizeTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input()\n public fNodeRotateTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input()\n public fNodeMoveTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input()\n public fCanvasMoveTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input()\n public fExternalItemTrigger: FEventTrigger = defaultEventTrigger;\n\n @Output()\n public override fSelectionChange = new EventEmitter<FSelectionChangeEvent>();\n\n @Output()\n public override fNodeIntersectedWithConnections = new EventEmitter<FNodeIntersectedWithConnections>();\n\n @Input({ transform: booleanAttribute })\n public override fEmitOnNodeIntersect: boolean = false;\n\n @Output()\n public override fCreateNode = new EventEmitter<FCreateNodeEvent>();\n\n @Output()\n public override fReassignConnection = new EventEmitter<FReassignConnectionEvent>();\n\n @Output()\n public override fCreateConnection = new EventEmitter<FCreateConnectionEvent>();\n\n @Output()\n public override fDropToGroup = new EventEmitter<FDropToGroupEvent>();\n\n @Input({ transform: numberAttribute })\n public override vCellSize = 1;\n\n @Input({ transform: numberAttribute })\n public override hCellSize = 1;\n\n @Input({ transform: booleanAttribute })\n public override fCellSizeWhileDragging: boolean = false;\n\n @Output()\n public override fDragStarted = new EventEmitter<FDragStartedEvent>();\n\n @Output()\n public override fDragEnded = new EventEmitter<void>();\n\n @ContentChildren(F_BEFORE_MAIN_PLUGIN, { descendants: true })\n private _beforePlugins!: QueryList<IFDragAndDropPlugin>;\n\n @ContentChildren(F_AFTER_MAIN_PLUGIN, { descendants: true })\n private _afterPlugins!: QueryList<IFDragAndDropPlugin>;\n\n constructor(\n @Inject(NgZone) @Optional() ngZone: ICanRunOutsideAngular,\n private _fBrowser: BrowserService,\n ) {\n super(ngZone);\n }\n\n public ngOnInit(): void {\n this._fMediator.execute<void>(new AddDndToStoreRequest(this));\n }\n\n public ngAfterViewInit(): void {\n super.subscribe(this._fBrowser.document);\n }\n\n public override onPointerDown(event: IPointerEvent): boolean {\n this._fResult.clear();\n\n this._fMediator.execute<void>(new InitializeDragSequenceRequest());\n\n this._beforePlugins.forEach((p) => p.onPointerDown?.(event));\n\n this._fMediator.execute<void>(new FSingleSelectRequest(event, this.fMultiSelectTrigger));\n\n this._fMediator.execute<void>(new FReassignConnectionPreparationRequest(event, this.fReassignConnectionTrigger));\n\n this._fMediator.execute<void>(new FCreateConnectionPreparationRequest(event, this.fCreateConnectionTrigger));\n\n this._afterPlugins.forEach((p) => p.onPointerDown?.(event));\n\n const isMouseLeftOrTouch = event.isMouseLeftButton();\n if (!isMouseLeftOrTouch) {\n this.finalizeDragSequence();\n }\n return isMouseLeftOrTouch;\n }\n\n protected override prepareDragSequence(event: IPointerEvent) {\n\n this._beforePlugins.forEach((p) => p.prepareDragSequence?.(event));\n\n this._fMediator.execute<void>(new FNodeResizePreparationRequest(event, this.fNodeResizeTrigger));\n\n this._fMediator.execute<void>(new FNodeRotatePreparationRequest(event, this.fNodeRotateTrigger));\n\n this._fMediator.execute<void>(new FNodeMovePreparationRequest(event, this.fNodeMoveTrigger));\n\n this._fMediator.execute<void>(new FExternalItemPreparationRequest(event, this.fExternalItemTrigger));\n\n this._fMediator.execute<void>(new FNodeDropToGroupPreparationRequest(event));\n\n this._fMediator.execute<void>(new FCanvasMovePreparationRequest(event, this.fCanvasMoveTrigger));\n\n this._afterPlugins.forEach((p) => p.prepareDragSequence?.(event));\n\n this._fMediator.execute<void>(new PrepareDragSequenceRequest());\n }\n\n protected override onSelect(event: Event): void {\n this._fMediator.execute<void>(new PreventDefaultIsExternalItemRequest(event));\n }\n\n public override onPointerMove(event: IPointerEvent): void {\n this._fMediator.execute<void>(new OnPointerMoveRequest(event));\n }\n\n public override onPointerUp(event: IPointerEvent): void {\n this._beforePlugins.forEach((x) => x.onPointerUp?.(event));\n\n this._fMediator.execute<void>(new FReassignConnectionFinalizeRequest(event));\n\n this._fMediator.execute<void>(new FCreateConnectionFinalizeRequest(event));\n\n this._fMediator.execute<void>(new FNodeResizeFinalizeRequest(event));\n\n this._fMediator.execute<void>(new FNodeRotateFinalizeRequest(event));\n\n this._fMediator.execute<void>(new FNodeMoveFinalizeRequest(event));\n\n this._fMediator.execute<void>(new FExternalItemFinalizeRequest(event));\n\n this._fMediator.execute<void>(new FNodeDropToGroupFinalizeRequest(event));\n\n this._fMediator.execute<void>(new FCanvasMoveFinalizeRequest(event));\n\n this._afterPlugins.forEach((x) => x.onPointerUp?.(event));\n\n this._fMediator.execute<void>(new EndDragSequenceRequest());\n }\n\n protected override finalizeDragSequence(): void {\n this._fMediator.execute<void>(new EmitSelectionChangeEventRequest());\n\n this._fResult.clear();\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute<void>(new RemoveDndFromStoreRequest());\n super.unsubscribe();\n }\n}\n\n","import { ICurrentSelection } from '../domain';\n\nexport class FSelectionChangeEvent implements ICurrentSelection {\n\n constructor(\n public fNodeIds: string[],\n public fGroupIds: string[],\n public fConnectionIds: string[],\n ) {\n }\n}\n","import { FMinimapData } from '../f-minimap-data';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\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 { IFDragHandler } 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 IFDragHandler {\n\n public fEventType = 'minimap';\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 prepareDragSequence(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.add('f-scaled-animate');\n }\n\n public onPointerMove(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.execute<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.flowRect, this.canvasPosition, eventPoint, this.minimap\n ));\n }\n\n public onPointerUp(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.remove('f-scaled-animate');\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { 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 if(!this._isValid(request)) {\n return;\n }\n const eventPoint = request.event.getPosition();\n const startCanvasPosition = Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position);\n\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(eventPoint, request.minimap));\n this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(eventPoint).elementTransform(this.flowHost);\n this.fDraggableDataContext.draggableItems = [\n new FMinimapDragHandler(\n this.fComponentsStore, this.fMediator, this.getFlowRect(),\n startCanvasPosition, eventPoint, request.minimap,\n )\n ];\n }\n\n private _isValid(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 private getNewPosition(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n return this.fMediator.execute<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 { MinimapDragPreparationExecution } from './minimap-drag-preparation.execution';\n\nexport const MINIMAP_DRAG_PREPARATION_PROVIDERS = [\n\n MinimapDragPreparationExecution,\n];\n","import {IPointerEvent} from \"../../../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';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\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 if(!this._isValid()) {\n return;\n }\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.onPointerUp?.();\n });\n }\n\n private _isValid(): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FMinimapDragHandler\n );\n }\n}\n","import { MinimapDragFinalizeExecution } from './minimap-drag-finalize.execution';\n\nexport const MINIMAP_DRAG_FINALIZE_PROVIDERS = [\n\n MinimapDragFinalizeExecution,\n];\n","export class MinimapDrawNodesRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MinimapDrawNodesRequest } from './minimap-draw-nodes.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { createSVGElement } from '../../../domain';\nimport { FNodeBase, FNodeDirective } from '../../../f-node';\nimport { IRect, RectExtensions, setRectToElement } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { FCanvasBase } from '../../../f-canvas';\nimport { FFlowBase } from '../../../f-flow';\n\n@Injectable()\n@FExecutionRegister(MinimapDrawNodesRequest)\nexport class MinimapDrawNodesExecution implements IExecution<MinimapDrawNodesRequest, SVGRectElement[]> {\n\n private readonly _fBrowser = inject(BrowserService);\n private readonly _fComponentStore = inject(FComponentsStore);\n\n private get _fFlow(): FFlowBase | undefined {\n return this._fComponentStore.fFlow;\n }\n\n private get _fNodes(): FNodeBase[] {\n return this._fComponentStore.fNodes;\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentStore.fCanvas!;\n }\n\n public handle(request: MinimapDrawNodesRequest): SVGRectElement[] {\n return this._createMinimapNodeElements(request);\n }\n\n private _createMinimapNodeElements(request: MinimapDrawNodesRequest): SVGRectElement[] {\n return this._fNodes.map((x) => {\n const element = this._createNodeElement();\n setRectToElement(this._getNodeRect(x), element);\n this._applyClassList(element, x, x instanceof FNodeDirective);\n return element;\n });\n }\n\n private _createNodeElement(): SVGRectElement {\n return createSVGElement('rect', this._fBrowser);\n }\n\n private _getNodeRect(node: FNodeBase): IRect {\n return RectExtensions.div(this._getNodeRectInFlow(node), this._fCanvas.transform.scale);\n }\n\n private _getNodeRectInFlow(node: FNodeBase): IRect {\n return RectExtensions.elementTransform(RectExtensions.fromElement(node.hostElement), this._fFlow!.hostElement);\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 element.classList.add(...this._getClassList(node));\n if (node.isSelected()) {\n element.classList.add('f-selected');\n }\n }\n\n private _getClassList(node: FNodeBase): string[] {\n if (Array.isArray(node.fMinimapClass)) {\n return node.fMinimapClass;\n } else {\n return [node.fMinimapClass];\n }\n }\n}\n","export class MinimapCalculateViewBoxRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MinimapCalculateViewBoxRequest } from './minimap-calculate-view-box.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FCanvasBase } from '../../../f-canvas';\nimport { FFlowBase } from '../../../f-flow';\n\n@Injectable()\n@FExecutionRegister(MinimapCalculateViewBoxRequest)\nexport class MinimapCalculateViewBoxExecution implements IExecution<MinimapCalculateViewBoxRequest, IRect> {\n\n private _fComponentStore = inject(FComponentsStore);\n\n private get _fFlow(): FFlowBase | undefined {\n return this._fComponentStore.fFlow;\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentStore.fCanvas!;\n }\n\n public handle(request: MinimapCalculateViewBoxRequest): IRect {\n if(!this._fFlow || !this._fCanvas) {\n return RectExtensions.initialize();\n }\n return this._getRectForMinimapView();\n }\n\n private _getRectForMinimapView(): IRect {\n const result = this._calculateViewBox();\n result.x = 0;\n result.y = 0;\n return result;\n }\n\n private _calculateViewBox(): IRect {\n return RectExtensions.div(RectExtensions.fromElement(this._fFlow!.hostElement), this._fCanvas.transform.scale);\n }\n}\n","export class MinimapCalculateSvgScaleAndViewBoxRequest {\n\n constructor(\n public element: SVGSVGElement,\n public minSize: number,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MinimapCalculateSvgScaleAndViewBoxRequest } from './minimap-calculate-svg-scale-and-view-box.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { adjustRectToMinSize, IRect, ISize, RectExtensions, SizeExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FCanvasBase } from '../../../f-canvas';\nimport { FFlowBase } from '../../../f-flow';\nimport { CalculateNodesBoundingBoxRequest } from '../../../domain';\nimport { IFMinimapScaleAndViewBox } from './i-f-minimap-scale-and-view-box';\n\n@Injectable()\n@FExecutionRegister(MinimapCalculateSvgScaleAndViewBoxRequest)\nexport class MinimapCalculateSvgScaleAndViewBoxExecution\n implements IExecution<MinimapCalculateSvgScaleAndViewBoxRequest, IFMinimapScaleAndViewBox> {\n\n private _fMediator = inject(FMediator);\n\n private _fComponentStore = inject(FComponentsStore);\n\n private get _fFlow(): FFlowBase {\n return this._fComponentStore.fFlow!;\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentStore.fCanvas!;\n }\n\n public handle(request: MinimapCalculateSvgScaleAndViewBoxRequest): IFMinimapScaleAndViewBox {\n if(!this._fFlow) {\n return { scale: 1, viewBox: RectExtensions.initialize(0, 0, 0, 0) };\n }\n\n const nodesRect = this._getScaledNodesBoundingBox(request.minSize);\n const minimapRect = this._getMinimapRect(request.element);\n const scale = this._calculateViewScale(nodesRect, minimapRect);\n\n return {\n scale,\n viewBox: this._calculateViewBox(nodesRect, minimapRect, scale)\n }\n }\n\n private _getScaledNodesBoundingBox(minSize: number): IRect {\n const globalRect = this._calculateNodesBoundingBox();\n const flowRect = this._convertFromGlobalToFlowRect(globalRect);\n const scaledRect = this._convertRectToMinimapScale(flowRect);\n return adjustRectToMinSize(scaledRect, minSize);\n }\n\n private _calculateNodesBoundingBox(): IRect {\n return this._fMediator.execute<IRect | null>(new CalculateNodesBoundingBoxRequest())\n || RectExtensions.initialize(0, 0, 0, 0);\n }\n\n private _convertFromGlobalToFlowRect(rect: IRect): IRect {\n return RectExtensions.elementTransform(rect, this._fFlow!.hostElement)\n }\n\n private _convertRectToMinimapScale(rect: IRect): IRect {\n return RectExtensions.div(rect, this._fCanvas.transform.scale);\n }\n\n private _getMinimapRect(element: SVGSVGElement): IRect {\n return RectExtensions.elementTransform(RectExtensions.fromElement(element), this._fFlow.hostElement);\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","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';\nimport { MinimapDrawNodesExecution } from './minimap-draw-nodes';\nimport { MinimapCalculateViewBoxExecution } from './minimap-calculate-view-box';\nimport { MinimapCalculateSvgScaleAndViewBoxExecution } from './minimap-calculate-svg-scale-and-view-box';\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 MinimapDrawNodesExecution,\n\n MinimapCalculateSvgScaleAndViewBoxExecution,\n\n MinimapCalculateViewBoxExecution,\n];\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class SelectionAreaFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPoint, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore, NotifyTransformChangedRequest } from '../../f-storage';\nimport { GetCanBeSelectedItemsRequest, ICanBeSelectedElementAndRect } from '../../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext, IFDragHandler } from '../../f-draggable';\nimport { FSelectionAreaBase } from '../f-selection-area-base';\nimport { ISelectable } from '../../mixins';\n\nexport class SelectionAreaDragHandle implements IFDragHandler {\n\n public fEventType: string = 'selection-area';\n\n private _canBeSelected: ICanBeSelectedElementAndRect[] = [];\n private _selectedByMove: ISelectable[] = [];\n\n private get _fCanvasPosition(): IPoint {\n return Point.fromPoint(this._fComponentsStore.fCanvas!.transform.position)\n .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 prepareDragSequence(): void {\n this._canBeSelected = this._fMediator.execute(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 onPointerMove(difference: IPoint): void {\n const currentPoint = Point.fromPoint(difference).add(this._fDraggableDataContext.onPointerDownPosition);\n\n const point = this._getMinimumPoint(this._fDraggableDataContext.onPointerDownPosition, currentPoint);\n\n const width = Math.abs(difference.x);\n const height = Math.abs(difference.y);\n\n const fSelectionAreaRect = RectExtensions.initialize(point.x, point.y, width, height);\n\n this._fSelectionArea.draw(fSelectionAreaRect);\n this._selectedByMove = [];\n this._canBeSelected.forEach((item) => {\n item.element.unmarkAsSelected();\n\n const fItemRect = RectExtensions.addPoint(item.fRect, this._fCanvasPosition);\n\n const isIntersect = RectExtensions.intersectionWithRect(fItemRect, fSelectionAreaRect);\n if (isIntersect) {\n\n item.element.markAsSelected();\n this._selectedByMove.push(item.element);\n }\n });\n this._fMediator.execute<void>(new NotifyTransformChangedRequest());\n }\n\n private _getMinimumPoint(point1: IPoint, point2: IPoint): IPoint {\n return PointExtensions.initialize(\n Math.min(point1.x, point2.x),\n Math.min(point1.y, point2.y)\n );\n }\n\n public onPointerUp(): 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 { inject, Injectable } from '@angular/core';\nimport { SelectionAreaFinalizeRequest } from './selection-area-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaFinalizeRequest)\nexport class SelectionAreaFinalizeExecution implements IExecution<SelectionAreaFinalizeRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: SelectionAreaFinalizeRequest): void {\n if(!this._isValid()) {\n return;\n }\n this._fDraggableDataContext.draggableItems.forEach((x) => {\n x.onPointerUp?.();\n });\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some((x) =>\n x instanceof SelectionAreaDragHandle\n );\n }\n}\n","import { FSelectionAreaBase } from '../../f-selection-area-base';\nimport { FEventTrigger } from '../../../domain';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class SelectionAreaPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fSelectionArea: FSelectionAreaBase,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, 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';\nimport { isValidEventTrigger } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaPreparationRequest)\nexport class SelectionAreaPreparationExecution implements IExecution<SelectionAreaPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n public handle(request: SelectionAreaPreparationRequest): void {\n if (!this._isValid(request)) {\n return;\n }\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._fHost);\n }\n\n private _isValid(request: SelectionAreaPreparationRequest): boolean {\n return this._fDraggableDataContext.isEmpty()\n && isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n}\n","import { SelectionAreaPreparationExecution } from './selection-area-preparation';\nimport { SelectionAreaFinalizeExecution } from './selection-area-finalize';\n\nexport const F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS = [\n\n SelectionAreaPreparationExecution,\n\n SelectionAreaFinalizeExecution\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, inject, Input, OnInit } from '@angular/core';\nimport { FSelectionAreaBase } from './f-selection-area-base';\nimport { F_BEFORE_MAIN_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { SelectionAreaFinalizeRequest, SelectionAreaPreparationRequest } from './domain';\nimport { FEventTrigger, FTriggerEvent } from '../domain';\nimport {IPointerEvent} from \"../drag-toolkit\";\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_BEFORE_MAIN_PLUGIN, useExisting: FSelectionAreaComponent },\n ],\n})\nexport class FSelectionAreaComponent extends FSelectionAreaBase implements OnInit, IFDragAndDropPlugin {\n\n private _fMediator = inject(FMediator);\n private _elementReference = inject(ElementRef);\n\n @Input()\n public fTrigger: FEventTrigger = (event: FTriggerEvent) => {\n return event.shiftKey;\n };\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\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.execute(new SelectionAreaPreparationRequest(event, this, this.fTrigger));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this._fMediator.execute(new SelectionAreaFinalizeRequest(event));\n }\n}\n","import { FSelectionAreaComponent } from './f-selection-area.component';\n\nexport const F_SELECTION_AREA_PROVIDERS = [\n\n FSelectionAreaComponent\n];\n","import { CANVAS_PROVIDERS } from './f-canvas';\nimport { CONNECTIONS_PROVIDERS } from './f-connection';\nimport { SINGLE_SELECT_PROVIDERS } from './f-single-select';\nimport { NODE_PROVIDERS } from './f-node-move';\nimport { NODE_RESIZE_PROVIDERS } from './f-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';\nimport { F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS } from '../f-selection-area';\nimport { DRAG_AND_DROP_COMMON_PROVIDERS } from './domain';\nimport { NODE_DROP_TO_GROUP_PROVIDERS } from './f-drop-to-group';\nimport { NODE_ROTATE_PROVIDERS } from './f-node-rotate';\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_DROP_TO_GROUP_PROVIDERS,\n\n ...NODE_RESIZE_PROVIDERS,\n\n ...NODE_ROTATE_PROVIDERS,\n\n ...F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS,\n\n ...F_MINIMAP_DRAG_AND_DROP_PROVIDERS\n];\n","export class ClearSelectionRequest {\n\n}\n","import { ClearSelectionRequest } from './clear-selection.request';\nimport { inject, 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 private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: ClearSelectionRequest): void {\n this._fDraggableDataContext.selectedItems.forEach((x) => x.unmarkAsSelected());\n this._fDraggableDataContext.selectedItems = [];\n this._fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class GetCanBeSelectedItemsRequest {\n}\n","export class GetNormalizedElementRectRequest {\n constructor(\n public element: HTMLElement | SVGElement\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetNormalizedElementRectRequest } from './get-normalized-element-rect-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport {\n IRoundedRect,\n RoundedRect,\n IPoint,\n ISize,\n SizeExtensions,\n ITransformModel,\n RectExtensions, IRect\n} from '@foblex/2d';\nimport {GetNormalizedPointRequest} from \"../get-normalized-point\";\n\n@Injectable()\n@FExecutionRegister(GetNormalizedElementRectRequest)\nexport class GetNormalizedElementRectExecution implements IExecution<GetNormalizedElementRectRequest, IRect> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fMediator = inject(FMediator);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: GetNormalizedElementRectRequest): IRect {\n const systemRect = this._getElementRoundedRect(request);\n const position = this._normalizePosition(systemRect);\n const unscaledSize = this._unscaleSize(systemRect);\n const unscaledRect = this._getUnscaledRect(position, unscaledSize, systemRect)\n\n const offsetSize = this._getOffsetSize(request.element, unscaledSize);\n return RoundedRect.fromCenter(unscaledRect, offsetSize.width, offsetSize.height);\n }\n\n // BrowserWindow\n // +--------------------------------+\n // | |\n // | Element |\n // | (x: 100, y: 50) |\n // | +--------+ |\n // | | | |\n // | | | |\n // | +--------+ |\n // | |\n // +--------------------------------+\n // This data of the element is relative to the browser window, not the canvas, with all transformations applied.\n private _getElementRoundedRect(request: GetNormalizedElementRectRequest): IRoundedRect {\n return RoundedRect.fromRect(RectExtensions.fromElement(request.element));\n }\n\n private _normalizePosition(rect: IRoundedRect): IPoint {\n return this._fMediator.execute(new GetNormalizedPointRequest(rect));\n }\n\n private _unscaleSize(rect: IRoundedRect): ISize {\n return SizeExtensions.initialize(rect.width / this._transform.scale, rect.height / this._transform.scale);\n }\n\n private _getUnscaledRect(position: IPoint, size: ISize, rect: IRoundedRect): IRoundedRect {\n return new RoundedRect(\n position.x, position.y, size.width, size.height,\n rect.radius1, rect.radius2, rect.radius3, rect.radius4\n )\n }\n\n private _getOffsetSize(element: HTMLElement | SVGElement, size: ISize): ISize {\n return SizeExtensions.offsetFromElement(element) || size\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { IRect, ITransformModel, RectExtensions } from '@foblex/2d';\nimport { ICanBeSelectedElementAndRect } from './i-can-be-selected-element-and-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 { GetNormalizedElementRectRequest } from '../../get-normalized-element-rect';\n\n@Injectable()\n@FExecutionRegister(GetCanBeSelectedItemsRequest)\nexport class GetCanBeSelectedItemsExecution implements IExecution<void, ICanBeSelectedElementAndRect[]> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\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 public handle(): ICanBeSelectedElementAndRect[] {\n return [ ...this.getNodesWithRects(), ...this.getConnectionsWithRects() ].filter((x) => {\n return !this._fDraggableDataContext.selectedItems.includes(x.element);\n });\n }\n\n private getNodesWithRects(): ICanBeSelectedElementAndRect[] {\n return this.fNodes.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n fRect: RectExtensions.mult(\n this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.hostElement)),\n this.transform.scale\n )\n };\n });\n }\n\n private getConnectionsWithRects(): ICanBeSelectedElementAndRect[] {\n return this.fConnections.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n fRect: RectExtensions.mult(\n this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.boundingElement)),\n this.transform.scale\n )\n };\n });\n }\n}\n","export class GetCurrentSelectionRequest {\n\n}\n","import { GetCurrentSelectionRequest } from './get-current-selection.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { ICurrentSelection } from './i-current-selection';\n\n@Injectable()\n@FExecutionRegister(GetCurrentSelectionRequest)\nexport class GetCurrentSelectionExecution implements IExecution<GetCurrentSelectionRequest, ICurrentSelection> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(): ICurrentSelection {\n return {\n fNodeIds: this._getSelectedNodes(),\n fGroupIds: this._getSelectedGroups(),\n fConnectionIds: this._getSelectedConnections()\n }\n }\n\n private _getSelectedNodes(): string[] {\n return this._fDraggableDataContext.selectedItems\n .filter(x => x.hostElement.classList.contains('f-node'))\n .map(x => x.hostElement.dataset[ 'fNodeId' ]!);\n }\n\n private _getSelectedGroups(): string[] {\n return this._fDraggableDataContext.selectedItems\n .filter(x => x.hostElement.classList.contains('f-group'))\n .map(x => x.hostElement.dataset[ 'fGroupId' ]!);\n }\n\n private _getSelectedConnections(): string[] {\n return this._fDraggableDataContext.selectedItems\n .filter(x => !x.hostElement.classList.contains('f-node') && !x.hostElement.classList.contains('f-group'))\n .map(x => x.hostElement.id);\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 { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectRequest)\nexport class SelectExecution implements IExecution<SelectRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: SelectRequest): void {\n this._fDraggableDataContext.selectedItems.forEach((x) => {\n x.unmarkAsSelected();\n });\n this._fDraggableDataContext.selectedItems = [];\n\n request.nodes.forEach((key) => {\n const node = this._fComponentsStore.fNodes.find((x) => x.fId === key);\n if(node) {\n node.markAsSelected();\n this._fDraggableDataContext.selectedItems.push(node);\n }\n });\n\n request.connections.forEach((key) => {\n const connection = this._fComponentsStore.fConnections.find((x) => x.fId === key);\n if(connection) {\n connection.markAsSelected();\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 { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectAllRequest)\nexport class SelectAllExecution implements IExecution<SelectAllRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: SelectAllRequest): void {\n this._fDraggableDataContext.selectedItems.forEach((x) => {\n x.unmarkAsSelected();\n });\n this._fDraggableDataContext.selectedItems = [];\n this._fComponentsStore.fNodes.forEach((x) => {\n x.markAsSelected();\n this._fDraggableDataContext.selectedItems.push(x);\n });\n this._fComponentsStore.fConnections.forEach((x) => {\n x.markAsSelected();\n this._fDraggableDataContext.selectedItems.push(x);\n });\n this._fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class SelectAndUpdateNodeLayerRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","export class MoveFrontElementsBeforeTargetElementRequest {\n\n constructor(\n public fItemsContainer: HTMLElement, // fGroupsContainer || fNodesContainer || fConnectionsContainer\n public allElements: Element[],\n public elementsThatShouldBeInFront: Element[],\n public targetIndex: number\n ) {\n }\n}\n","import { MoveFrontElementsBeforeTargetElementRequest } from './move-front-elements-before-target-element.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(MoveFrontElementsBeforeTargetElementRequest)\nexport class MoveFrontElementsBeforeTargetElementExecution implements IExecution<MoveFrontElementsBeforeTargetElementRequest, void> {\n\n public handle(request: MoveFrontElementsBeforeTargetElementRequest): void {\n const elementsToMove: Element[] = [];\n for (let i = request.targetIndex + 1; i < request.allElements.length; i++) {\n const element = request.allElements[ i ];\n if (!request.elementsThatShouldBeInFront.includes(element)) {\n elementsToMove.push(element);\n }\n }\n elementsToMove.forEach((x) => {\n request.fItemsContainer.removeChild(x);\n request.fItemsContainer.insertBefore(x, request.allElements[ request.targetIndex ]);\n });\n }\n}\n","import { ISelectable } from '../../mixins';\n\nexport class UpdateItemAndChildrenLayersRequest {\n\n constructor(\n public item: ISelectable,\n public itemContainer: HTMLElement,\n ) {\n }\n}\n","export class GetDeepChildrenNodesAndGroupsRequest {\n\n constructor(\n public fId: string\n ) {\n }\n}\n","import {inject, 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 private readonly _fComponentsStore = inject(FComponentsStore);\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 directChildren = this._fComponentsStore.fNodes.filter((x) => x.fParentId === fId);\n return directChildren.reduce((result, x) => {\n return result.concat(this._getChildrenNodes(x.fId, visited));\n }, directChildren);\n }\n}\n","import { UpdateItemAndChildrenLayersRequest } from './update-item-and-children-layers.request';\nimport { inject, 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';\nimport { FCanvasBase } from '../../f-canvas';\n\n@Injectable()\n@FExecutionRegister(UpdateItemAndChildrenLayersRequest)\nexport class UpdateItemAndChildrenLayersExecution implements IExecution<UpdateItemAndChildrenLayersRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentsStore.fCanvas!;\n }\n\n private get _fGroupsContainer(): HTMLElement {\n return this._fCanvas.fGroupsContainer().nativeElement;\n }\n\n private get _fNodesContainer(): HTMLElement {\n return this._fCanvas.fNodesContainer().nativeElement;\n }\n\n private get _fConnectionsContainer(): HTMLElement {\n return this._fCanvas.fConnectionsContainer().nativeElement;\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.execute(\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.execute<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId)).map((x) => x.hostElement);\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { SelectAndUpdateNodeLayerRequest } from './select-and-update-node-layer.request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { UpdateItemAndChildrenLayersRequest } from '../../update-item-and-children-layers';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(SelectAndUpdateNodeLayerRequest)\nexport class SelectAndUpdateNodeLayerExecution implements IHandler<SelectAndUpdateNodeLayerRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n public handle(request: SelectAndUpdateNodeLayerRequest): void {\n this.selectNodeIfNotSelected(request.fNode);\n\n this.fMediator.execute<void>(\n new UpdateItemAndChildrenLayersRequest(request.fNode, request.fNode.hostElement.parentElement as HTMLElement)\n );\n }\n\n private selectNodeIfNotSelected(fNode: FNodeBase) {\n if (!this.fDraggableDataContext.selectedItems.includes(fNode) && !fNode.fSelectionDisabled) {\n this.fDraggableDataContext.selectedItems.push(fNode);\n fNode.markAsSelected();\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","import { ClearSelectionExecution } from './clear-selection';\nimport { GetCurrentSelectionExecution } from './get-current-selection';\nimport { SelectExecution } from './select';\nimport { SelectAllExecution } from './select-all';\nimport { SelectAndUpdateNodeLayerExecution } from './select-and-update-node-layer';\nimport { GetCanBeSelectedItemsExecution } from './get-can-be-selected-items';\n\nexport const F_SELECTION_FEATURES = [\n\n ClearSelectionExecution,\n\n GetCanBeSelectedItemsExecution,\n\n GetCurrentSelectionExecution,\n\n SelectExecution,\n\n SelectAllExecution,\n\n SelectAndUpdateNodeLayerExecution\n];\n","import { EventEmitter, inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { EmitSelectionChangeEventRequest } from './emit-selection-change-event-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext, FSelectionChangeEvent } from '../../../f-draggable';\nimport { GetCurrentSelectionRequest, ICurrentSelection } from '../../f-selection';\nimport { NotifyTransformChangedRequest } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(EmitSelectionChangeEventRequest)\nexport class EmitSelectionChangeEventExecution implements IExecution<EmitSelectionChangeEventRequest, void> {\n\n private _fMediator = inject(FMediator);\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fSelectionChange(): EventEmitter<FSelectionChangeEvent> {\n return this._fComponentsStore.fDraggable!.fSelectionChange;\n }\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: EmitSelectionChangeEventRequest): void {\n if (\n !this._fDraggableDataContext.isSelectedChanged\n ) {\n return;\n }\n\n this._emitSelectionChange(this._getSelection());\n this._fDraggableDataContext.isSelectedChanged = false;\n this._fMediator.execute<void>(new NotifyTransformChangedRequest());\n }\n\n private _getSelection(): ICurrentSelection {\n return this._fMediator.execute<ICurrentSelection>(new GetCurrentSelectionRequest());\n }\n\n private _emitSelectionChange(selection: ICurrentSelection): void {\n this._fSelectionChange.emit(\n new FSelectionChangeEvent(selection.fNodeIds, selection.fGroupIds, selection.fConnectionIds)\n );\n }\n}\n","export class EndDragSequenceRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { EndDragSequenceRequest } from './end-drag-sequence-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { F_CSS_CLASS } from '../../css-cls';\n\n@Injectable()\n@FExecutionRegister(EndDragSequenceRequest)\nexport class EndDragSequenceExecution implements IExecution<EndDragSequenceRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _hostElement(): HTMLElement {\n return this._fComponentsStore.fDraggable!.hostElement;\n }\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: EndDragSequenceRequest): void {\n this._hostElement.classList.remove(F_CSS_CLASS.DRAG_AND_DROP.DRAGGING);\n\n this._fDraggableDataContext.reset();\n this._emitDragEnded();\n }\n\n private _emitDragEnded(): void {\n this._fComponentsStore.fDraggable?.fDragEnded?.emit();\n }\n}\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class OnPointerMoveRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { OnPointerMoveRequest } from './on-pointer-move-request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { IPoint, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\n@Injectable()\n@FExecutionRegister(OnPointerMoveRequest)\nexport class OnPointerMoveExecution implements IExecution<OnPointerMoveRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n private get _hostElement(): HTMLElement {\n return this._fComponentsStore.fDraggable!.hostElement;\n }\n\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: OnPointerMoveRequest): void {\n this._setDifferenceToDraggableItems(\n this._getDifferenceBetweenPointerAndPointerDown(request.event)\n );\n }\n\n private _setDifferenceToDraggableItems(difference: IPoint): void {\n this._fDraggableDataContext.draggableItems.forEach((item) => {\n item.onPointerMove({ ...difference });\n });\n }\n\n private _getDifferenceBetweenPointerAndPointerDown(event: IPointerEvent): IPoint {\n return this._getPointerPositionInCanvas(event)\n .div(this._fDraggableDataContext.onPointerDownScale)\n .sub(this._fDraggableDataContext.onPointerDownPosition);\n }\n\n private _getPointerPositionInCanvas(event: IPointerEvent): Point {\n return Point.fromPoint(event.getPosition()).elementTransform(this._hostElement);\n }\n}\n","export class InitializeDragSequenceRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { InitializeDragSequenceRequest } from './initialize-drag-sequence-request';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(InitializeDragSequenceRequest)\nexport class InitializeDragSequenceExecution implements IExecution<InitializeDragSequenceRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: InitializeDragSequenceRequest): void {\n this._fDraggableDataContext.reset();\n }\n}\n","export class IsDragStartedRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IsDragStartedRequest } from './is-drag-started-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(IsDragStartedRequest)\nexport class IsDragStartedExecution implements IExecution<IsDragStartedRequest, boolean> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: IsDragStartedRequest): boolean {\n return !!this._fComponentsStore.fDraggable?.isDragStarted;\n }\n}\n","export class PrepareDragSequenceRequest {\n\n}\n","export class StartDragSequenceRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { StartDragSequenceRequest } from './start-drag-sequence-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { EmitSelectionChangeEventRequest } from '../emit-selection-change-event';\nimport { F_CSS_CLASS } from '../../css-cls';\n\n@Injectable()\n@FExecutionRegister(StartDragSequenceRequest)\nexport class StartDragSequenceExecution implements IExecution<StartDragSequenceRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _hostElement(): HTMLElement {\n return this._fComponentsStore.fDraggable!.hostElement;\n }\n\n public handle(request: StartDragSequenceRequest): void {\n if (this._fDraggableDataContext.draggableItems.length > 0) {\n this._hostElement.classList.add(F_CSS_CLASS.DRAG_AND_DROP.DRAGGING);\n this._fMediator.execute<void>(new EmitSelectionChangeEventRequest());\n this._emitDragStarted();\n }\n }\n\n private _emitDragStarted(): void {\n this._fComponentsStore.fDraggable?.fDragStarted?.emit({\n fEventType: this._fDraggableDataContext.draggableItems[ 0 ].fEventType,\n fData: { ...this._fDraggableDataContext.draggableItems[ 0 ].fData }\n });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { PrepareDragSequenceRequest } from './prepare-drag-sequence-request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { StartDragSequenceRequest } from '../start-drag-sequence';\n\n@Injectable()\n@FExecutionRegister(PrepareDragSequenceRequest)\nexport class PrepareDragSequenceExecution implements IExecution<PrepareDragSequenceRequest, void> {\n\n private _fMediator = inject(FMediator);\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: PrepareDragSequenceRequest): void {\n this._callPrepareDragSequence();\n\n this._fMediator.execute<void>(new StartDragSequenceRequest());\n }\n\n private _callPrepareDragSequence(): void {\n this._fDraggableDataContext.draggableItems.forEach((item) => {\n item.prepareDragSequence?.();\n });\n }\n}\n","export class RemoveDndFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveDndFromStoreRequest } from './remove-dnd-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveDndFromStoreRequest)\nexport class RemoveDndFromStoreExecution implements IExecution<RemoveDndFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveDndFromStoreRequest): void {\n this._fComponentsStore.fDraggable = undefined;\n }\n}\n","import { AddDndToStoreExecution } from './add-dnd-to-store';\nimport { EmitSelectionChangeEventExecution } from './emit-selection-change-event';\nimport { RemoveDndFromStoreExecution } from './remove-dnd-from-store';\nimport { PrepareDragSequenceExecution } from './prepare-drag-sequence';\nimport { EndDragSequenceExecution } from './end-drag-sequence';\nimport { InitializeDragSequenceExecution } from './initialize-drag-sequence';\nimport { OnPointerMoveExecution } from './on-pointer-move';\nimport { IsDragStartedExecution } from './is-drag-started';\nimport { StartDragSequenceExecution } from './start-drag-sequence';\n\nexport const F_DRAGGABLE_FEATURES = [\n\n AddDndToStoreExecution,\n\n EmitSelectionChangeEventExecution,\n\n EndDragSequenceExecution,\n\n OnPointerMoveExecution,\n\n InitializeDragSequenceExecution,\n\n PrepareDragSequenceExecution,\n\n IsDragStartedExecution,\n\n StartDragSequenceExecution,\n\n RemoveDndFromStoreExecution\n];\n","import { FFlowBase } from '../../../f-flow';\n\nexport class AddFlowToStoreRequest {\n\n constructor(\n public fComponent: FFlowBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddFlowToStoreRequest } from './add-flow-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddFlowToStoreRequest)\nexport class AddFlowToStoreExecution implements IExecution<AddFlowToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddFlowToStoreRequest): void {\n this._fComponentsStore.fFlow = request.fComponent;\n }\n}\n","export class GetFlowRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetFlowRequest } from './get-flow-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FFlowBase } from '../../../f-flow';\n\n@Injectable()\n@FExecutionRegister(GetFlowRequest)\nexport class GetFlowExecution implements IExecution<GetFlowRequest, FFlowBase> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetFlowRequest): FFlowBase {\n const result = this._fComponentsStore.fFlow;\n if (!result) {\n throw new Error(`Flow not found in store`);\n }\n return result;\n }\n}\n","export class GetFlowHostElementRequest {\n\n}\n","import { GetFlowHostElementRequest } from './get-flow-host-element.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetFlowHostElementRequest)\nexport class GetFlowHostElementExecution implements IExecution<GetFlowHostElementRequest, HTMLElement> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(): HTMLElement {\n return this._fComponentsStore.flowHost;\n }\n}\n","export class GetFlowStateConnectionsRequest {\n\n}\n","import { inject, 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';\nimport { FConnectionBase } from '../../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateConnectionsRequest)\nexport class GetFlowStateConnectionsExecution implements IExecution<GetFlowStateConnectionsRequest, IFFlowStateConnection[]> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetFlowStateConnectionsRequest): IFFlowStateConnection[] {\n return this._fComponentsStore.fConnections.map(this._mapToConnectionState);\n }\n\n private _mapToConnectionState(x: FConnectionBase): IFFlowStateConnection {\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","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.fId,\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.fId,\n fConnectableSide: x.fConnectableSide\n }\n });\n }\n}\n","export class GetFlowStateRequest {\n}\n","import { GetFlowStateRequest } from './get-flow-state.request';\nimport { inject, 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 private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\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.execute(new GetFlowStateNodesRequest(FNodeDirective)),\n groups: this._fMediator.execute(new GetFlowStateNodesRequest(FGroupDirective)),\n connections: this._fMediator.execute(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 RemoveFlowFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveFlowFromStoreRequest } from './remove-flow-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveFlowFromStoreRequest)\nexport class RemoveFlowFromStoreExecution implements IExecution<RemoveFlowFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveFlowFromStoreRequest): void {\n this._fComponentsStore.fFlow = undefined;\n }\n}\n","import { GetFlowHostElementExecution } from './get-flow-host-element';\nimport { AddFlowToStoreExecution } from './add-flow-to-store';\nimport { RemoveFlowFromStoreExecution } from './remove-flow-from-store';\nimport { GetFlowExecution } from './get-flow';\nimport { GET_FLOW_STATE_PROVIDERS } from './get-flow-state';\n\nexport const F_FLOW_FEATURES = [\n\n AddFlowToStoreExecution,\n\n GetFlowExecution,\n\n GetFlowHostElementExecution,\n\n ...GET_FLOW_STATE_PROVIDERS,\n\n RemoveFlowFromStoreExecution\n];\n","import { FLineAlignmentBase } from '../../../f-line-alignment';\n\nexport class AddLineAlignmentToStoreRequest {\n\n constructor(\n public fComponent: FLineAlignmentBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddLineAlignmentToStoreRequest } from './add-line-alignment-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddLineAlignmentToStoreRequest)\nexport class AddLineAlignmentToStoreExecution implements IExecution<AddLineAlignmentToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddLineAlignmentToStoreRequest): void {\n this._fComponentsStore.fLineAlignment = request.fComponent;\n }\n}\n","export class RemoveLineAlignmentFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveLineAlignmentFromStoreRequest } from './remove-line-alignment-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveLineAlignmentFromStoreRequest)\nexport class RemoveLineAlignmentFromStoreExecution implements IExecution<RemoveLineAlignmentFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveLineAlignmentFromStoreRequest): void {\n this._fComponentsStore.fLineAlignment = undefined;\n }\n}\n","import { AddLineAlignmentToStoreExecution } from './add-line-alignment-to-store';\nimport { RemoveLineAlignmentFromStoreExecution } from './remove-line-alignment-from-store';\n\nexport const F_LINE_ALIGNMENT_FEATURES = [\n\n AddLineAlignmentToStoreExecution,\n\n RemoveLineAlignmentFromStoreExecution\n];\n","import { FNodeBase } from '../../../f-node';\n\nexport class AddNodeToStoreRequest {\n\n constructor(\n public fComponent: FNodeBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddNodeToStoreRequest } from './add-node-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddNodeToStoreRequest)\nexport class AddNodeToStoreExecution implements IExecution<AddNodeToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddNodeToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fNodes, request.fComponent);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class CalculateInputConnectionsRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { CalculateInputConnectionsRequest } from './calculate-input-connections-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectionBase } from '../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(CalculateInputConnectionsRequest)\nexport class CalculateInputConnectionsExecution implements IExecution<CalculateInputConnectionsRequest, FConnectionBase[]> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: CalculateInputConnectionsRequest): FConnectionBase[] {\n return this._calculateConnections(\n new Set(this._calculateConnectors(request.fNode))\n );\n }\n\n private _calculateConnectors(fNode: FNodeBase): string[] {\n return this._fComponentsStore.fInputs\n .filter((x) => fNode.isContains(x.hostElement))\n .map((x) => x.fId);\n }\n\n private _calculateConnections(ids: Set<string>): FConnectionBase[] {\n return this._fComponentsStore.fConnections\n .filter((x) => ids.has(x.fInputId));\n }\n}\n","export class CalculateNodesBoundingBoxRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { CalculateNodesBoundingBoxRequest } from './calculate-nodes-bounding-box.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(CalculateNodesBoundingBoxRequest)\nexport class CalculateNodesBoundingBoxExecution implements IExecution<CalculateNodesBoundingBoxRequest, IRect | null> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: CalculateNodesBoundingBoxRequest): IRect | null {\n return RectExtensions.union(this._getNodesRects());\n }\n\n private _getNodesRects(): IRect[] {\n return this._fComponentsStore.fNodes.map((x) => {\n return this._getElementRect(x.hostElement);\n });\n }\n\n private _getElementRect(element: HTMLElement | SVGElement): IRect {\n return RectExtensions.fromElement(element)\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class CalculateNodesBoundingBoxNormalizedPositionRequest {\n\n constructor(\n public fNodes?: FNodeBase[],\n ) {\n }\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { CalculateNodesBoundingBoxNormalizedPositionRequest } from './calculate-nodes-bounding-box-normalized-position.request';\nimport { inject, 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(CalculateNodesBoundingBoxNormalizedPositionRequest)\nexport class CalculateNodesBoundingBoxNormalizedPositionExecution implements IExecution<CalculateNodesBoundingBoxNormalizedPositionRequest, IRect | null> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: CalculateNodesBoundingBoxNormalizedPositionRequest): IRect | null {\n return RectExtensions.union(this._getNodesRects(request.fNodes || this._fComponentsStore.fNodes));\n }\n\n private _getNodesRects(fNodes: FNodeBase[]): IRect[] {\n return fNodes.map((x) => {\n return this._getElementRect(x, RectExtensions.fromElement(x.hostElement));\n });\n }\n\n private _getElementRect(fNode: FNodeBase, rect: IRect): IRect {\n return RectExtensions.initialize(fNode.position.x, fNode.position.y, rect.width, rect.height)\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class CalculateOutputConnectionsRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { CalculateOutputConnectionsRequest } from './calculate-output-connections-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectionBase } from '../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(CalculateOutputConnectionsRequest)\nexport class CalculateOutputConnectionsExecution implements IExecution<CalculateOutputConnectionsRequest, FConnectionBase[]> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: CalculateOutputConnectionsRequest): FConnectionBase[] {\n return this._calculateConnections(\n new Set(this._calculateConnectors(request.fNode))\n );\n }\n\n private _calculateConnectors(fNode: FNodeBase): string[] {\n return this._fComponentsStore.fOutputs\n .filter((x) => fNode.isContains(x.hostElement))\n .map((x) => x.fId);\n }\n\n private _calculateConnections(ids: Set<string>): FConnectionBase[] {\n return this._fComponentsStore.fConnections\n .filter((x) => ids.has(x.fOutputId));\n }\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 {inject, 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 private readonly _browser = inject(BrowserService);\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._browser.window.getComputedStyle(node.hostElement);\n return [\n this._browser.toPixels(style.paddingLeft, rect.width, rect.height, style.fontSize),\n this._browser.toPixels(style.paddingTop, rect.width, rect.height, style.fontSize),\n this._browser.toPixels(style.paddingRight, rect.width, rect.height, style.fontSize),\n this._browser.toPixels(style.paddingBottom, rect.width, rect.height, style.fontSize)\n ];\n }\n}\n","export class GetNodesRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetNodesRequest } from './get-nodes-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetNodesRequest)\nexport class GetNodesExecution implements IExecution<GetNodesRequest, FNodeBase[]> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetNodesRequest): FNodeBase[] {\n return this._fComponentsStore.fNodes;\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetParentNodesRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { inject, 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 private _fComponentsStore = inject(FComponentsStore);\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 { DestroyRef } from '@angular/core';\nimport { FNodeBase } from '../../../f-node';\n\nexport class UpdateNodeWhenStateOrSizeChangedRequest {\n\n constructor(\n public fComponent: FNodeBase,\n public destroyRef: DestroyRef,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { UpdateNodeWhenStateOrSizeChangedRequest } from './update-node-when-state-or-size-changed-request';\nimport { EFConnectableSide, FConnectorBase } from '../../../f-connectors';\nimport { NotifyDataChangedRequest } from '../../../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../../../reactivity';\nimport { FResizeChannel } from '../../../reactivity';\nimport { RectExtensions } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(UpdateNodeWhenStateOrSizeChangedRequest)\nexport class UpdateNodeWhenStateOrSizeChangedExecution\n implements IExecution<UpdateNodeWhenStateOrSizeChangedRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n\n public handle(request: UpdateNodeWhenStateOrSizeChangedRequest): void {\n const { hostElement, connectors, stateChanges } = request.fComponent;\n\n new FChannelHub(\n new FResizeChannel(hostElement),\n stateChanges\n ).pipe(notifyOnStart(), debounceTime(10)).listen(request.destroyRef, () => {\n this._calculateConnectorsConnectableSide(connectors, hostElement);\n this._fMediator.execute<void>(new NotifyDataChangedRequest());\n });\n }\n\n private _calculateConnectorsConnectableSide(fConnectors: FConnectorBase[], fNodeHost: HTMLElement | SVGElement): void {\n fConnectors.forEach((x: FConnectorBase) => {\n x.fConnectableSide = this._calculateConnectorConnectableSide(x, fNodeHost);\n });\n }\n\n private _calculateConnectorConnectableSide(fConnector: FConnectorBase, fNodeHost: HTMLElement | SVGElement): EFConnectableSide {\n let result: EFConnectableSide | undefined;\n\n if (fConnector.userFConnectableSide === EFConnectableSide.AUTO) {\n result = this._getSideByDelta(fConnector.hostElement, fNodeHost);\n } else {\n result = fConnector.userFConnectableSide;\n }\n return result;\n }\n\n private _getSideByDelta(fConnectorHost: HTMLElement | SVGElement, fNodeHost: HTMLElement | SVGElement): EFConnectableSide {\n let result: EFConnectableSide | undefined;\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\n","import { FNodeBase } from '../../../f-node';\n\nexport class RemoveNodeFromStoreRequest {\n\n constructor(\n public fComponent: FNodeBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveNodeFromStoreRequest } from './remove-node-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveNodeFromStoreRequest)\nexport class RemoveNodeFromStoreExecution implements IExecution<RemoveNodeFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveNodeFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fNodes, request.fComponent);\n }\n}\n","import { AddNodeToStoreExecution } from './add-node-to-store';\nimport { RemoveNodeFromStoreExecution } from './remove-node-from-store';\nimport { UpdateNodeWhenStateOrSizeChangedExecution } from './update-node-when-state-or-size-changed';\nimport { GetNodesExecution } from './get-nodes';\nimport { CalculateNodesBoundingBoxExecution } from './calculate-nodes-bounding-box';\nimport {\n CalculateNodesBoundingBoxNormalizedPositionExecution\n} from './calculate-nodes-bounding-box-normalized-position';\nimport { GetNodePaddingExecution } from './get-node-padding';\nimport { GetParentNodesExecution } from './get-parent-nodes';\nimport { CalculateInputConnectionsExecution } from './calculate-input-connections';\nimport { CalculateOutputConnectionsExecution } from './calculate-output-connections';\n\nexport const F_NODE_FEATURES = [\n\n AddNodeToStoreExecution,\n\n CalculateInputConnectionsExecution,\n\n CalculateNodesBoundingBoxExecution,\n\n CalculateNodesBoundingBoxNormalizedPositionExecution,\n\n CalculateOutputConnectionsExecution,\n\n GetNodePaddingExecution,\n\n GetNodesExecution,\n\n GetParentNodesExecution,\n\n UpdateNodeWhenStateOrSizeChangedExecution,\n\n RemoveNodeFromStoreExecution\n];\n","import { FZoomBase } from '../../../f-zoom';\n\nexport class AddZoomToStoreRequest {\n\n constructor(\n public fComponent: FZoomBase\n ) {\n }\n}\n","export const F_ZOOM_TAG = 'F_ZOOM';\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddZoomToStoreRequest } from './add-zoom-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { F_ZOOM_TAG } from '../f-zoom-tag';\n\n@Injectable()\n@FExecutionRegister(AddZoomToStoreRequest)\nexport class AddZoomToStoreExecution implements IExecution<AddZoomToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddZoomToStoreRequest): void {\n this._fComponentsStore.fComponents = {\n [F_ZOOM_TAG]: request.fComponent\n };\n }\n}\n","export class RemoveZoomFromStoreRequest {\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveZoomFromStoreRequest } from './remove-zoom-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { F_ZOOM_TAG } from '../f-zoom-tag';\n\n@Injectable()\n@FExecutionRegister(RemoveZoomFromStoreRequest)\nexport class RemoveZoomFromStoreExecution implements IExecution<RemoveZoomFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveZoomFromStoreRequest): void {\n this._fComponentsStore.fComponents = {\n [F_ZOOM_TAG]: undefined\n };\n }\n}\n","export class ResetZoomRequest {\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ResetZoomRequest } from './reset-zoom-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FCanvasBase } from '../../../f-canvas';\n\n@Injectable()\n@FExecutionRegister(ResetZoomRequest)\nexport class ResetZoomExecution implements IExecution<ResetZoomRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentsStore.fCanvas!;\n }\n\n public handle(request: ResetZoomRequest): void {\n this._fCanvas.resetScale();\n this._fCanvas.redraw();\n this._fCanvas.emitCanvasChangeEvent();\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class SetZoomRequest {\n\n constructor(\n public position: IPoint,\n public step: number,\n public direction: number,\n public animate: boolean = false\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { SetZoomRequest } from './set-zoom-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { F_ZOOM_TAG } from '../f-zoom-tag';\nimport { IPoint, Point } from '@foblex/2d';\nimport { FCanvasBase } from '../../../f-canvas';\nimport { FZoomBase } from '../../../f-zoom';\nimport { IsDragStartedRequest } from '../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SetZoomRequest)\nexport class SetZoomExecution implements IExecution<SetZoomRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow?.hostElement!;\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentsStore.fCanvas!;\n }\n\n private get _fZoomComponent(): FZoomBase {\n return this._fComponentsStore.fComponents[F_ZOOM_TAG]!;\n }\n\n private get _isDragStarted(): boolean {\n return this._fMediator.execute<boolean>(new IsDragStartedRequest());\n }\n\n public handle(request: SetZoomRequest): void {\n if (this._isDragStarted || !this._fZoomComponent) {\n return;\n }\n\n const result = this._fCanvas.transform.scale + request.step * request.direction;\n\n this._fCanvas.setScale(this._clamp(result), this._castPositionToFlow(request.position));\n request.animate ? this._fCanvas.redrawWithAnimation() : this._fCanvas.redraw();\n this._fCanvas.emitCanvasChangeEvent();\n }\n\n private _clamp(value: number): number {\n return Math.max(this._fZoomComponent.minimum, Math.min(value, this._fZoomComponent.maximum));\n }\n\n private _castPositionToFlow(position: IPoint): IPoint {\n return Point.fromPoint(position).elementTransform(this._fHost);\n }\n}\n","import { AddZoomToStoreExecution } from './add-zoom-to-store';\nimport { RemoveZoomFromStoreExecution } from './remove-zoom-from-store';\nimport { SetZoomExecution } from './set-zoom';\nimport { ResetZoomExecution } from './reset-zoom';\n\nexport const F_ZOOM_FEATURES = [\n\n AddZoomToStoreExecution,\n\n RemoveZoomFromStoreExecution,\n\n ResetZoomExecution,\n\n SetZoomExecution\n];\n","export class SortNodeLayersRequest {\n\n}\n","import { SortNodeLayersRequest } from './sort-node-layers.request';\nimport { inject, 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';\nimport { FCanvasBase } from '../../../f-canvas';\n\n@Injectable()\n@FExecutionRegister(SortNodeLayersRequest)\nexport class SortNodeLayersExecution implements IExecution<SortNodeLayersRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fBrowser = inject(BrowserService);\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentsStore.fCanvas!;\n }\n\n private get _fGroupsContainer(): HTMLElement {\n return this._fCanvas.fGroupsContainer().nativeElement;\n }\n\n private get _fNodesContainer(): HTMLElement {\n return this._fCanvas.fNodesContainer().nativeElement;\n }\n\n private get _fNodeElements(): HTMLElement[] {\n return Array.from(this._fNodesContainer.children) as HTMLElement[];\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\n .filter((x) => this._fGroupsContainer.contains(x.hostElement));\n }\n\n private _getSortedChildrenNodes(\n parent: FNodeBase,\n ): HTMLElement[] {\n const allElements = this._fNodeElements;\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.execute<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 { inject, 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 readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fBrowser = inject(BrowserService);\n\n private _fItemsContainer!: HTMLElement;\n\n private get _fItemElements(): HTMLElement[] {\n return Array.from(this._fItemsContainer.children) as HTMLElement[];\n }\n\n public handle(request: SortItemsByParentRequest): void {\n this._fItemsContainer = request.fItemsContainer;\n this._getItemsOfContainer().forEach((fItem: FNodeBase) => {\n this._moveChildrenItems(this._getSortedChildrenItems(fItem), fItem);\n });\n }\n\n private _getItemsOfContainer(): FNodeBase[] {\n return this._fComponentsStore.fNodes\n .filter((x) => this._fItemsContainer.contains(x.hostElement));\n }\n\n private _getSortedChildrenItems(\n fItem: FNodeBase,\n ): HTMLElement[] {\n const indexInContainer = this._fItemElements.indexOf(fItem.hostElement);\n return this._getChildrenItems(fItem.fId)\n .filter((child: HTMLElement) => this._fItemElements.indexOf(child) < indexInContainer)\n .sort((a, b) => this._fItemElements.indexOf(a) - this._fItemElements.indexOf(b));\n }\n\n private _getChildrenItems(fId: string): HTMLElement[] {\n return this._fMediator.execute<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 { inject, 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';\nimport { FCanvasBase } from '../../f-canvas';\n\n@Injectable()\n@FExecutionRegister(SortItemLayersRequest)\nexport class SortItemLayersExecution implements IExecution<SortItemLayersRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentsStore.fCanvas!;\n }\n\n public handle(request: SortItemLayersRequest): void {\n if(!this._fComponentsStore.fCanvas) {\n return;\n }\n this._fMediator.execute(new SortItemsByParentRequest(this._fCanvas.fGroupsContainer().nativeElement));\n this._fMediator.execute(new SortNodeLayersRequest());\n this._fMediator.execute(new SortItemsByParentRequest(this._fCanvas.fNodesContainer().nativeElement));\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","export type FEventTrigger = (event: FTriggerEvent) => boolean;\n\nexport type FTriggerEvent = MouseEvent | TouchEvent | WheelEvent;\n\nexport function isValidEventTrigger(event: FTriggerEvent, fTrigger: FEventTrigger): boolean {\n return fTrigger(event);\n}\n\nexport function defaultEventTrigger(event: FTriggerEvent): boolean {\n return true;\n}\n","export function isMobile(): boolean {\n // @ts-ignore\n return /android|iPad|iPhone|iPod/i.test(navigator.userAgent || navigator.vendor || window[ 'opera' ])\n}\n","export function Deprecated(newMethodName: string, removalVersion: string = '18.0.0'): MethodDecorator {\n return function (\n target: Object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<any>\n ): TypedPropertyDescriptor<any> | void {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args: any[]) {\n console.warn(\n `Method \"${String(propertyKey)}\" is deprecated. Use \"${newMethodName}\" instead. This method will be removed in version ${removalVersion}.`,\n );\n return originalMethod.apply(this, args);\n };\n return descriptor;\n };\n}\n\n","export function LogExecutionTime(label?: string): MethodDecorator {\n return function (\n target: Object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<any>\n ): TypedPropertyDescriptor<any> | void {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args: any[]) {\n console.time(label || String(propertyKey));\n const result = originalMethod.apply(this, args);\n\n if (result instanceof Promise) {\n return result.finally(() => console.timeEnd(label || String(propertyKey)));\n }\n\n console.timeEnd(label || String(propertyKey));\n return result;\n };\n\n return descriptor;\n };\n}\n","import {GetNormalizedElementRectExecution} from './get-normalized-element-rect';\nimport {\n MoveFrontElementsBeforeTargetElementExecution,\n UpdateItemAndChildrenLayersExecution\n} from './update-item-and-children-layers';\nimport {GetNormalizedPointExecution} from './get-normalized-point';\nimport {SortItemLayersExecution, SortItemsByParentExecution, SortNodeLayersExecution} from './sort-item-layers';\nimport {GetDeepChildrenNodesAndGroupsExecution} from './get-deep-children-nodes-and-groups';\nimport {GetElementRoundedRectExecution} from './get-element-rounded-rect';\nimport {F_SELECTION_FEATURES} from './f-selection';\nimport {F_BACKGROUND_FEATURES} from './f-background';\nimport {F_CANVAS_FEATURES} from './f-canvas';\nimport {F_CONNECTION_FEATURES} from './f-connection';\nimport {F_CONNECTORS_FEATURES} from './f-connectors';\nimport {F_FLOW_FEATURES} from './f-flow';\nimport {F_DRAGGABLE_FEATURES} from './f-draggable';\nimport {F_NODE_FEATURES} from './f-node';\nimport {F_LINE_ALIGNMENT_FEATURES} from './f-line-alignment';\nimport {F_ZOOM_FEATURES} from './f-zoom';\nimport {GetNormalizedConnectorRectExecution} from \"./get-normalized-connector-rect\";\n\nexport const COMMON_PROVIDERS = [\n\n ...F_CANVAS_FEATURES,\n\n ...F_CONNECTION_FEATURES,\n\n ...F_BACKGROUND_FEATURES,\n\n ...F_CONNECTORS_FEATURES,\n\n ...F_DRAGGABLE_FEATURES,\n\n ...F_FLOW_FEATURES,\n\n ...F_LINE_ALIGNMENT_FEATURES,\n\n ...F_NODE_FEATURES,\n\n GetElementRoundedRectExecution,\n\n ...F_SELECTION_FEATURES,\n\n ...F_ZOOM_FEATURES,\n\n GetDeepChildrenNodesAndGroupsExecution,\n\n GetNormalizedConnectorRectExecution,\n\n GetNormalizedElementRectExecution,\n\n GetNormalizedPointExecution,\n\n SortItemLayersExecution,\n\n SortItemsByParentExecution,\n\n SortNodeLayersExecution,\n\n UpdateItemAndChildrenLayersExecution,\n\n MoveFrontElementsBeforeTargetElementExecution,\n];\n","import {\n ChangeDetectionStrategy,\n Component, DestroyRef,\n ElementRef, inject, input, numberAttribute, OnChanges,\n OnInit, SimpleChanges\n} from \"@angular/core\";\nimport {\n ITransformModel,\n PointExtensions, SizeExtensions, TransformModelExtensions\n} from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { createSVGElement } from '../../domain';\nimport { BrowserService } from '@foblex/platform';\nimport { FChannel, FChannelHub, notifyOnStart } from '../../reactivity';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-rect-pattern\",\n template: ``,\n standalone: true,\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, OnChanges, IFBackgroundPattern {\n\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _elementReference = inject(ElementRef);\n private readonly _fBrowser = inject(BrowserService);\n\n private readonly _stateChanges = new FChannel();\n\n public get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public id = input<string>(`f-pattern-${ uniqueId++ }`);\n public vColor = input<string>('rgba(0,0,0,0.1)');\n public hColor = input<string>('rgba(0,0,0,0.1)');\n public vSize = input<number, unknown>(20, { transform: numberAttribute});\n public hSize = input<number, unknown>(20, { transform: numberAttribute});\n\n private _transform = TransformModelExtensions.default();\n\n private _position = PointExtensions.initialize();\n\n private _size = SizeExtensions.initialize(this.hSize(), this.vSize());\n\n private _pattern!: SVGPatternElement;\n private _vLine!: SVGLineElement;\n private _hLine!: SVGLineElement;\n\n constructor(\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._listenStateChanges();\n }\n\n private _listenStateChanges(): void {\n new FChannelHub(this._stateChanges).pipe(notifyOnStart()).listen(this._destroyRef, () => this._redraw());\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['vSize'] || changes['hSize'] || changes['vColor'] || changes['hColor']) {\n this._refresh();\n }\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 _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 _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._refresh();\n }\n\n private _refresh(): void {\n this._stateChanges.notify();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, DestroyRef,\n ElementRef, inject, input, Input, numberAttribute, OnChanges, OnDestroy,\n OnInit, SimpleChanges\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 { FChannel, FChannelHub, notifyOnStart } from '../../reactivity';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-circle-pattern\",\n template: ``,\n standalone: true,\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, OnChanges, IFBackgroundPattern {\n\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _elementReference = inject(ElementRef);\n private readonly _fBrowser = inject(BrowserService);\n\n private readonly _stateChanges = new FChannel();\n\n public get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public id = input<string>(`f-pattern-${ uniqueId++ }`);\n public color = input<string>('rgba(0,0,0,0.1)');\n public radius = input<number, unknown>(20, { transform: numberAttribute});\n\n private _scaledRadius: number = 20;\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 ) {\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._listenStateChanges();\n }\n\n private _listenStateChanges(): void {\n new FChannelHub(this._stateChanges).pipe(notifyOnStart()).listen(this._destroyRef, () => this._redraw());\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['radius'] || changes['color']) {\n this._refresh();\n }\n }\n\n private _redraw(): void {\n this._calculatePattern();\n this._redrawPattern();\n this._redrawElement();\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 _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._refresh();\n }\n\n private _refresh(): void {\n this._stateChanges.notify();\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 setTransform(transform: ITransformModel): void;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, contentChild,\n ElementRef, inject, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport { F_BACKGROUND, FBackgroundBase } from './f-background-base';\nimport { ITransformModel } from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN } from './domain';\nimport { FMediator } from '@foblex/mediator';\nimport {\n AddBackgroundToStoreRequest,\n AddPatternToBackgroundRequest,\n RemoveBackgroundFromStoreRequest\n} from '../domain';\n\n@Component({\n selector: \"f-background\",\n template: \"<svg><ng-content></ng-content></svg>\",\n styleUrls: [ \"./f-background.component.scss\" ],\n standalone: true,\n host: {\n 'class': 'f-component f-background'\n },\n providers: [ { provide: F_BACKGROUND, useExisting: FBackgroundComponent } ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FBackgroundComponent\n extends FBackgroundBase implements OnInit, AfterContentInit, OnDestroy {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _elementReference = inject(ElementRef);\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n protected fBackgroundPattern = contentChild(F_BACKGROUND_PATTERN);\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddBackgroundToStoreRequest(this));\n }\n\n public ngAfterContentInit(): void {\n this._fMediator.execute(new AddPatternToBackgroundRequest(this.fBackgroundPattern()));\n }\n\n public setTransform(transform: ITransformModel): void {\n this.fBackgroundPattern()?.setTransform(transform);\n }\n\n public ngOnDestroy() {\n this._fMediator.execute(new RemoveBackgroundFromStoreRequest(this));\n }\n}\n","import { FBackgroundComponent } from './f-background.component';\nimport { FRectPatternComponent } from './f-rect-pattern';\nimport { FCirclePatternComponent } from './f-circle-pattern';\n\nexport const F_BACKGROUND_PROVIDERS = [\n\n FBackgroundComponent,\n\n FRectPatternComponent,\n\n FCirclePatternComponent\n];\n","import { IPoint } from '@foblex/2d';\n\nexport class FCanvasChangeEvent {\n constructor(\n public readonly position: IPoint,\n public readonly scale: number,\n ) {\n }\n}\n","import { PointExtensions, TransformModelExtensions, IPoint } from '@foblex/2d';\nimport { Directive, ElementRef, InjectionToken, OutputEmitterRef, Signal } from '@angular/core';\nimport { FCanvasChangeEvent } from './domain';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_CANVAS = new InjectionToken<FCanvasBase>('F_CANVAS');\n\n@Directive()\nexport abstract class FCanvasBase implements IHasHostElement {\n\n public abstract fCanvasChange: OutputEmitterRef<FCanvasChangeEvent>;\n\n public abstract hostElement: HTMLElement;\n\n public abstract fGroupsContainer: Signal<ElementRef<HTMLElement>>;\n\n public abstract fNodesContainer: Signal<ElementRef<HTMLElement>>;\n\n public abstract fConnectionsContainer: Signal<ElementRef<HTMLElement>>;\n\n public transform = TransformModelExtensions.default();\n\n public abstract redraw(): void;\n\n public abstract redrawWithAnimation(): void;\n\n public getPosition(): IPoint {\n return this.transform.position;\n }\n\n public setPosition(position: IPoint): void {\n this.transform.position = position;\n }\n\n public abstract setScale(scale: number, toPosition: IPoint): void;\n\n public abstract resetScale(): void;\n\n public emitCanvasChangeEvent(): void {\n this.fCanvasChange.emit(\n new FCanvasChangeEvent(PointExtensions.sum(this.transform.position, this.transform.scaledPosition), this.transform.scale)\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, computed, effect,\n ElementRef,\n inject,\n Injector,\n input, numberAttribute,\n OnDestroy,\n OnInit,\n output,\n viewChild,\n} from \"@angular/core\";\nimport {\n FCanvasBase, F_CANVAS\n} from './f-canvas-base';\nimport { IPoint, PointExtensions, TransformModelExtensions } from '@foblex/2d';\nimport {\n FCanvasChangeEvent,\n} from './domain';\nimport { FMediator } from '@foblex/mediator';\nimport {\n AddCanvasToStoreRequest,\n CenterGroupOrNodeRequest,\n FitToFlowRequest, GetFlowRequest,\n InputCanvasPositionRequest,\n InputCanvasScaleRequest, isMobile, RemoveCanvasFromStoreRequest,\n ResetScaleAndCenterRequest, ResetScaleRequest, SetBackgroundTransformRequest, transitionEnd, UpdateScaleRequest,\n} from '../domain';\nimport { NotifyTransformChangedRequest } from '../f-storage';\nimport { Deprecated } from '../domain';\nimport { FFlowBase } from '../f-flow';\n\n@Component({\n selector: 'f-canvas',\n templateUrl: './f-canvas.component.html',\n styleUrls: [ './f-canvas.component.scss' ],\n standalone: true,\n host: {\n 'class': 'f-component f-canvas',\n },\n providers: [\n { provide: F_CANVAS, useExisting: FCanvasComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FCanvasComponent extends FCanvasBase implements OnInit, OnDestroy {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _elementReference = inject(ElementRef);\n private readonly _injector = inject(Injector);\n\n private _flowId: string | undefined;\n\n public override fCanvasChange = output<FCanvasChangeEvent>();\n\n public readonly position = input<IPoint, IPoint | null | undefined>(PointExtensions.initialize(), { transform: PointExtensions.castToPoint });\n public readonly scale = input<number, unknown>(1, { transform: numberAttribute });\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public override fGroupsContainer = viewChild.required<ElementRef<HTMLElement>>('fGroupsContainer');\n public override fNodesContainer = viewChild.required<ElementRef<HTMLElement>>('fNodesContainer');\n public override fConnectionsContainer = viewChild.required<ElementRef<HTMLElement>>('fConnectionsContainer');\n\n public get flowId(): string {\n return this._flowId!;\n }\n\n public ngOnInit(): void {\n this._flowId = this._fMediator.execute<FFlowBase>(new GetFlowRequest()).fId();\n this._fMediator.execute(new AddCanvasToStoreRequest(this));\n this._positionChange();\n this._scaleChange();\n }\n\n private _positionChange(): void {\n effect(() => {\n this._fMediator.execute(new InputCanvasPositionRequest(this.transform, this.position()));\n }, { injector: this._injector });\n }\n\n private _scaleChange(): void {\n effect(() => {\n this._fMediator.execute(new InputCanvasScaleRequest(this.transform, this.scale()));\n }, { injector: this._injector });\n }\n\n public override redraw(): void {\n this._fMediator.execute(new SetBackgroundTransformRequest(this.transform));\n this.hostElement.setAttribute(\"style\", `transform: ${ TransformModelExtensions.toString(this.transform) }`);\n this._fMediator.execute(new NotifyTransformChangedRequest());\n }\n\n public override redrawWithAnimation(): void {\n this._fMediator.execute(new SetBackgroundTransformRequest(this.transform));\n this.hostElement.setAttribute(\"style\", `transition: transform ${ isMobile() ? 80 : 150 }ms ease-in-out; transform: ${ TransformModelExtensions.toString(this.transform) }`);\n transitionEnd(this.hostElement, () => this.redraw());\n }\n\n public centerGroupOrNode(id: string, animated: boolean = true): void {\n setTimeout(() => this._fMediator.execute(new CenterGroupOrNodeRequest(id, animated)));\n }\n\n public fitToScreen(toCenter: IPoint = PointExtensions.initialize(), animated: boolean = true): void {\n setTimeout(() => this._fMediator.execute(new FitToFlowRequest(toCenter, animated)));\n }\n\n public resetScaleAndCenter(animated: boolean = true): void {\n setTimeout(() => this._fMediator.execute(new ResetScaleAndCenterRequest(animated)));\n }\n\n public getScale(): number {\n return this.transform.scale || 1;\n }\n\n /**\n * @deprecated Method \"setZoom\" is deprecated. Use \"setScale\" instead. This method will be removed in version 18.0.0.`,\n */\n @Deprecated('setScale')\n public setZoom(scale: number, toPosition: IPoint = PointExtensions.initialize()): void {\n this.setScale(scale, toPosition);\n }\n\n public override setScale(scale: number, toPosition: IPoint = PointExtensions.initialize()): void {\n this._fMediator.execute(new UpdateScaleRequest(scale, toPosition));\n }\n\n /**\n * @deprecated Method \"resetZoom\" is deprecated. Use \"resetScale\" instead. This method will be removed in version 18.0.0.`,\n */\n @Deprecated('resetScale')\n public resetZoom(): void {\n this.resetScale();\n }\n\n public override resetScale(): void {\n this._fMediator.execute(new ResetScaleRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveCanvasFromStoreRequest());\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 FCanvasComponent,\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, inject, Input, OnInit,\n} from \"@angular/core\";\nimport { setRectToViewBox } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { FMinimapData, IFMinimapScaleAndViewBox, MinimapCalculateSvgScaleAndViewBoxRequest } from './domain';\n\n@Directive({\n selector: 'svg[fMinimapFlow]'\n})\nexport class FMinimapFlowDirective {\n\n @Input()\n public fMinSize: number = 1000;\n\n private _fMediator = inject(FMediator);\n private _elementReference = inject(ElementRef);\n\n public get hostElement(): SVGSVGElement {\n return this._elementReference.nativeElement;\n }\n\n public model: FMinimapData = new FMinimapData(this.hostElement);\n\n public redraw(): void {\n const { scale, viewBox} = this._fMediator.execute<IFMinimapScaleAndViewBox>(\n new MinimapCalculateSvgScaleAndViewBoxRequest(this.hostElement, this.fMinSize)\n );\n this.model = new FMinimapData(this.hostElement, scale, viewBox);\n\n setRectToViewBox(viewBox, this.hostElement);\n }\n}\n","import {\n Directive, ElementRef, inject,\n} from \"@angular/core\";\nimport { FMediator } from '@foblex/mediator';\nimport { MinimapDrawNodesRequest } from './domain';\n\n@Directive({\n selector: 'g[fMinimapCanvas]'\n})\nexport class FMinimapCanvasDirective {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _elementReference = inject(ElementRef);\n\n public get hostElement(): SVGGElement {\n return this._elementReference.nativeElement;\n }\n\n public redraw(): void {\n this._clearCanvas();\n\n this._fMediator.execute<SVGRectElement[]>(new MinimapDrawNodesRequest())\n .forEach((x) => {\n this.hostElement.appendChild(x);\n });\n }\n\n private _clearCanvas(): void {\n this.hostElement.innerHTML = '';\n }\n}\n","import { Directive, ElementRef, inject } from \"@angular/core\";\nimport { IRect, setRectToElement } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { MinimapCalculateViewBoxRequest } 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 private readonly _fMediator = inject(FMediator);\n private readonly _elementReference = inject(ElementRef);\n\n public get hostElement(): SVGGElement {\n return this._elementReference.nativeElement;\n }\n\n public redraw(): void {\n setRectToElement(\n this._fMediator.execute<IRect>(new MinimapCalculateViewBoxRequest()),\n this.hostElement\n );\n }\n}\n","import {\n AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef,\n inject, Input, ViewChild,\n} from \"@angular/core\";\nimport { FMediator } from '@foblex/mediator';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { F_BEFORE_MAIN_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { MinimapDragFinalizeRequest, MinimapDragPreparationRequest } from './domain';\nimport { ListenTransformChangesRequest } from '../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../reactivity';\nimport { BrowserService } from '@foblex/platform';\nimport {IPointerEvent} from \"../drag-toolkit\";\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_BEFORE_MAIN_PLUGIN, useExisting: FMinimapComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FMinimapComponent implements AfterViewInit, IFDragAndDropPlugin {\n\n private _destroyRef = inject(DestroyRef);\n private _fMediator = inject(FMediator);\n private _fBrowser = inject(BrowserService);\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 public ngAfterViewInit(): void {\n this._listenTransformChanges();\n }\n\n private _listenTransformChanges(): void {\n this._fMediator.execute<FChannelHub>(new ListenTransformChangesRequest()).pipe(\n notifyOnStart(), debounceTime(2)\n ).listen(this._destroyRef, () => {\n this._redraw()\n });\n }\n\n private _redraw(): void {\n if (!this._fBrowser.isBrowser()) {\n return;\n }\n this.fMinimapFlow.redraw();\n this.fMinimapView.redraw();\n this.fMinimapCanvas.redraw();\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this._fMediator.execute(new MinimapDragPreparationRequest(event, this.fMinimapFlow.model));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this._fMediator.execute(new MinimapDragFinalizeRequest(event));\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 { InjectionToken, InputSignal, OutputEmitterRef } 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 fId: InputSignal<string>;\n\n public abstract hostElement: HTMLElement;\n\n public abstract fLoaded: OutputEmitterRef<string>;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, DestroyRef, ElementRef, inject, input, OnDestroy, OnInit, output\n} from '@angular/core';\nimport { F_FLOW, FFlowBase } from './f-flow-base';\nimport {\n ClearSelectionRequest,\n CalculateNodesBoundingBoxNormalizedPositionRequest,\n GetNormalizedPointRequest,\n GetCurrentSelectionRequest,\n RedrawConnectionsRequest,\n SelectAllRequest,\n SelectRequest,\n IFFlowState,\n GetFlowStateRequest, RemoveFlowFromStoreRequest, AddFlowToStoreRequest, SortItemLayersRequest, ICurrentSelection\n} from '../domain';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport {\n FDraggableDataContext\n} from '../f-draggable';\nimport { FConnectionFactory } from '../f-connection';\nimport {\n NotifyDataChangedRequest,\n F_STORAGE_PROVIDERS,\n ListenCountChangesRequest,\n ListenDataChangesRequest\n} from '../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { COMMON_PROVIDERS } from '../domain';\nimport { F_DRAGGABLE_PROVIDERS } from '../f-draggable';\nimport { FChannelHub } from '../reactivity';\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 standalone: true,\n host: {\n '[attr.id]': 'fId()',\n class: \"f-component f-flow\",\n },\n providers: [\n FMediator,\n ...F_STORAGE_PROVIDERS,\n FDraggableDataContext,\n FConnectionFactory,\n ...COMMON_PROVIDERS,\n ...F_DRAGGABLE_PROVIDERS,\n { provide: F_FLOW, useExisting: FFlowComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FFlowComponent extends FFlowBase implements OnInit, AfterContentInit, OnDestroy {\n\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _fMediator = inject(FMediator);\n private readonly _browserService = inject(BrowserService);\n private readonly _elementReference = inject(ElementRef);\n\n public override fId = input<string>(`f-flow-${ uniqueId++ }`, { alias: 'fFlowId' });\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public override fLoaded = output<string>();\n\n private _isLoaded: boolean = false;\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddFlowToStoreRequest(this));\n }\n\n public ngAfterContentInit(): void {\n if (!this._browserService.isBrowser()) {\n return;\n }\n this._listenCountChanges();\n this._listenDataChanges();\n }\n\n private _listenCountChanges(): void {\n this._fMediator.execute<FChannelHub>(\n new ListenCountChangesRequest()\n ).listen(this._destroyRef, () => {\n this._fMediator.execute(new SortItemLayersRequest())\n });\n }\n\n private _listenDataChanges(): void {\n this._fMediator.execute<FChannelHub>(\n new ListenDataChangesRequest()\n ).listen(this._destroyRef, () => {\n this._fMediator.execute(new RedrawConnectionsRequest());\n\n this._emitLoaded();\n });\n }\n\n private _emitLoaded(): void {\n if (!this._isLoaded) {\n this._isLoaded = true;\n this.fLoaded.emit(this.fId());\n }\n }\n\n public redraw(): void {\n this._fMediator.execute(new NotifyDataChangedRequest());\n }\n\n public reset(): void {\n this._isLoaded = false;\n }\n\n public getNodesBoundingBox(): IRect | null {\n return this._fMediator.execute<IRect | null>(new CalculateNodesBoundingBoxNormalizedPositionRequest());\n }\n\n public getSelection(): ICurrentSelection {\n return this._fMediator.execute<ICurrentSelection>(new GetCurrentSelectionRequest());\n }\n\n public getPositionInFlow(position: IPoint): IRect {\n return this._fMediator.execute(new GetNormalizedPointRequest(position));\n }\n\n public getState(): IFFlowState {\n return this._fMediator.execute(new GetFlowStateRequest());\n }\n\n public selectAll(): void {\n this._fMediator.execute<void>(new SelectAllRequest());\n }\n\n public select(nodes: string[], connections: string[]): void {\n this._fMediator.execute<void>(new SelectRequest(nodes, connections));\n }\n\n public clearSelection(): void {\n this._fMediator.execute<void>(new ClearSelectionRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveFlowFromStoreRequest());\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","export enum EFZoomDirection {\n\n ZOOM_IN = 1,\n\n ZOOM_OUT = -1,\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const F_ZOOM = new InjectionToken<FZoomBase>('F_ZOOM');\n\nexport abstract class FZoomBase {\n\n public abstract minimum: number;\n\n public abstract maximum: number;\n\n public abstract step: number;\n\n public abstract dblClickStep: number;\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n Directive,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n SimpleChanges\n} from \"@angular/core\";\nimport { F_ZOOM, FZoomBase } from './f-zoom-base';\nimport { FMediator } from '@foblex/mediator';\nimport {\n AddZoomToStoreRequest, defaultEventTrigger,\n Deprecated,\n FEventTrigger,\n GetCanvasRequest,\n GetFlowHostElementRequest, isValidEventTrigger,\n RemoveZoomFromStoreRequest,\n ResetZoomRequest,\n SetZoomRequest\n} from '../domain';\nimport { FCanvasBase } from '../f-canvas';\nimport { IPoint, IRect, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { isNode } from '../f-node';\nimport { EFZoomDirection } from './e-f-zoom-direction';\n\n@Directive({\n selector: \"f-canvas[fZoom]\",\n exportAs: 'fComponent',\n standalone: true,\n host: {\n 'class': 'f-zoom f-component'\n },\n providers: [ { provide: F_ZOOM, useExisting: FZoomDirective } ],\n})\nexport class FZoomDirective extends FZoomBase implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n\n private _fMediator = inject(FMediator);\n private _rendered = inject(Renderer2);\n\n private _triggersListener: Function[] = [];\n\n @Input({ alias: 'fZoom', transform: booleanAttribute })\n public isEnabled: boolean = false;\n\n @Input()\n public fWheelTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input()\n public fDblClickTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input({ alias: 'fZoomMinimum', transform: numberAttribute })\n public override minimum: number = 0.1;\n\n @Input({ alias: 'fZoomMaximum', transform: numberAttribute })\n public override maximum: number = 4;\n\n @Input({ alias: 'fZoomStep', transform: numberAttribute })\n public override step: number = 0.1;\n\n @Input({ alias: 'fZoomDblClickStep', transform: numberAttribute })\n public override dblClickStep: number = 0.5;\n\n private get _fHost(): HTMLElement {\n return this._fMediator.execute(new GetFlowHostElementRequest());\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fMediator.execute(new GetCanvasRequest());\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddZoomToStoreRequest(this));\n }\n\n public ngAfterViewInit(): void {\n this._listenTriggers();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[ 'isEnabled' ]) {\n this._listenTriggers();\n }\n }\n\n private _listenTriggers(): void {\n if (!this._fHost) {\n return;\n }\n\n this._disposeListeners();\n if (!this.isEnabled) {\n return;\n }\n\n this._triggersListener.push(this._rendered.listen(this._fHost, 'wheel', this._onWheel));\n this._triggersListener.push(this._rendered.listen(this._fHost, 'dblclick', this._onDoubleClick));\n }\n\n private _onWheel = (event: WheelEvent) => {\n if (!isValidEventTrigger(event, this.fWheelTrigger)) {\n return;\n }\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n this.setZoom(\n PointExtensions.initialize(event.clientX, event.clientY),\n this.step, this._calculateDirection(event.deltaY), false\n );\n }\n\n private _calculateDirection(deltaY: number): number {\n return deltaY > 0 ? EFZoomDirection.ZOOM_OUT : EFZoomDirection.ZOOM_IN;\n }\n\n private _onDoubleClick = (event: MouseEvent) => {\n if (!isValidEventTrigger(event, this.fDblClickTrigger)) {\n return;\n }\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n this.setZoom(\n PointExtensions.initialize(event.clientX, event.clientY),\n this.dblClickStep, EFZoomDirection.ZOOM_IN, true\n );\n }\n\n private _getToCenterPosition(position: IPoint | undefined, rect: IRect): IPoint {\n return PointExtensions.initialize(position?.x || rect.gravityCenter.x, position?.y || rect.gravityCenter.y);\n }\n\n public zoomIn(position?: IPoint): void {\n this._onZoomToCenter(EFZoomDirection.ZOOM_IN, position);\n }\n\n public zoomOut(position?: IPoint): void {\n this._onZoomToCenter(EFZoomDirection.ZOOM_OUT, position);\n }\n\n private _onZoomToCenter(direction: EFZoomDirection, position?: IPoint): void {\n this.setZoom(\n this._getToCenterPosition(position, RectExtensions.fromElement(this._fHost)),\n this.step, direction, false\n );\n }\n\n public setZoom(position: IPoint, step: number, direction: EFZoomDirection, animated: boolean) {\n this._fMediator.execute(\n new SetZoomRequest(position, step, direction, animated)\n );\n }\n\n /**\n * @deprecated Method \"getScale\" is deprecated. Use \"getZoomValue\" instead. This method will be removed in version 18.0.0.`,\n */\n @Deprecated('getZoomValue')\n public getScale(): number {\n return this.getZoomValue();\n }\n\n public getZoomValue(): number {\n return this._fCanvas.transform.scale || 1;\n }\n\n public reset(): void {\n this._fMediator.execute(new ResetZoomRequest());\n }\n\n private _disposeListeners(): void {\n this._triggersListener.forEach((listener) => listener());\n this._triggersListener = [];\n }\n\n public ngOnDestroy(): void {\n this._disposeListeners();\n this._fMediator.execute(new RemoveZoomFromStoreRequest());\n }\n}\n","import { FZoomDirective } from './f-zoom.directive';\n\nexport const F_ZOOM_PROVIDERS = [\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_BACKGROUND_PROVIDERS } from './f-backgroud';\nimport { F_CONNECTORS_PROVIDERS } from './f-connectors';\nimport { FDraggableDirective } from './f-draggable';\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_FLOW_PROVIDERS } from './f-flow';\nimport { F_CANVAS_PROVIDERS } from './f-canvas';\nimport { F_ZOOM_PROVIDERS } from './f-zoom';\nimport { F_EXTERNAL_ITEM_PROVIDERS } from './f-external-item';\n\n@NgModule({\n declarations: [\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_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 ...F_FLOW_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_BACKGROUND_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n\n CommonModule,\n ],\n exports: [\n ...F_FLOW_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_BACKGROUND_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n\n\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_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":["uniqueId","createSVGElement","i2.FComponentsStore","MIXIN_BASE","i1.FConnectionTextPathDirective","i1.FConnectionFactory","i3.FConnectionTextComponent","i4.FConnectionDragHandleEndComponent","i5.FConnectionGradientComponent","i6.FConnectionPathComponent","i7.FConnectionSelectionComponent","i1","i1.FComponentsStore","i2","i3.FDraggableDataContext","i1.FDraggableDataContext","i1.FMinimapCanvasDirective","i2.FMinimapViewDirective","i3.FMinimapFlowDirective","i1.FConnectionTextComponent","i2.FConnectionTextPathDirective","i3.FConnectionDragHandleStartComponent","i8.FConnectionComponent","i9.FConnectionCenterDirective","i10.FConnectionForCreateComponent","i11.FMarkerDirective","i12.FSnapConnectionComponent","i13.FNodeInputDirective","i14.FNodeOutletDirective","i15.FNodeOutputDirective","i16.FLineAlignmentComponent","i17.FMinimapComponent","i18.FMinimapCanvasDirective","i19.FMinimapViewDirective","i20.FMinimapFlowDirective","i21.FGroupDirective","i22.FNodeDirective","i23.FDragHandleDirective","i24.FResizeHandleDirective","i25.FRotateHandleDirective","i26.FSelectionAreaComponent","i27.FFlowComponent","i28.FCanvasComponent","i29.FBackgroundComponent","i30.FRectPatternComponent","i31.FCirclePatternComponent","i32.FZoomDirective","i33.FExternalItemDirective"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"foblex-flow.mjs","sources":["../../../projects/f-flow/src/f-backgroud/domain/i-f-background-pattern.ts","../../../projects/f-flow/src/domain/get-element-rounded-rect/get-element-rounded-rect-request.ts","../../../projects/f-flow/src/domain/get-element-rounded-rect/get-element-rounded-rect.execution.ts","../../../projects/f-flow/src/domain/f-background/add-background-to-store/add-background-to-store-request.ts","../../../projects/f-flow/src/f-storage/features/notify-data-changed/notify-data-changed-request.ts","../../../projects/f-flow/src/f-storage/features/notify-data-changed/notify-data-changed.execution.ts","../../../projects/f-flow/src/f-storage/features/listen-components-data-changed/listen-data-changes-request.ts","../../../projects/f-flow/src/reactivity/debounce-time.ts","../../../projects/f-flow/src/reactivity/f-channel.ts","../../../projects/f-flow/src/reactivity/f-resize-channel.ts","../../../projects/f-flow/src/reactivity/f-channel-hub.ts","../../../projects/f-flow/src/reactivity/mediator-effect.ts","../../../projects/f-flow/src/reactivity/notify-on-start.ts","../../../projects/f-flow/src/f-storage/features/listen-components-data-changed/listen-data-changes.execution.ts","../../../projects/f-flow/src/f-storage/features/listen-count-changes/listen-count-changes-request.ts","../../../projects/f-flow/src/f-storage/features/listen-count-changes/listen-count-changes.execution.ts","../../../projects/f-flow/src/f-storage/features/listen-transform-changes/listen-transform-changes.request.ts","../../../projects/f-flow/src/f-storage/features/listen-transform-changes/listen-transform-changes.execution.ts","../../../projects/f-flow/src/f-storage/features/notify-transform-changed/notify-transform-changed.request.ts","../../../projects/f-flow/src/f-storage/f-components-store.ts","../../../projects/f-flow/src/f-storage/features/notify-transform-changed/notify-transform-changed.execution.ts","../../../projects/f-flow/src/f-storage/providers.ts","../../../projects/f-flow/src/domain/f-background/add-background-to-store/add-background-to-store.execution.ts","../../../projects/f-flow/src/domain/f-background/add-pattern-to-background/add-pattern-to-background.request.ts","../../../projects/f-flow/src/domain/f-background/add-pattern-to-background/add-pattern-to-background.execution.ts","../../../projects/f-flow/src/domain/f-background/remove-background-from-store/remove-background-from-store-request.ts","../../../projects/f-flow/src/domain/f-background/remove-background-from-store/remove-background-from-store.execution.ts","../../../projects/f-flow/src/domain/f-background/set-background-transform/set-background-transform-request.ts","../../../projects/f-flow/src/domain/f-background/set-background-transform/set-background-transform.execution.ts","../../../projects/f-flow/src/domain/f-background/providers.ts","../../../projects/f-flow/src/domain/f-canvas/add-canvas-to-store/add-canvas-to-store-request.ts","../../../projects/f-flow/src/domain/f-canvas/add-canvas-to-store/add-canvas-to-store.execution.ts","../../../projects/f-flow/src/domain/f-canvas/center-group-or-node/center-group-or-node-request.ts","../../../projects/f-flow/src/domain/f-canvas/center-group-or-node/center-group-or-node.execution.ts","../../../projects/f-flow/src/domain/f-canvas/fit-to-flow/fit-to-flow-request.ts","../../../projects/f-flow/src/domain/f-canvas/fit-to-flow/fit-to-flow.execution.ts","../../../projects/f-flow/src/domain/f-canvas/get-canvas/get-canvas-request.ts","../../../projects/f-flow/src/domain/f-canvas/get-canvas/get-canvas.execution.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-position/input-canvas-position-request.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-position/input-canvas-position.execution.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-scale/input-canvas-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-scale/input-canvas-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/redraw-canvas-with-animation/redraw-canvas-with-animation-request.ts","../../../projects/f-flow/src/domain/transition-end.ts","../../../projects/f-flow/src/domain/f-canvas/redraw-canvas-with-animation/redraw-canvas-with-animation.execution.ts","../../../projects/f-flow/src/domain/f-canvas/remove-canvas-from-store/remove-canvas-from-store-request.ts","../../../projects/f-flow/src/domain/f-canvas/remove-canvas-from-store/remove-canvas-from-store.execution.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale/reset-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale/reset-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale-and-center/reset-scale-and-center-request.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale-and-center/reset-scale-and-center.execution.ts","../../../projects/f-flow/src/domain/f-canvas/update-scale/update-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/update-scale/update-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/providers.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-for-create-to-store/add-connection-for-create-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-for-create-to-store/add-connection-for-create-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-marker-to-store/add-connection-marker-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-marker-to-store/add-connection-marker-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-to-store/add-connection-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-connection-to-store/add-connection-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/add-snap-connection-to-store/add-snap-connection-to-store-request.ts","../../../projects/f-flow/src/domain/f-connection/add-snap-connection-to-store/add-snap-connection-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/create-connection-markers/create-connection-markers-request.ts","../../../projects/f-flow/src/domain/f-connection/create-connection-markers/create-connection-markers.execution.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.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-connectors/e-f-connectable-side.ts","../../../projects/f-flow/src/f-connectors/f-connector-base.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input-base.ts","../../../projects/f-flow/src/f-node/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-node/f-rotate-handle/is-rotate-handle.ts","../../../projects/f-flow/src/f-node/f-drag-handle.directive.ts","../../../projects/f-flow/src/mixins/change-selection/change-selection.ts","../../../projects/f-flow/src/mixins/change-visibility/change-visibility.ts","../../../projects/f-flow/src/f-node/f-node-base.ts","../../../projects/f-flow/src/f-node/f-group.directive.ts","../../../projects/f-flow/src/f-node/f-node.directive.ts","../../../projects/f-flow/src/f-node/is-node.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-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/domain/css-cls.ts","../../../projects/f-flow/src/f-connection/common/f-drag-handle/f-connection-drag-handle-start.component.ts","../../../projects/f-flow/src/f-connection/common/f-drag-handle/f-connection-drag-handle-end.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/domain/f-connection/calculate-connection-line-by-behavior/floating-behavior.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/fixed-center-behavior.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/fixed-outbound-behavior.ts","../../../projects/f-flow/src/domain/f-connection/calculate-connection-line-by-behavior/calculate-connection-line-by-behavior.execution.ts","../../../projects/f-flow/src/domain/f-connection/redraw-connections/redraw-connections-request.ts","../../../projects/f-flow/src/domain/get-normalized-connector-rect/get-normalized-connector-rect-request.ts","../../../projects/f-flow/src/domain/get-normalized-point/get-normalized-point-request.ts","../../../projects/f-flow/src/domain/get-normalized-point/get-normalized-point.execution.ts","../../../projects/f-flow/src/domain/get-normalized-connector-rect/get-normalized-connector-rect.execution.ts","../../../projects/f-flow/src/domain/f-connection/redraw-connections/redraw-connections.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-for-create-from-store/remove-connection-for-create-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-for-create-from-store/remove-connection-for-create-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-from-store/remove-connection-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-from-store/remove-connection-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-marker-from-store/remove-connection-marker-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-connection-marker-from-store/remove-connection-marker-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/remove-snap-connection-from-store/remove-snap-connection-from-store-request.ts","../../../projects/f-flow/src/domain/f-connection/remove-snap-connection-from-store/remove-snap-connection-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connection/providers.ts","../../../projects/f-flow/src/domain/f-connectors/add-input-to-store/add-input-to-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/add-input-to-store/add-input-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/add-outlet-to-store/add-outlet-to-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/add-outlet-to-store/add-outlet-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/add-output-to-store/add-output-to-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/add-output-to-store/add-output-to-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/calculate-closest-input/calculate-closest-input.request.ts","../../../projects/f-flow/src/domain/f-connectors/calculate-closest-input/calculate-closest-input.execution.ts","../../../projects/f-flow/src/domain/f-connectors/find-input-at-position/find-input-at-position.request.ts","../../../projects/f-flow/src/domain/f-connectors/find-input-at-position/find-input-at-position.execution.ts","../../../projects/f-flow/src/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.request.ts","../../../projects/f-flow/src/domain/f-connectors/get-connector-and-rect/get-connector-and-rect-request.ts","../../../projects/f-flow/src/domain/f-connectors/get-connector-and-rect/get-connector-and-rect.execution.ts","../../../projects/f-flow/src/domain/f-connectors/get-all-can-be-connected-inputs-and-rects/get-all-can-be-connected-inputs-and-rects.execution.ts","../../../projects/f-flow/src/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.request.ts","../../../projects/f-flow/src/domain/f-connectors/mark-all-can-be-connected-inputs/mark-all-can-be-connected-inputs.execution.ts","../../../projects/f-flow/src/domain/f-connectors/remove-input-from-store/remove-input-from-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/remove-input-from-store/remove-input-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/remove-outlet-from-store/remove-outlet-from-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/remove-outlet-from-store/remove-outlet-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/remove-output-from-store/remove-output-from-store-request.ts","../../../projects/f-flow/src/domain/f-connectors/remove-output-from-store/remove-output-from-store.execution.ts","../../../projects/f-flow/src/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.request.ts","../../../projects/f-flow/src/domain/f-connectors/unmark-all-can-be-connected-inputs/unmark-all-can-be-connected-inputs.execution.ts","../../../projects/f-flow/src/domain/f-connectors/providers.ts","../../../projects/f-flow/src/domain/f-draggable/add-dnd-to-store/add-dnd-to-store-request.ts","../../../projects/f-flow/src/domain/f-draggable/add-dnd-to-store/add-dnd-to-store.execution.ts","../../../projects/f-flow/src/domain/f-draggable/emit-selection-change-event/emit-selection-change-event-request.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/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/is-connection-under-node/f-node-intersected-with-connections.ts","../../../projects/f-flow/src/f-draggable/domain/is-connection-under-node/is-connection-under-node.request.ts","../../../projects/f-flow/src/f-draggable/domain/is-connection-under-node/is-connection-under-node.execution.ts","../../../projects/f-flow/src/f-draggable/domain/f-drag-started-event.ts","../../../projects/f-flow/src/f-draggable/domain/providers.ts","../../../projects/f-flow/src/f-draggable/f-canvas/move-finalize/f-canvas-move-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-draggable-data-context.ts","../../../projects/f-flow/src/f-draggable/f-canvas/f-canvas.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-canvas/move-finalize/f-canvas-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/f-canvas/move-preparation/f-canvas-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-canvas/move-preparation/f-canvas-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-canvas/providers.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-finalize/f-create-connection-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/get-first-connectable-output/get-first-connectable-output.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/get-first-connectable-output/get-first-connectable-output.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/f-create-connection.event.ts","../../../projects/f-flow/src/f-draggable/f-drag-handler/f-drag-handler-result.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/f-create-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-finalize/f-create-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/drag-handler-preparation/f-create-connection-drag-handler-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/drag-handler-preparation/f-create-connection-drag-handler-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/from-outlet-preparation/f-create-connection-from-outlet-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/from-outlet-preparation/f-create-connection-from-outlet-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/f-create-connection-from-output-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/from-output-preparation/f-create-connection-from-output-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/f-create-connection-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-create-connection/create-preparation/f-create-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-reassign-connection/reassign-finalize/f-reassign-connection-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-reassign-connection/f-reassign-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-reassign-connection/f-reassign-connection.event.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-reassign-connection/reassign-finalize/f-reassign-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-reassign-connection/reassign-preparation/f-reassign-connection-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-connection/f-reassign-connection/reassign-preparation/f-reassign-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-connection/providers.ts","../../../projects/f-flow/src/f-draggable/f-drop-to-group/drop-to-group-finalize/f-node-drop-to-group-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-drop-to-group/f-node-drop-to-group.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-move/connection-drag-handlers/base-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-move/connection-drag-handlers/source-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-move/connection-drag-handlers/source-target-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-move/connection-drag-handlers/target-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-limits/calculate-common-node-move-limits.request.ts","../../../projects/f-flow/src/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/domain/calculate-common-node-move-limits/calculate-common-node-move-limits.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-move/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/f-node-move/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/f-node-move/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/f-node-move/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/f-node-move/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-limits/calculate-node-move-limits.request.ts","../../../projects/f-flow/src/utils/infinity-min-max.ts","../../../projects/f-flow/src/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/domain/calculate-node-move-limits/calculate-node-move-limits.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.ts","../../../projects/f-flow/src/f-draggable/f-node-move/f-node-move.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-move/point-bounds-limiter.ts","../../../projects/f-flow/src/f-draggable/f-node-move/f-summary-node-move.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-move/create-move-nodes-drag-model-from-selection/providers.ts","../../../projects/f-flow/src/f-draggable/f-node-move/line-alignment-preparation/line-alignment-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-node-move/f-line-alignment.drag-handler.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/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-draggable/f-node-move/line-alignment-preparation/line-alignment-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-move/move-preparation/f-node-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-node-move/move-preparation/f-node-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-move/move-finalize/f-node-move-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-node-move/f-move-nodes.event.ts","../../../projects/f-flow/src/f-draggable/f-node-move/move-finalize/f-node-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-move/providers.ts","../../../projects/f-flow/src/f-draggable/f-drop-to-group/f-drop-to-group.event.ts","../../../projects/f-flow/src/f-draggable/f-drop-to-group/drop-to-group-finalize/f-node-drop-to-group-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/f-drop-to-group/drop-to-group-preparation/f-node-drop-to-group-preparation.request.ts","../../../projects/f-flow/src/f-external-item/domain/create-placeholder/f-external-item-create-placeholder.request.ts","../../../projects/f-flow/src/f-external-item/domain/create-placeholder/f-external-item-create-placeholder.execution.ts","../../../projects/f-flow/src/f-external-item/domain/create-preview/f-external-item-create-preview.request.ts","../../../projects/f-flow/src/f-external-item/domain/create-preview/f-external-item-create-preview.execution.ts","../../../projects/f-flow/src/f-external-item/domain/finalize/f-external-item-finalize.request.ts","../../../projects/f-flow/src/f-external-item/domain/f-external-item.drag-handler.ts","../../../projects/f-flow/src/f-external-item/domain/f-create-node.event.ts","../../../projects/f-flow/src/f-external-item/domain/finalize/f-external-item-finalize.execution.ts","../../../projects/f-flow/src/f-external-item/domain/preparation/f-external-item-preparation.request.ts","../../../projects/f-flow/src/f-external-item/domain/preparation/f-external-item-preparation.execution.ts","../../../projects/f-flow/src/f-external-item/domain/prevent-default-is-external-item/prevent-default-is-external-item.request.ts","../../../projects/f-flow/src/f-external-item/is-external-item.ts","../../../projects/f-flow/src/f-external-item/domain/prevent-default-is-external-item/prevent-default-is-external-item.execution.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/f-external-item.service.ts","../../../projects/f-flow/src/f-external-item/f-external-item-token.ts","../../../projects/f-flow/src/f-external-item/f-external-item.directive.ts","../../../projects/f-flow/src/f-external-item/f-external-item-placeholder.directive.ts","../../../projects/f-flow/src/f-external-item/f-external-item-preview.directive.ts","../../../projects/f-flow/src/f-external-item/providers.ts","../../../projects/f-flow/src/f-draggable/f-drop-to-group/drop-to-group-preparation/f-node-drop-to-group-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-drop-to-group/providers.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/calculate-changed-position/calculate-changed-position.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/resize-direction.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/calculate-changed-position/calculate-changed-position.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/calculate-changed-size/calculate-changed-size.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/calculate-changed-size/calculate-changed-size.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/resize-finalize/f-node-resize-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/f-node-resize.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/resize-finalize/f-node-resize-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/resize-preparation/f-node-resize-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/resize-preparation/f-node-resize-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-resize/providers.ts","../../../projects/f-flow/src/f-draggable/f-node-rotate/rotate-finalize/f-node-rotate-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-node-rotate/calculate-difference-after-rotation.ts","../../../projects/f-flow/src/f-draggable/f-node-rotate/f-node-rotate.drag-handler.ts","../../../projects/f-flow/src/f-draggable/f-node-rotate/rotate-finalize/f-node-rotate-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-rotate/rotate-preparation/f-node-rotate-preparation.request.ts","../../../projects/f-flow/src/f-draggable/f-node-rotate/rotate-preparation/f-node-rotate-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/f-node-rotate/providers.ts","../../../projects/f-flow/src/f-draggable/f-single-select/f-single-select.request.ts","../../../projects/f-flow/src/f-draggable/f-single-select/f-single-select.execution.ts","../../../projects/f-flow/src/f-draggable/f-single-select/providers.ts","../../../projects/f-flow/src/drag-toolkit/pointer-events/i-pointer-event.ts","../../../projects/f-flow/src/drag-toolkit/pointer-events/i-mouse-event.ts","../../../projects/f-flow/src/drag-toolkit/pointer-events/i-pointer-up-event.ts","../../../projects/f-flow/src/drag-toolkit/pointer-events/i-touch-down-event.ts","../../../projects/f-flow/src/drag-toolkit/pointer-events/i-touch-move-event.ts","../../../projects/f-flow/src/drag-toolkit/event.extensions.ts","../../../projects/f-flow/src/drag-toolkit/drag-and-drop-base.ts","../../../projects/f-flow/src/f-draggable/f-draggable-base.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/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/providers.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-draw-nodes/minimap-draw-nodes.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-draw-nodes/minimap-draw-nodes.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-view-box/minimap-calculate-view-box.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-view-box/minimap-calculate-view-box.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-svg-scale-and-view-box/minimap-calculate-svg-scale-and-view-box.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-calculate-svg-scale-and-view-box/minimap-calculate-svg-scale-and-view-box.execution.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.drag-handle.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.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/providers.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area-base.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area.component.ts","../../../projects/f-flow/src/f-selection-area/providers.ts","../../../projects/f-flow/src/f-draggable/providers.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.request.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items-request.ts","../../../projects/f-flow/src/domain/get-normalized-element-rect/get-normalized-element-rect-request.ts","../../../projects/f-flow/src/domain/get-normalized-element-rect/get-normalized-element-rect.execution.ts","../../../projects/f-flow/src/domain/f-selection/get-can-be-selected-items/get-can-be-selected-items.execution.ts","../../../projects/f-flow/src/domain/f-selection/get-current-selection/get-current-selection.request.ts","../../../projects/f-flow/src/domain/f-selection/get-current-selection/get-current-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/select/select.request.ts","../../../projects/f-flow/src/domain/f-selection/select/select.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.request.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.execution.ts","../../../projects/f-flow/src/domain/f-selection/providers.ts","../../../projects/f-flow/src/domain/f-draggable/emit-selection-change-event/emit-selection-change-event.execution.ts","../../../projects/f-flow/src/domain/f-draggable/end-drag-sequence/end-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/end-drag-sequence/end-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/on-pointer-move/on-pointer-move-request.ts","../../../projects/f-flow/src/domain/f-draggable/on-pointer-move/on-pointer-move.execution.ts","../../../projects/f-flow/src/domain/f-draggable/initialize-drag-sequence/initialize-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/initialize-drag-sequence/initialize-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/is-drag-started/is-drag-started-request.ts","../../../projects/f-flow/src/domain/f-draggable/is-drag-started/is-drag-started.execution.ts","../../../projects/f-flow/src/domain/f-draggable/prepare-drag-sequence/prepare-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/start-drag-sequence/start-drag-sequence-request.ts","../../../projects/f-flow/src/domain/f-draggable/start-drag-sequence/start-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/prepare-drag-sequence/prepare-drag-sequence.execution.ts","../../../projects/f-flow/src/domain/f-draggable/remove-dnd-from-store/remove-dnd-from-store-request.ts","../../../projects/f-flow/src/domain/f-draggable/remove-dnd-from-store/remove-dnd-from-store.execution.ts","../../../projects/f-flow/src/domain/f-draggable/providers.ts","../../../projects/f-flow/src/domain/f-flow/add-flow-to-store/add-flow-to-store-request.ts","../../../projects/f-flow/src/domain/f-flow/add-flow-to-store/add-flow-to-store.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow/get-flow-request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow/get-flow.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-host-element/get-flow-host-element.request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-host-element/get-flow-host-element.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state.request.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/get-flow-state.execution.ts","../../../projects/f-flow/src/domain/f-flow/get-flow-state/providers.ts","../../../projects/f-flow/src/domain/f-flow/remove-flow-from-store/remove-flow-from-store-request.ts","../../../projects/f-flow/src/domain/f-flow/remove-flow-from-store/remove-flow-from-store.execution.ts","../../../projects/f-flow/src/domain/f-flow/providers.ts","../../../projects/f-flow/src/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store-request.ts","../../../projects/f-flow/src/domain/f-line-alignment/add-line-alignment-to-store/add-line-alignment-to-store.execution.ts","../../../projects/f-flow/src/domain/f-line-alignment/remove-line-alignment-from-store/remove-line-alignment-from-store-request.ts","../../../projects/f-flow/src/domain/f-line-alignment/remove-line-alignment-from-store/remove-line-alignment-from-store.execution.ts","../../../projects/f-flow/src/domain/f-line-alignment/providers.ts","../../../projects/f-flow/src/domain/f-node/add-node-to-store/add-node-to-store-request.ts","../../../projects/f-flow/src/domain/f-node/add-node-to-store/add-node-to-store.execution.ts","../../../projects/f-flow/src/domain/f-node/calculate-input-connections/calculate-input-connections-request.ts","../../../projects/f-flow/src/domain/f-node/calculate-input-connections/calculate-input-connections.execution.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box/calculate-nodes-bounding-box.request.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box/calculate-nodes-bounding-box.execution.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.request.ts","../../../projects/f-flow/src/domain/f-node/calculate-nodes-bounding-box-normalized-position/calculate-nodes-bounding-box-normalized-position.execution.ts","../../../projects/f-flow/src/domain/f-node/calculate-output-connections/calculate-output-connections-request.ts","../../../projects/f-flow/src/domain/f-node/calculate-output-connections/calculate-output-connections.execution.ts","../../../projects/f-flow/src/domain/f-node/get-node-padding/get-node-padding.request.ts","../../../projects/f-flow/src/domain/f-node/get-node-padding/get-node-padding.execution.ts","../../../projects/f-flow/src/domain/f-node/get-nodes/get-nodes-request.ts","../../../projects/f-flow/src/domain/f-node/get-nodes/get-nodes.execution.ts","../../../projects/f-flow/src/domain/f-node/get-parent-nodes/get-parent-nodes.request.ts","../../../projects/f-flow/src/domain/f-node/get-parent-nodes/get-parent-nodes.execution.ts","../../../projects/f-flow/src/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed-request.ts","../../../projects/f-flow/src/domain/f-node/update-node-when-state-or-size-changed/update-node-when-state-or-size-changed.execution.ts","../../../projects/f-flow/src/domain/f-node/remove-node-from-store/remove-node-from-store-request.ts","../../../projects/f-flow/src/domain/f-node/remove-node-from-store/remove-node-from-store.execution.ts","../../../projects/f-flow/src/domain/f-node/providers.ts","../../../projects/f-flow/src/domain/f-zoom/add-zoom-to-store/add-zoom-to-store-request.ts","../../../projects/f-flow/src/domain/f-zoom/f-zoom-tag.ts","../../../projects/f-flow/src/domain/f-zoom/add-zoom-to-store/add-zoom-to-store.execution.ts","../../../projects/f-flow/src/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store-request.ts","../../../projects/f-flow/src/domain/f-zoom/remove-zoom-from-store/remove-zoom-from-store.execution.ts","../../../projects/f-flow/src/domain/f-zoom/reset-zoom/reset-zoom-request.ts","../../../projects/f-flow/src/domain/f-zoom/reset-zoom/reset-zoom.execution.ts","../../../projects/f-flow/src/domain/f-zoom/set-zoom/set-zoom-request.ts","../../../projects/f-flow/src/domain/f-zoom/set-zoom/set-zoom.execution.ts","../../../projects/f-flow/src/domain/f-zoom/providers.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/create-dom-element.ts","../../../projects/f-flow/src/domain/f-event-trigger.ts","../../../projects/f-flow/src/domain/is-mobile.ts","../../../projects/f-flow/src/domain/log-deprecated.ts","../../../projects/f-flow/src/domain/log-execution-time.ts","../../../projects/f-flow/src/domain/providers.ts","../../../projects/f-flow/src/f-backgroud/f-rect-pattern/f-rect-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-circle-pattern/f-circle-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-background-base.ts","../../../projects/f-flow/src/f-backgroud/f-background.component.ts","../../../projects/f-flow/src/f-backgroud/providers.ts","../../../projects/f-flow/src/f-canvas/domain/f-canvas-change.event.ts","../../../projects/f-flow/src/f-canvas/f-canvas-base.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.html","../../../projects/f-flow/src/f-canvas/providers.ts","../../../projects/f-flow/src/f-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-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/e-f-zoom-direction.ts","../../../projects/f-flow/src/f-zoom/f-zoom-base.ts","../../../projects/f-flow/src/f-zoom/f-zoom.directive.ts","../../../projects/f-flow/src/f-zoom/providers.ts","../../../projects/f-flow/src/f-flow.module.ts","../../../projects/f-flow/src/foblex-flow.ts"],"sourcesContent":["import { ITransformModel } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_BACKGROUND_PATTERN = new InjectionToken<IFBackgroundPattern>('F_BACKGROUND_PATTERN');\n\nexport interface IFBackgroundPattern {\n\n hostElement: HTMLElement | SVGElement;\n\n setTransform(transform: ITransformModel): void;\n}\n","export class GetElementRoundedRectRequest {\n static readonly fToken = Symbol('GetElementRoundedRectRequest');\n constructor(\n public element: HTMLElement | SVGElement,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetElementRoundedRectRequest } from './get-element-rounded-rect-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { RoundedRect, RectExtensions, IRect } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(GetElementRoundedRectRequest)\nexport class GetElementRoundedRectExecution implements IExecution<GetElementRoundedRectRequest, RoundedRect> {\n\n private _fBrowser = inject(BrowserService);\n\n public handle(request: GetElementRoundedRectRequest): RoundedRect {\n return this._getRoundedRect(\n RectExtensions.fromElement(request.element), request.element, this._getComputedStyle(request.element)\n );\n }\n\n private _getRoundedRect(rect: IRect, element: HTMLElement | SVGElement, styles: CSSStyleDeclaration): RoundedRect {\n return new RoundedRect(\n rect.x,\n rect.y,\n rect.width,\n rect.height,\n this._toPixels(styles.borderTopLeftRadius, element, styles.fontSize),\n this._toPixels(styles.borderTopRightRadius, element, styles.fontSize),\n this._toPixels(styles.borderBottomRightRadius, element, styles.fontSize),\n this._toPixels(styles.borderBottomLeftRadius, element, styles.fontSize)\n );\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","import { FBackgroundBase } from '../../../f-backgroud';\n\nexport class AddBackgroundToStoreRequest {\n static readonly fToken = Symbol('AddBackgroundToStoreRequest');\n\n constructor(\n public fBackground: FBackgroundBase\n ) {\n }\n}\n","export class NotifyDataChangedRequest {\n static readonly fToken = Symbol('NotifyDataChangedRequest');\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { NotifyDataChangedRequest } from './notify-data-changed-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(NotifyDataChangedRequest)\nexport class NotifyDataChangedExecution implements IExecution<NotifyDataChangedRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: NotifyDataChangedRequest): void {\n this._fComponentsStore.dataChanged();\n }\n}\n","export class ListenDataChangesRequest {\n static readonly fToken = Symbol('ListenDataChangesRequest');\n\n}\n","import { FChannelOperator } from './types';\n\nexport function debounceTime(delay: number): FChannelOperator {\n let timeoutId: any;\n return callback => {\n return () => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => callback(), delay);\n };\n };\n}\n","import { FChannelListener } from './types';\n\nexport class FChannel {\n\n protected _listeners = new Set<FChannelListener>();\n\n public notify(): void {\n this._listeners.forEach((callback) => callback());\n }\n\n public listen(callback: FChannelListener): () => void {\n this._listeners.add(callback);\n return () => this.stop(callback);\n }\n\n public stop(callback: FChannelListener): void {\n this._listeners.delete(callback);\n }\n}\n\n","import { FChannelListener } from './types';\nimport { FChannel } from './f-channel';\n\nexport class FResizeChannel extends FChannel {\n\n private _observer = new ResizeObserver(() => this.notify());\n\n private _isObserving = false;\n\n constructor(private _htmlElement: HTMLElement | SVGElement) {\n super();\n }\n\n public override listen(callback: FChannelListener): () => void {\n if (!this._isObserving) {\n this._observer.observe(this._htmlElement);\n this._isObserving = true;\n }\n return super.listen(callback);\n }\n\n public override stop(callback: FChannelListener): void {\n super.stop(callback);\n if (this._listeners.size === 0) {\n this._disconnect();\n }\n }\n\n private _disconnect(): void {\n this._observer.unobserve(this._htmlElement);\n this._observer.disconnect();\n this._isObserving = false;\n }\n}\n","import { FChannel } from './f-channel';\nimport { FChannelListener, FChannelOperator } from './types';\nimport { DestroyRef } from '@angular/core';\n\nexport class FChannelHub {\n\n private readonly _channels: FChannel[] = [];\n\n private _operators: FChannelOperator[] = [];\n\n constructor(...channels: FChannel[]) {\n this._channels = [...channels];\n }\n\n public pipe(...operators: FChannelOperator[]): FChannelHub {\n const result = new FChannelHub(...this._channels);\n result._operators = [...this._operators, ...operators];\n return result;\n }\n\n public listen(destroyRef: DestroyRef, callback: FChannelListener): void {\n let modifiedCallback = callback;\n\n this._operators.forEach(operator => {\n modifiedCallback = operator(modifiedCallback);\n });\n\n const unsubscribeCallbacks = this._channels.map(channel =>\n channel.listen(() => modifiedCallback())\n );\n\n destroyRef.onDestroy(() => {\n unsubscribeCallbacks.forEach(unsubscribe => unsubscribe());\n });\n }\n}\n","import { CreateEffectOptions, effect } from '@angular/core';\nimport { FMediator } from '@foblex/mediator';\n\nexport function mediatorEffect(fn: () => any, options?: CreateEffectOptions) {\n let isFirstRun = true;\n\n return effect(() => {\n const request = fn();\n if (isFirstRun) {\n isFirstRun = false;\n return;\n }\n options?.injector?.get(FMediator).execute(request);\n }, options);\n}\n","import { FChannelOperator } from './types';\n\nexport function notifyOnStart(): FChannelOperator {\n return callback => {\n callback();\n return callback;\n };\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ListenDataChangesRequest } from './listen-data-changes-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../../../reactivity';\n\n@Injectable()\n@FExecutionRegister(ListenDataChangesRequest)\nexport class ListenDataChangesExecution implements IExecution<ListenDataChangesRequest, FChannelHub> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: ListenDataChangesRequest): FChannelHub {\n return new FChannelHub(this._fComponentsStore.dataChanges$)\n .pipe(notifyOnStart(), debounceTime(1));\n }\n}\n","export class ListenCountChangesRequest {\n static readonly fToken = Symbol('ListenCountChangesRequest');\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ListenCountChangesRequest } from './listen-count-changes-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../../../reactivity';\n\n@Injectable()\n@FExecutionRegister(ListenCountChangesRequest)\nexport class ListenCountChangesExecution implements IExecution<ListenCountChangesRequest, FChannelHub> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: ListenCountChangesRequest): FChannelHub {\n return new FChannelHub(this._fComponentsStore.countChanges$)\n .pipe(notifyOnStart(), debounceTime(1));\n }\n}\n\n","export class ListenTransformChangesRequest {\n static readonly fToken = Symbol('ListenTransformChangesRequest');\n\n}\n","import { ListenTransformChangesRequest } from './listen-transform-changes.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../index';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FChannelHub } from '../../../reactivity';\n\n@Injectable()\n@FExecutionRegister(ListenTransformChangesRequest)\nexport class ListenTransformChangesExecution\n implements IExecution<ListenTransformChangesRequest, FChannelHub> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: ListenTransformChangesRequest): FChannelHub {\n return new FChannelHub(\n this._fComponentsStore.transformChanges$,\n this._fComponentsStore.dataChanges$,\n this._fComponentsStore.countChanges$\n );\n }\n}\n","export class NotifyTransformChangedRequest {\n static readonly fToken = Symbol('NotifyTransformChangedRequest');\n\n}\n","import { Injectable } from '@angular/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';\nimport { FChannel } from '../reactivity';\nimport { FLineAlignmentBase } from '../f-line-alignment';\nimport { IMap } from '../domain';\n\n@Injectable()\nexport class FComponentsStore {\n\n public readonly transformChanges$ = new FChannel();\n\n public readonly dataChanges$ = new FChannel();\n\n public readonly countChanges$ = new FChannel();\n\n public get flowHost(): HTMLElement {\n return this.fFlow?.hostElement!;\n }\n\n public fComponents: IMap<any> = {};\n\n public fFlow: FFlowBase | undefined;\n\n public fCanvas: FCanvasBase | undefined;\n\n public fBackground: FBackgroundBase | undefined;\n\n public fNodes: FNodeBase[] = [];\n\n public fConnections: FConnectionBase[] = [];\n\n public fTempConnection: FConnectionBase | undefined;\n\n public fSnapConnection: FConnectionBase | undefined;\n\n public fMarkers: FMarkerBase[] = [];\n\n public fOutputs: FConnectorBase[] = [];\n\n public fInputs: FConnectorBase[] = [];\n\n public fOutlets: FConnectorBase[] = [];\n\n public fDraggable: FDraggableBase | undefined;\n\n public fLineAlignment: FLineAlignmentBase | undefined;\n\n public addComponent<T>(collection: T[], component: T): void {\n collection.push(component);\n this.countChanged();\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.countChanged();\n }\n }\n\n public countChanged(): void {\n this.countChanges$.notify();\n }\n\n public dataChanged(): void {\n this.dataChanges$.notify();\n }\n\n public transformChanged(): void {\n this.transformChanges$.notify();\n }\n}\n","import { NotifyTransformChangedRequest } from './notify-transform-changed.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-components-store';\n\n@Injectable()\n@FExecutionRegister(NotifyTransformChangedRequest)\nexport class NotifyTransformChangedExecution\n implements IExecution<NotifyTransformChangedRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: NotifyTransformChangedRequest): void {\n this._fComponentsStore.transformChanged();\n }\n}\n","import { NotifyDataChangedExecution } from './features/notify-data-changed';\nimport { ListenDataChangesExecution } from './features/listen-components-data-changed';\nimport { FComponentsStore } from './f-components-store';\nimport { ListenCountChangesExecution } from './features/listen-count-changes';\nimport { ListenTransformChangesExecution } from './features/listen-transform-changes';\nimport { NotifyTransformChangedExecution } from './features/notify-transform-changed';\n\nexport const F_STORAGE_PROVIDERS = [\n\n NotifyDataChangedExecution,\n\n ListenCountChangesExecution,\n\n ListenDataChangesExecution,\n\n ListenTransformChangesExecution,\n\n NotifyTransformChangedExecution,\n\n FComponentsStore,\n];\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddBackgroundToStoreRequest } from './add-background-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddBackgroundToStoreRequest)\nexport class AddBackgroundToStoreExecution implements IExecution<AddBackgroundToStoreRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddBackgroundToStoreRequest): void {\n this._fComponentsStore.fBackground = request.fBackground;\n }\n}\n","import { IFBackgroundPattern } from '../../../f-backgroud';\n\nexport class AddPatternToBackgroundRequest {\n static readonly fToken = Symbol('AddPatternToBackgroundRequest');\n constructor(\n public fPattern: IFBackgroundPattern | undefined\n ) {\n }\n}\n","import { TransformModelExtensions } from '@foblex/2d';\nimport { AddPatternToBackgroundRequest } from './add-pattern-to-background.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { createSVGElement } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { FBackgroundBase } from '../../../f-backgroud';\n\nlet uniqueId: number = 0;\n\n@Injectable()\n@FExecutionRegister(AddPatternToBackgroundRequest)\nexport class AddPatternToBackgroundExecution implements IExecution<AddPatternToBackgroundRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fBrowser = inject(BrowserService);\n\n private get _fBackground(): FBackgroundBase {\n return this._fComponentsStore.fBackground!;\n }\n\n public handle(request: AddPatternToBackgroundRequest): void {\n const children = request.fPattern?.hostElement.getElementsByTagName('pattern') || [];\n const pattern = children.length ? children[ 0 ] : undefined;\n if (pattern) {\n const defs = createSVGElement('defs', this._fBrowser);\n pattern.id = 'f-background-pattern-' + uniqueId++;\n request.fPattern?.hostElement.remove();\n defs.appendChild(pattern);\n this._fBackground.hostElement?.firstChild?.appendChild(defs);\n const rect = createSVGElement('rect', this._fBrowser);\n rect.setAttribute('fill', 'url(#' + pattern.id + ')');\n rect.setAttribute('width', '100%');\n rect.setAttribute('height', '100%');\n this._fBackground.hostElement.firstChild?.appendChild(rect);\n const transform = this._fComponentsStore.fCanvas?.transform || TransformModelExtensions.default();\n request.fPattern?.setTransform(transform);\n }\n }\n}\n","import { FBackgroundBase } from '../../../f-backgroud';\n\nexport class RemoveBackgroundFromStoreRequest {\n static readonly fToken = Symbol('RemoveBackgroundFromStoreRequest');\n constructor(\n public fConnection: FBackgroundBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveBackgroundFromStoreRequest } from './remove-background-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveBackgroundFromStoreRequest)\nexport class RemoveBackgroundFromStoreExecution implements IExecution<RemoveBackgroundFromStoreRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveBackgroundFromStoreRequest): void {\n this._fComponentsStore.fBackground = undefined;\n }\n}\n","import {ITransformModel} from '@foblex/2d';\n\nexport class SetBackgroundTransformRequest {\n static readonly fToken = Symbol('SetBackgroundTransformRequest');\n\n constructor(\n public fTransform: ITransformModel\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { SetBackgroundTransformRequest } from './set-background-transform-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(SetBackgroundTransformRequest)\nexport class SetBackgroundTransformExecution implements IExecution<SetBackgroundTransformRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: SetBackgroundTransformRequest): void {\n this._fComponentsStore.fBackground?.setTransform(request.fTransform);\n }\n}\n","import { AddPatternToBackgroundExecution } from './add-pattern-to-background';\nimport { AddBackgroundToStoreExecution } from './add-background-to-store';\nimport { RemoveBackgroundFromStoreExecution } from './remove-background-from-store';\nimport { SetBackgroundTransformExecution } from './set-background-transform';\n\nexport const F_BACKGROUND_FEATURES = [\n\n AddBackgroundToStoreExecution,\n\n AddPatternToBackgroundExecution,\n\n RemoveBackgroundFromStoreExecution,\n\n SetBackgroundTransformExecution\n];\n","import { FCanvasBase } from '../../../f-canvas';\n\nexport class AddCanvasToStoreRequest {\n static readonly fToken = Symbol('AddCanvasToStoreRequest');\n constructor(\n public fCanvas: FCanvasBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddCanvasToStoreRequest } from './add-canvas-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddCanvasToStoreRequest)\nexport class AddCanvasToStoreExecution implements IExecution<AddCanvasToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddCanvasToStoreRequest): void {\n this._fComponentsStore.fCanvas = request.fCanvas;\n }\n}\n","export class CenterGroupOrNodeRequest {\n static readonly fToken = Symbol('CenterGroupOrNodeRequest');\n constructor(\n public id: string,\n public animated: boolean\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { CenterGroupOrNodeRequest } from './center-group-or-node-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { RedrawCanvasWithAnimationRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(CenterGroupOrNodeRequest)\nexport class CenterGroupOrNodeExecution implements IExecution<CenterGroupOrNodeRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private _fMediator = inject(FMediator);\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 this._fMediator.execute(new RedrawCanvasWithAnimationRequest(request.animated));\n }\n\n public toCenter(fNodeRect: IRect, fFlowRect: IRect, position: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = PointExtensions.initialize(\n (fFlowRect.width - fNodeRect.width) / 2 - position.x * this.transform.scale,\n (fFlowRect.height - fNodeRect.height) / 2 - position.y * this.transform.scale\n );\n }\n\n private getNode(id: string): FNodeBase | undefined {\n return this._fComponentsStore.fNodes.find((x) => x.fId === id);\n }\n\n private getNodeRect(fNode: FNodeBase): IRect {\n return RectExtensions.fromElement(fNode.hostElement);\n }\n\n private getFlowRect(): IRect {\n return RectExtensions.fromElement(this._fComponentsStore.fFlow!.hostElement);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FitToFlowRequest {\n static readonly fToken = Symbol('FitToFlowRequest');\n constructor(\n public toCenter: IPoint,\n public animated: boolean\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FitToFlowRequest } from './fit-to-flow-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { CalculateNodesBoundingBoxRequest, RedrawCanvasWithAnimationRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(FitToFlowRequest)\nexport class FitToFlowExecution implements IExecution<FitToFlowRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private _fMediator = inject(FMediator);\n\n public handle(request: FitToFlowRequest): void {\n const fNodesRect = this._fMediator.execute<IRect | null>(new CalculateNodesBoundingBoxRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n\n this.fitToParent(\n fNodesRect,\n RectExtensions.fromElement(this._fComponentsStore.fFlow!.hostElement),\n this._fComponentsStore.fNodes.map((x) => x.position),\n request.toCenter\n );\n\n this._fMediator.execute(new RedrawCanvasWithAnimationRequest(request.animated));\n }\n\n public fitToParent(rect: IRect, parentRect: IRect, points: IPoint[], toCenter: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n const itemsContainerWidth = (rect.width / this.transform.scale) + toCenter.x;\n const itemsContainerHeight = (rect.height / this.transform.scale) + toCenter.y;\n if (\n (itemsContainerWidth > parentRect.width || itemsContainerHeight > parentRect.height) ||\n itemsContainerWidth < parentRect.width && itemsContainerHeight < parentRect.height\n ) {\n this.transform.scale = Math.min(parentRect.width / itemsContainerWidth, parentRect.height / itemsContainerHeight);\n }\n\n const newX = (parentRect.width - itemsContainerWidth * this.transform.scale) / 2 - this.transform.position.x * this.transform.scale;\n const newY = (parentRect.height - itemsContainerHeight * this.transform.scale) / 2 - this.transform.position.y * this.transform.scale;\n\n this.transform.position = PointExtensions.initialize(newX + (toCenter.x / 2) * this.transform.scale, newY + (toCenter.y / 2) * this.transform.scale)\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","export class GetCanvasRequest {\n static readonly fToken = Symbol('GetCanvasRequest');\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetCanvasRequest } from './get-canvas-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FCanvasBase } from '../../../f-canvas';\n\n@Injectable()\n@FExecutionRegister(GetCanvasRequest)\nexport class GetCanvasExecution implements IExecution<GetCanvasRequest, FCanvasBase> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetCanvasRequest): FCanvasBase {\n const result = this._fComponentsStore.fCanvas;\n if (!result) {\n throw new Error(`Canvas not found in store`);\n }\n return result;\n }\n}\n","import { IPoint, ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasPositionRequest {\n static readonly fToken = Symbol('InputCanvasPositionRequest');\n constructor(\n public transform: ITransformModel,\n public position: IPoint | undefined\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { InputCanvasPositionRequest } from './input-canvas-position-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasPositionRequest)\nexport class InputCanvasPositionExecution implements IExecution<InputCanvasPositionRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: InputCanvasPositionRequest): void {\n if (!request.position) {\n return;\n }\n const position = PointExtensions.sum(request.transform.position, request.transform.scaledPosition);\n if (!PointExtensions.isEqual(position, request.position)) {\n request.transform.position = request.position;\n request.transform.scaledPosition = PointExtensions.initialize();\n this._fComponentsStore.fCanvas?.redraw();\n }\n return void 0;\n }\n}\n","import { ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasScaleRequest {\n static readonly fToken = Symbol('InputCanvasScaleRequest');\n constructor(\n public transform: ITransformModel,\n public scale: number | undefined\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { InputCanvasScaleRequest } from './input-canvas-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasScaleRequest)\nexport class InputCanvasScaleExecution implements IExecution<InputCanvasScaleRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: InputCanvasScaleRequest): void {\n if (!request.scale && request.scale !== 0) {\n return;\n }\n request.transform.scale = request.scale;\n this._fComponentsStore.fCanvas?.redraw();\n }\n}\n","export class RedrawCanvasWithAnimationRequest {\n static readonly fToken = Symbol('RedrawCanvasWithAnimationRequest');\n constructor(\n public animated: boolean\n ) {\n }\n}\n","export function transitionEnd(element: HTMLElement, callback: (event: TransitionEvent) => void): void {\n const onTransitionEnd = (event: TransitionEvent) => {\n if (event.propertyName === 'transform') {\n element.removeEventListener('transitionend', onTransitionEnd);\n callback(event);\n }\n };\n\n element.addEventListener('transitionend', onTransitionEnd);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { RedrawCanvasWithAnimationRequest } from './redraw-canvas-with-animation-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { transitionEnd } from '../../transition-end';\n\n@Injectable()\n@FExecutionRegister(RedrawCanvasWithAnimationRequest)\nexport class RedrawCanvasWithAnimationExecution implements IExecution<RedrawCanvasWithAnimationRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fCanvasElement(): HTMLElement {\n return this._fComponentsStore.fCanvas!.hostElement;\n }\n\n public handle(request: RedrawCanvasWithAnimationRequest): void {\n request.animated ? this._redrawWithAnimation() : this._redraw();\n this._fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n\n private _redrawWithAnimation(): void {\n this._fComponentsStore.fCanvas!.redrawWithAnimation();\n transitionEnd(this._fCanvasElement, () => this._fComponentsStore.dataChanged());\n }\n\n private _redraw(): void {\n this._fComponentsStore.fCanvas!.redraw();\n this._fComponentsStore.dataChanged();\n }\n}\n","export class RemoveCanvasFromStoreRequest {\n static readonly fToken = Symbol('RemoveCanvasFromStoreRequest');\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveCanvasFromStoreRequest } from './remove-canvas-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveCanvasFromStoreRequest)\nexport class RemoveCanvasFromStoreExecution implements IExecution<RemoveCanvasFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveCanvasFromStoreRequest): void {\n this._fComponentsStore.fCanvas = undefined;\n }\n}\n","export class ResetScaleRequest {\n static readonly fToken = Symbol('ResetScaleRequest');\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ResetScaleRequest } from './reset-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(ResetScaleRequest)\nexport class ResetScaleExecution implements IExecution<ResetScaleRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: ResetScaleRequest): void {\n this.transform.scale = 1;\n this.transform.scaledPosition = PointExtensions.initialize();\n }\n}\n","export class ResetScaleAndCenterRequest {\n static readonly fToken = Symbol('ResetScaleAndCenterRequest');\n constructor(\n public animated: boolean\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ResetScaleAndCenterRequest } from './reset-scale-and-center-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { CalculateNodesBoundingBoxRequest, RedrawCanvasWithAnimationRequest } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(ResetScaleAndCenterRequest)\nexport class ResetScaleAndCenterExecution implements IExecution<ResetScaleAndCenterRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: ResetScaleAndCenterRequest): void {\n const fNodesRect = this._fMediator.execute<IRect | null>(new CalculateNodesBoundingBoxRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n this._oneToOneCentering(\n fNodesRect,\n RectExtensions.fromElement(this._fComponentsStore.fFlow!.hostElement),\n this._fComponentsStore.fNodes.map((x) => x.position)\n );\n\n this._fMediator.execute(new RedrawCanvasWithAnimationRequest(request.animated));\n }\n\n public _oneToOneCentering(rect: IRect, parentRect: IRect, points: IPoint[]): void {\n this._transform.scaledPosition = PointExtensions.initialize();\n this._transform.position = this._getZeroPositionWithoutScale(points);\n\n const newX = (parentRect.width - rect.width / this._transform.scale) / 2 - this._transform.position.x;\n const newY = (parentRect.height - rect.height / this._transform.scale) / 2 - this._transform.position.y;\n\n this._transform.scale = 1;\n this._transform.position = PointExtensions.initialize(newX, newY);\n }\n\n private _getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class UpdateScaleRequest {\n static readonly fToken = Symbol('UpdateScaleRequest');\n constructor(\n public scale: number,\n public toPosition: IPoint\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { UpdateScaleRequest } from './update-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(UpdateScaleRequest)\nexport class UpdateScaleExecution implements IExecution<UpdateScaleRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: UpdateScaleRequest): void {\n if (request.scale !== this.transform.scale) {\n\n const summaryPosition = PointExtensions.sum(this.transform.scaledPosition, this.transform.position);\n\n const newX = request.toPosition.x - (request.toPosition.x - summaryPosition.x) * request.scale / this.transform.scale;\n const newY = request.toPosition.y - (request.toPosition.y - summaryPosition.y) * request.scale / this.transform.scale;\n\n this.transform.scale = request.scale;\n this.transform.scaledPosition = PointExtensions.sub(PointExtensions.initialize(newX, newY), this.transform.position);\n }\n }\n}\n","import { CenterGroupOrNodeExecution } from './center-group-or-node';\nimport { FitToFlowExecution } from './fit-to-flow';\nimport { ResetScaleAndCenterExecution } from './reset-scale-and-center';\nimport { ResetScaleExecution } from './reset-scale';\nimport { UpdateScaleExecution } from './update-scale';\nimport { InputCanvasPositionExecution } from './input-canvas-position';\nimport { InputCanvasScaleExecution } from './input-canvas-scale';\nimport { AddCanvasToStoreExecution } from './add-canvas-to-store';\nimport { RemoveCanvasFromStoreExecution } from './remove-canvas-from-store';\nimport { GetCanvasExecution } from './get-canvas';\nimport { RedrawCanvasWithAnimationExecution } from './redraw-canvas-with-animation';\n\nexport const F_CANVAS_FEATURES = [\n\n AddCanvasToStoreExecution,\n\n CenterGroupOrNodeExecution,\n\n FitToFlowExecution,\n\n GetCanvasExecution,\n\n InputCanvasPositionExecution,\n\n InputCanvasScaleExecution,\n\n RedrawCanvasWithAnimationExecution,\n\n RemoveCanvasFromStoreExecution,\n\n ResetScaleExecution,\n\n ResetScaleAndCenterExecution,\n\n UpdateScaleExecution\n];\n","import {FConnectionBase} from '../../../f-connection';\n\nexport class AddConnectionForCreateToStoreRequest {\n static readonly fToken = Symbol('AddConnectionForCreateToStoreRequest');\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddConnectionForCreateToStoreRequest } from './add-connection-for-create-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddConnectionForCreateToStoreRequest)\nexport class AddConnectionForCreateToStoreExecution implements IExecution<AddConnectionForCreateToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddConnectionForCreateToStoreRequest): void {\n this._fComponentsStore.fTempConnection = request.fConnection;\n }\n}\n","import {FMarkerBase} from '../../../f-connection';\n\nexport class AddConnectionMarkerToStoreRequest {\n static readonly fToken = Symbol('AddConnectionMarkerToStoreRequest');\n\n constructor(\n public fComponent: FMarkerBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddConnectionMarkerToStoreRequest } from './add-connection-marker-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddConnectionMarkerToStoreRequest)\nexport class AddConnectionMarkerToStoreExecution implements IExecution<AddConnectionMarkerToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddConnectionMarkerToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fMarkers, request.fComponent);\n }\n}\n","import {FConnectionBase} from '../../../f-connection';\n\nexport class AddConnectionToStoreRequest {\n static readonly fToken = Symbol('AddConnectionToStoreRequest');\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddConnectionToStoreRequest } from './add-connection-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddConnectionToStoreRequest)\nexport class AddConnectionToStoreExecution implements IExecution<AddConnectionToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddConnectionToStoreRequest): void {\n this._fComponentsStore.fConnections.push(request.fConnection);\n this._fComponentsStore.dataChanged();\n }\n}\n","import {FConnectionBase} from '../../../f-connection';\n\nexport class AddSnapConnectionToStoreRequest {\n static readonly fToken = Symbol('AddSnapConnectionToStoreRequest');\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddSnapConnectionToStoreRequest } from './add-snap-connection-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddSnapConnectionToStoreRequest)\nexport class AddSnapConnectionToStoreExecution implements IExecution<AddSnapConnectionToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddSnapConnectionToStoreRequest): void {\n this._fComponentsStore.fSnapConnection = request.fConnection;\n }\n}\n","import { FConnectionBase } from '../../../f-connection';\n\nexport class CreateConnectionMarkersRequest {\n static readonly fToken = Symbol('CreateConnectionMarkersRequest');\n\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';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionMarkersRequest)\nexport class CreateConnectionMarkersExecution implements IExecution<CreateConnectionMarkersRequest, void> {\n\n constructor(\n private fBrowser: BrowserService,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: CreateConnectionMarkersRequest): void {\n const element: SVGDefsElement = createSVGElement('defs', this.fBrowser);\n const fConnection = request.fConnection;\n\n this.getMarkers(fConnection).forEach((marker) => {\n\n const markerElement = this.createMarkerElement(marker, fConnection.fId);\n\n const clone = marker.hostElement.cloneNode(true) as HTMLElement;\n clone.setAttribute('height', `${ marker.height }`);\n clone.setAttribute('width', `${ marker.width }`);\n clone.removeAttribute('markerUnits');\n clone.style.display = 'unset';\n markerElement.append(clone);\n\n element.append(markerElement);\n });\n\n fConnection.fDefs.nativeElement.innerHTML = element.innerHTML;\n\n this.makeSafariCompatible(fConnection);\n }\n\n public getMarkers(fConnection: FConnectionBase): FMarkerBase[] {\n return this.fComponentsStore.fMarkers.filter((x) => fConnection.hostElement.contains(x.hostElement));\n }\n\n // Safari does not support markers on path elements if markers are defined after the path element\n private makeSafariCompatible(fConnection: FConnectionBase): void {\n fConnection.fPath.hostElement.replaceWith(fConnection.fPath.hostElement);\n }\n\n private createMarkerElement(marker: FMarkerBase, fConnectionId: string): SVGElement {\n const markerElement = createSVGElement('marker', this.fBrowser);\n\n markerElement.setAttribute('id', normalizeDomElementId(marker.type + '-' + fConnectionId));\n\n markerElement.setAttribute('markerHeight', `${ marker.height }`);\n markerElement.setAttribute('markerWidth', `${ marker.width }`);\n markerElement.setAttribute('orient', `${ marker.orient }`);\n markerElement.setAttribute('refX', `${ marker.refX }`);\n markerElement.setAttribute('refY', `${ marker.refY }`);\n markerElement.setAttribute('markerUnits', `${ marker.markerUnits }`);\n\n return markerElement;\n }\n}\n\nfunction createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","import { EFConnectionBehavior } from '../../../f-connection';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { IRoundedRect } from '@foblex/2d';\n\nexport class CalculateConnectionLineByBehaviorRequest {\n static readonly fToken = Symbol('CalculateConnectionLineByBehaviorRequest');\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","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 static readonly fToken = Symbol('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 static readonly fToken = Symbol('CalculateConnectionCenterRequest');\n\n constructor(\n public points: IPoint[],\n ) {\n }\n}\n","export enum EFConnectableSide {\n\n LEFT = 'left',\n\n TOP = 'top',\n\n RIGHT = 'right',\n\n BOTTOM = 'bottom',\n\n AUTO = 'auto',\n}\n","import { EFConnectableSide } from './e-f-connectable-side';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport abstract class FConnectorBase implements IHasHostElement {\n\n public abstract fId: string;\n\n public abstract fNodeId: string;\n\n public abstract disabled: boolean;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract canBeConnected: boolean;\n\n private _isConnected: boolean = false;\n\n public get isConnected(): boolean {\n return this._isConnected;\n }\n\n public toConnector: FConnectorBase[] = [];\n\n public isSelfConnectable: boolean = true;\n\n public fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setConnected(toConnector: FConnectorBase): void {\n this._isConnected = true;\n this.toConnector.push(toConnector);\n }\n\n public resetConnected(): void {\n this._isConnected = false;\n this.toConnector = [];\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 get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export enum EFResizeHandleType {\n\n LEFT = 'left',\n\n LEFT_TOP = 'left-top',\n\n TOP = 'top',\n\n RIGHT_TOP = 'right-top',\n\n RIGHT = 'right',\n\n RIGHT_BOTTOM = 'right-bottom',\n\n BOTTOM = 'bottom',\n\n LEFT_BOTTOM = 'left-bottom',\n}\n","import {\n computed,\n Directive, input\n} from \"@angular/core\";\nimport { EFResizeHandleType } from './e-f-resize-handle-type';\nimport { castToEnum } from '@foblex/utils';\n\n@Directive({\n selector: \"[fResizeHandle]\",\n host: {\n class: `f-resize-handle f-component`,\n '[attr.data-f-resize-handle-type]': 'type().toUpperCase()',\n '[class]': 'class()'\n },\n})\nexport class FResizeHandleDirective {\n\n public type = input.required<EFResizeHandleType, unknown>({\n alias: 'fResizeHandleType',\n transform: (x) => castToEnum(x, 'fResizeHandleType', EFResizeHandleType)\n });\n\n protected class = computed(() => {\n return `f-resize-handle-${ EFResizeHandleType[ this.type().toUpperCase() as keyof typeof EFResizeHandleType ] }`;\n })\n}\n","import {\n Directive,\n} from \"@angular/core\";\n\n@Directive({\n selector: \"[fRotateHandle]\",\n host: {\n class: `f-rotate-handle f-component`,\n },\n})\nexport class FRotateHandleDirective {}\n","import { isClosestElementHasClass } from '@foblex/utils';\n\nexport function isRotateHandle(element: HTMLElement): boolean {\n return isClosestElementHasClass(element, '.f-rotate-handle');\n}\n","import {\n Directive\n} from \"@angular/core\";\n\n@Directive({\n selector: \"[fDragHandle]\",\n host: {\n class: \"f-drag-handle f-component\"\n },\n})\nexport class FDragHandleDirective {}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { ISelectable } from './i-selectable';\n\nexport const F_SELECTED_CLASS = 'f-selected';\n\ntype CanChangeSelectionConstructor = Constructor<ISelectable> & AbstractConstructor<ISelectable>;\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 unmarkAsSelected(): void {\n this.unmarkChildrenAsSelected?.();\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public markAsSelected(): void {\n this.markChildrenAsSelected?.();\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 markChildrenAsSelected(): void {\n }\n\n public unmarkChildrenAsSelected(): void {\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { ICanChangeVisibility } from './i-can-change-visibility';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { AbstractConstructor, Constructor } from '../constructor';\n\ntype CanChangeVisibilityConstructor = Constructor<ICanChangeVisibility> & AbstractConstructor<ICanChangeVisibility>;\n\nexport function mixinChangeVisibility<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T;\nexport function mixinChangeVisibility<T extends Constructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T {\n return class extends base {\n\n public show(): void {\n this.hostElement.style.display = \"unset\";\n }\n\n public hide(): void {\n this.hostElement.style.display = \"none\";\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport {\n FConnectorBase\n} from '../f-connectors';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { ISelectable, mixinChangeSelection } from '../mixins';\nimport { FChannel } from '../reactivity';\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 ISelectable, IHasHostElement {\n\n public abstract override fId: string;\n\n public abstract fParentId: string | null | undefined;\n\n public readonly stateChanges = new FChannel();\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 rotateChange: EventEmitter<number>;\n\n public abstract rotate: number;\n\n protected _rotate: number = 0;\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 fMinimapClass: string[] | string;\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 connectors: FConnectorBase[] = [];\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) rotate(${ this.rotate }deg)`);\n }\n\n public updatePosition(position: IPoint): void {\n this._position = position;\n }\n\n public updateRotate(rotate: number): void {\n this._rotate = rotate;\n }\n\n public updateSize(value: ISize): void {\n this._size = value;\n }\n\n public setClass(className: string): void {\n this.hostElement.classList.add(className);\n }\n\n public removeClass(className: string): void {\n this.hostElement.classList.remove(className);\n }\n\n public addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.refresh();\n }\n\n public removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.refresh();\n }\n}\n","import {\n AfterViewInit, booleanAttribute, DestroyRef,\n Directive,\n ElementRef,\n EventEmitter, inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions, SizeExtensions } from '@foblex/2d';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { NotifyTransformChangedRequest } from '../f-storage';\nimport { FMediator } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { AddNodeToStoreRequest, UpdateNodeWhenStateOrSizeChangedRequest, RemoveNodeFromStoreRequest } from '../domain';\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 readonly _destroyRef = inject(DestroyRef);\n private readonly _fMediator = inject(FMediator);\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 if(!PointExtensions.isEqual(this._position, value)) {\n this._position = value;\n this.redraw();\n this.refresh();\n }\n }\n public override get position(): IPoint {\n return this._position;\n }\n @Output('fGroupPositionChange')\n public override positionChange = new EventEmitter<IPoint>();\n\n\n @Input('fGroupRotate')\n public override set rotate(value: number) {\n if(this._rotate !== value) {\n this._rotate = value;\n this.redraw();\n this.refresh();\n }\n }\n public override get rotate(): number {\n return this._rotate;\n }\n\n @Output('fGroupRotateChange')\n public override rotateChange = new EventEmitter<number>();\n\n\n @Input('fGroupSize')\n public override set size(value: ISize) {\n if(!this.size || !SizeExtensions.isEqual(this._size!, value)) {\n this._size = value;\n this.redraw();\n this.refresh()\n }\n }\n public override get size(): ISize {\n return this._size!;\n }\n @Output('fGroupSizeChange')\n public override sizeChange = new EventEmitter<IRect>();\n\n @Input({ alias: 'fGroupDraggingDisabled', transform: booleanAttribute })\n public override fDraggingDisabled: boolean = false;\n\n @Input({ alias: 'fGroupSelectionDisabled', transform: booleanAttribute })\n public override fSelectionDisabled: boolean = false;\n\n @Input({ transform: booleanAttribute })\n public override fIncludePadding: boolean = true;\n\n @Input({ transform: booleanAttribute })\n public override fConnectOnNode: boolean = true;\n\n @Input()\n public override fMinimapClass: string[] | string = [];\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\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\n this._fMediator.execute<void>(new AddNodeToStoreRequest(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.execute(new NotifyTransformChangedRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this._listenStateSizeChanges();\n }\n\n private _listenStateSizeChanges(): void {\n this._fMediator.execute<void>(new UpdateNodeWhenStateOrSizeChangedRequest(this, this._destroyRef));\n }\n\n public refresh(): void {\n this.stateChanges.notify();\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute<void>(new RemoveNodeFromStoreRequest(this));\n }\n}\n","import {\n AfterViewInit, booleanAttribute, DestroyRef,\n Directive,\n ElementRef,\n EventEmitter, inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions, SizeExtensions } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\nimport { NotifyTransformChangedRequest } from '../f-storage';\nimport { FMediator } from '@foblex/mediator';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { AddNodeToStoreRequest, UpdateNodeWhenStateOrSizeChangedRequest, RemoveNodeFromStoreRequest } from '../domain';\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 readonly _destroyRef = inject(DestroyRef);\n private readonly _fMediator = inject(FMediator);\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 if(!PointExtensions.isEqual(this._position, value)) {\n this._position = value;\n this.redraw();\n this.refresh();\n }\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 if(!this.size || !SizeExtensions.isEqual(this._size!, value)) {\n this._size = value;\n this.redraw();\n this.refresh()\n }\n }\n\n @Input('fNodeRotate')\n public override set rotate(value: number) {\n if(this._rotate !== value) {\n this._rotate = value;\n this.redraw();\n this.refresh();\n }\n }\n public override get rotate(): number {\n return this._rotate;\n }\n\n @Output('fNodeRotateChange')\n public override rotateChange = new EventEmitter<number>();\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({ alias: 'fNodeDraggingDisabled', transform: booleanAttribute })\n public override fDraggingDisabled: boolean = false;\n\n @Input({ alias: 'fNodeSelectionDisabled', transform: booleanAttribute })\n public override fSelectionDisabled: boolean = false;\n\n @Input({ transform: booleanAttribute })\n public override fIncludePadding: boolean = true;\n\n //Add ability to connect to first connectable input if node is at pointer position\n @Input({ transform: booleanAttribute })\n public override fConnectOnNode: boolean = true;\n\n @Input()\n public override fMinimapClass: string[] | string = [];\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\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\n this._fMediator.execute<void>(new AddNodeToStoreRequest(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.execute(new NotifyTransformChangedRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this._listenStateSizeChanges();\n }\n\n private _listenStateSizeChanges(): void {\n this._fMediator.execute<void>(new UpdateNodeWhenStateOrSizeChangedRequest(this, this._destroyRef));\n }\n\n public override refresh(): void {\n this.stateChanges.notify();\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute<void>(new RemoveNodeFromStoreRequest(this));\n }\n}\n","export function isNode(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNode]');\n}\n\n","import { FNodeDirective } from './f-node.directive';\nimport { FResizeHandleDirective } from './f-resize-handle';\nimport { FGroupDirective } from './f-group.directive';\nimport { FDragHandleDirective } from './f-drag-handle.directive';\nimport { FRotateHandleDirective } from './f-rotate-handle';\n\nexport const F_NODE_PROVIDERS = [\n\n FGroupDirective,\n\n FNodeDirective,\n\n FDragHandleDirective,\n\n FResizeHandleDirective,\n\n FRotateHandleDirective,\n];\n","import {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit, SimpleChanges\n} from '@angular/core';\nimport { F_NODE_INPUT, FNodeInputBase } from './f-node-input-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { F_NODE } from '../../f-node';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddInputToStoreRequest, F_CSS_CLASS, RemoveInputFromStoreRequest } from '../../domain';\nimport { FConnectorBase } from '../f-connector-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeInput]\",\n exportAs: 'fNodeInput',\n host: {\n '[attr.data-f-input-id]': 'fId',\n class: \"f-component f-node-input\",\n '[class.f-node-input-multiple]': 'multiple',\n '[class.f-node-input-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_INPUT, useExisting: FNodeInputDirective } ],\n})\nexport class FNodeInputDirective extends FNodeInputBase implements OnInit, OnChanges, OnDestroy {\n\n private _elementReference = inject(ElementRef);\n private _fMediator = inject(FMediator);\n private _fNode = inject(F_NODE);\n\n @Input('fInputId')\n public override fId: any = `f-node-input-${ uniqueId++ }`;\n\n @Input('fInputMultiple')\n public override multiple: boolean = true;\n\n @Input({ alias: 'fInputDisabled', transform: booleanAttribute })\n public override disabled: boolean = false;\n\n @Input({\n alias: 'fInputConnectableSide',\n transform: (value: unknown) => castToEnum(value, 'fInputConnectableSide', EFConnectableSide)\n })\n public override userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override get fNodeId(): string {\n return this._fNode.fId;\n }\n\n public get hostElement(): HTMLElement | SVGElement {\n return this._elementReference.nativeElement;\n }\n\n public ngOnInit() {\n this._fMediator.execute(new AddInputToStoreRequest(this));\n this._fNode.addConnector(this);\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[ 'userFConnectableSide' ]) {\n this._fNode.refresh();\n }\n }\n\n public override setConnected(toConnector: FConnectorBase): void {\n super.setConnected(toConnector);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_CONNECTED, true);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_NOT_CONNECTABLE, !this.canBeConnected);\n }\n\n public override resetConnected(): void {\n super.resetConnected();\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_CONNECTED, false);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_NOT_CONNECTABLE, !this.canBeConnected);\n }\n\n public ngOnDestroy(): void {\n this._fNode.removeConnector(this);\n this._fMediator.execute(new RemoveInputFromStoreRequest(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 private outputs: FConnectorBase[] = [];\n\n public get canBeConnected(): boolean {\n return !this.disabled && this.outputs.some((output) => output.canBeConnected);\n }\n\n public abstract canBeConnectedInputs: string[];\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 { booleanAttribute, Directive, ElementRef, inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { F_NODE_OUTLET, FNodeOutletBase } from './f-node-outlet-base';\nimport { F_NODE } from '../../f-node';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { FMediator } from '@foblex/mediator';\nimport { AddOutletToStoreRequest, RemoveOutletFromStoreRequest } from '../../domain';\nimport { FConnectorBase } from '../f-connector-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutlet]\",\n exportAs: 'fNodeOutlet',\n host: {\n '[attr.data-f-outlet-id]': 'fId',\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 private _elementReference = inject(ElementRef);\n private _fMediator = inject(FMediator);\n /// Inject FNodeBase to check if the outlet inside the node\n private _fNode = inject(F_NODE);\n\n @Input('fOutletId')\n public override fId: string = `f-node-outlet-${ uniqueId++ }`;\n\n @Input({ alias: 'fOutletDisabled', transform: booleanAttribute })\n public override disabled: boolean = false;\n\n public override fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n @Input()\n public override isConnectionFromOutlet: boolean = false;\n\n @Input({ alias: 'fCanBeConnectedInputs' })\n public override canBeConnectedInputs: string[] = [];\n\n public override get fNodeId(): string {\n return this._fNode.fId;\n }\n\n public get hostElement(): HTMLElement | SVGElement {\n return this._elementReference.nativeElement;\n }\n\n public ngOnInit() {\n this._fMediator.execute(new AddOutletToStoreRequest(this));\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveOutletFromStoreRequest(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 override get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n\n public abstract canBeConnectedInputs: string[];\n}\n","export function isNodeOutput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutput]');\n}\n","import {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit, SimpleChanges\n} from '@angular/core';\nimport { FNodeOutputBase, F_NODE_OUTPUT } from './f-node-output-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { F_NODE } from '../../f-node';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddOutputToStoreRequest, F_CSS_CLASS, RemoveOutputFromStoreRequest } from '../../domain';\nimport { FConnectorBase } from '../f-connector-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutput]\",\n exportAs: 'fNodeOutput',\n host: {\n '[attr.data-f-output-id]': 'fId',\n class: \"f-component f-node-output\",\n '[class.f-node-output-multiple]': 'multiple',\n '[class.f-node-output-disabled]': 'disabled',\n '[class.f-node-output-self-connectable]': 'isSelfConnectable',\n },\n providers: [ { provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective } ],\n})\nexport class FNodeOutputDirective extends FNodeOutputBase implements OnInit, OnChanges, OnDestroy {\n\n private _elementReference = inject(ElementRef);\n private _fMediator = inject(FMediator);\n private _fNode = inject(F_NODE);\n\n @Input('fOutputId')\n public override fId: string = `f-node-output-${ uniqueId++ }`;\n\n @Input('fOutputMultiple')\n public override multiple: boolean = false;\n\n @Input({ alias: 'fOutputDisabled', transform: booleanAttribute })\n public override disabled: boolean = false;\n\n @Input({\n alias: 'fOutputConnectableSide',\n transform: (value: unknown) => castToEnum(value, 'fOutputConnectableSide', EFConnectableSide)\n })\n public override userFConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n @Input()\n public override isSelfConnectable: boolean = true;\n\n @Input({ alias: 'fCanBeConnectedInputs' })\n public override canBeConnectedInputs: string[] = [];\n\n public override get fNodeId(): string {\n return this._fNode.fId;\n }\n\n public get hostElement(): HTMLElement | SVGElement {\n return this._elementReference.nativeElement;\n }\n\n public ngOnInit() {\n this._fMediator.execute(new AddOutputToStoreRequest(this));\n this._fNode.addConnector(this);\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[ 'userFConnectableSide' ]) {\n this._fNode.refresh();\n }\n }\n\n public override setConnected(toConnector: FConnectorBase): void {\n super.setConnected(toConnector);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_CONNECTED, true);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_NOT_CONNECTABLE, !this.canBeConnected);\n }\n\n public override resetConnected(): void {\n super.resetConnected();\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_CONNECTED, false);\n this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.OUTPUT_NOT_CONNECTABLE, !this.canBeConnected);\n }\n\n public ngOnDestroy(): void {\n this._fNode.removeConnector(this);\n this._fMediator.execute(new RemoveOutputFromStoreRequest(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 { 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('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 public redraw(): void {\n this.hostElement.setAttribute('startOffset', this.base.fTextStartOffset || '50%');\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 || '12px';\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 this.textPathDirective.redraw();\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","export const F_CSS_CLASS = {\n\n DRAG_AND_DROP: {\n\n DRAGGING: 'f-dragging',\n\n CONNECTIONS_DRAGGING: 'f-connections-dragging',\n },\n\n CONNECTOR: {\n\n OUTPUT_CONNECTED: 'f-node-output-connected',\n\n OUTPUT_NOT_CONNECTABLE: 'f-node-output-not-connectable',\n\n INPUT_CONNECTED: 'f-node-input-connected',\n\n INPUT_NOT_CONNECTABLE: 'f-node-input-not-connectable',\n\n INPUT_CAN_BE_CONNECTED_TO: 'f-node-input-can-be-connected-to',\n },\n\n CONNECTION: {\n\n DRAG_HANDLE: 'f-connection-drag-handle',\n\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, inject\n} from \"@angular/core\";\nimport { IPoint } from '@foblex/2d';\nimport { IHasHostElement } from '../../../i-has-host-element';\nimport { F_CSS_CLASS } from '../../../domain/css-cls';\n\n@Component({\n selector: \"circle[f-connection-drag-handle-start]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'class'\n }\n})\nexport class FConnectionDragHandleStartComponent implements IHasHostElement {\n private readonly _elementReference = inject(ElementRef);\n\n protected readonly class: string = F_CSS_CLASS.CONNECTION.DRAG_HANDLE;\n\n public point!: IPoint;\n\n public get hostElement(): SVGCircleElement {\n return this._elementReference.nativeElement;\n }\n\n public redraw(penultimatePoint: IPoint, startPoint: IPoint): void {\n this.point = this._calculateCircleCenter(penultimatePoint, startPoint, 8);\n this.hostElement.setAttribute('cx', this.point.x.toString());\n this.hostElement.setAttribute('cy', this.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 {\n ChangeDetectionStrategy,\n Component, ElementRef, inject\n} from \"@angular/core\";\nimport { IPoint } from '@foblex/2d';\nimport { IHasHostElement } from '../../../i-has-host-element';\nimport { F_CSS_CLASS } from '../../../domain/css-cls';\n\n@Component({\n selector: \"circle[f-connection-drag-handle-end]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'class'\n }\n})\nexport class FConnectionDragHandleEndComponent implements IHasHostElement {\n private readonly _elementReference = inject(ElementRef);\n\n protected readonly class: string = F_CSS_CLASS.CONNECTION.DRAG_HANDLE;\n\n public point!: IPoint;\n\n public get hostElement(): SVGCircleElement {\n return this._elementReference.nativeElement;\n }\n\n public redraw(penultimatePoint: IPoint, endPoint: IPoint): void {\n this.point = this._calculateCircleCenter(penultimatePoint, endPoint, 8);\n this.hostElement.setAttribute('cx', this.point.x.toString());\n this.hostElement.setAttribute('cy', this.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<SVGPathElement> {\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 styleUrls: ['./f-connection-path.component.scss'],\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 styleUrls: ['./f-connection-selection.component.scss'],\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 { 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 { FConnectionDragHandleEndComponent } from './f-drag-handle';\nimport { FConnectionSelectionComponent } from './f-selection';\nimport { IConnectionText } from './f-connection-text';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport {\n ISelectable, 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, ISelectable,\n ICanChangeVisibility,\n 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 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 | string;\n\n public abstract fDefs: ElementRef<SVGDefsElement>;\n\n public abstract fPath: IConnectionPath;\n\n public abstract fGradient: IConnectionGradient;\n\n public abstract fDragHandle: FConnectionDragHandleEndComponent;\n\n public abstract fSelection: FConnectionSelectionComponent;\n\n public abstract fTextComponent: IConnectionText;\n\n public abstract fText: string;\n\n public abstract fTextStartOffset: 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({ point1, point2 }: ILine, sourceSide: EFConnectableSide, targetSide: EFConnectableSide): void {\n this.line = LineExtensions.initialize(point1, point2);\n const pathResult = this.getPathResult(point1, sourceSide, point2, targetSide);\n this.path = pathResult.path;\n this.penultimatePoint = pathResult.penultimatePoint || point1;\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 markChildrenAsSelected(): void {\n this.fPath.select();\n }\n\n public override unmarkChildrenAsSelected(): 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,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleEndComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { NotifyDataChangedRequest } 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';\nimport { FMediator } from '@foblex/mediator';\nimport { AddConnectionForCreateToStoreRequest, RemoveConnectionForCreateFromStoreRequest } from '../../domain';\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, OnChanges, OnDestroy {\n\n public override fId: string = `f-connection-for-create-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n public override fTextStartOffset: string = '';\n\n @Input()\n public override fStartColor: string = 'black';\n\n @Input()\n public override fEndColor: string = 'black';\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n @Input({ transform: numberAttribute })\n public override fRadius: number = 8;\n\n @Input({ transform: numberAttribute })\n public override fOffset: number = 12;\n\n @Input({ transform: (value: unknown) => castToEnum(value, 'fBehavior', EFConnectionBehavior) })\n public override fBehavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override fType: EFConnectionType | string = EFConnectionType.STRAIGHT;\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleEndComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleEndComponent;\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 private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddConnectionForCreateToStoreRequest(this));\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnChanges(): void {\n this._fMediator.execute(new NotifyDataChangedRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveConnectionForCreateFromStoreRequest());\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-end></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 booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChild,\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH,\n CONNECTION_TEXT,\n EFConnectionBehavior,\n EFConnectionType,\n FConnectionDragHandleEndComponent,\n FConnectionSelectionComponent,\n IConnectionGradient,\n IConnectionPath,\n IConnectionText,\n} from '../common';\nimport { NotifyDataChangedRequest } from '../../f-storage';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddConnectionToStoreRequest, RemoveConnectionFromStoreRequest } from '../../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection\",\n exportAs: 'fComponent',\n templateUrl: \"./f-connection.component.html\",\n styleUrls: [ \"./f-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'fId',\n class: \"f-component f-connection\",\n '[class.f-connection-selection-disabled]': 'fSelectionDisabled',\n '[class.f-connection-reassign-disabled]': 'fDraggingDisabled',\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionComponent } ],\n})\nexport class FConnectionComponent\n extends FConnectionBase implements OnInit, OnChanges, OnDestroy {\n\n @Input('fConnectionId')\n public override fId: string = `f-connection-${ uniqueId++ }`;\n\n @Input()\n public override fText: string = '';\n\n @Input()\n public override fTextStartOffset: string = '';\n\n @Input()\n public override fStartColor: string = 'black';\n\n @Input()\n public override fEndColor: string = 'black';\n\n @Input()\n public override fOutputId: any = '';\n\n @Input()\n public override fInputId: any = '';\n\n @Input({ transform: numberAttribute })\n public override fRadius: number = 8;\n\n @Input({ transform: numberAttribute })\n public override fOffset: number = 12;\n\n @Input({ transform: (value: unknown) => castToEnum(value, 'fBehavior', EFConnectionBehavior) })\n public override fBehavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override fType: EFConnectionType | string = EFConnectionType.STRAIGHT;\n\n @Input({ alias: 'fReassignDisabled', transform: booleanAttribute })\n public override fDraggingDisabled: boolean = false;\n\n @Input({ transform: booleanAttribute })\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleEndComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleEndComponent;\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 private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddConnectionToStoreRequest(this));\n }\n\n public ngOnChanges(): void {\n this._fMediator.execute(new NotifyDataChangedRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveConnectionFromStoreRequest(this));\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"overflow: visible; display: block; vertical-align: middle;\">\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle-end></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, inject, Input, OnDestroy, OnInit\n} from \"@angular/core\";\nimport { F_MARKER, FMarkerBase } from './f-marker-base';\nimport { EFMarkerType } from './e-f-marker-type';\nimport { FMediator } from '@foblex/mediator';\nimport { AddConnectionMarkerToStoreRequest, RemoveConnectionMarkerFromStoreRequest } from '../../domain';\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 private _fMediator = inject(FMediator);\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n ) {\n super();\n this.hostElement.style.display = 'none';\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddConnectionMarkerToStoreRequest(this));\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveConnectionMarkerFromStoreRequest(this));\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n ElementRef,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleEndComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { NotifyDataChangedRequest } from '../../f-storage';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\nimport { FMediator } from '@foblex/mediator';\nimport { AddSnapConnectionToStoreRequest, RemoveSnapConnectionFromStoreRequest } from '../../domain';\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, OnChanges, OnDestroy {\n\n public override fId: string = `f-snap-connection-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n public override fTextStartOffset: string = '';\n\n @Input()\n public override fStartColor: string = 'black';\n\n @Input()\n public override fEndColor: string = 'black';\n\n @Input({ transform: numberAttribute })\n public fSnapThreshold: number = 20;\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n @Input({ transform: numberAttribute })\n public override fRadius: number = 8;\n\n @Input({ transform: numberAttribute })\n public override fOffset: number = 12;\n\n @Input({ transform: (value: unknown) => castToEnum(value, 'fBehavior', EFConnectionBehavior) })\n public override fBehavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override fType: EFConnectionType | string = EFConnectionType.STRAIGHT;\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleEndComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleEndComponent;\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 private _fMediator = inject(FMediator);\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddSnapConnectionToStoreRequest(this));\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnChanges(): void {\n this._fMediator.execute(new NotifyDataChangedRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveSnapConnectionFromStoreRequest());\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-end></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 FConnectionDragHandleEndComponent, FConnectionDragHandleStartComponent,\n FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent,\n FConnectionTextComponent,\n FConnectionTextPathDirective\n} from './common';\nimport { FConnectionComponent } from './f-connection';\nimport { FConnectionCenterDirective } from './f-connection-center';\nimport { FConnectionForCreateComponent } from './f-connection-for-create';\nimport { FMarkerDirective } from './f-marker';\nimport { FSnapConnectionComponent } from './f-snap-connection';\n\nexport const F_CONNECTION_PROVIDERS = [\n\n FConnectionTextComponent,\n FConnectionTextPathDirective,\n FConnectionDragHandleStartComponent,\n FConnectionDragHandleEndComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent,\n FConnectionSelectionComponent,\n\n FConnectionComponent,\n FConnectionCenterDirective,\n FConnectionForCreateComponent,\n FMarkerDirective,\n FSnapConnectionComponent\n];\n","import { GetIntersections, ILine, IPoint } from '@foblex/2d';\nimport { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\nimport { calculatePositionAfterRotation } from '../../../f-draggable/f-node-rotate/calculate-difference-after-rotation';\n\nexport function floatingBehavior(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return _getIntersectionsLine(\n _fromRoundedRectIntersections(payload),\n _toRoundedRectIntersections(payload),\n payload\n );\n}\n\nfunction _fromRoundedRectIntersections(payload: CalculateConnectionLineByBehaviorRequest) {\n return GetIntersections.getRoundedRectIntersections(\n payload.outputRect.gravityCenter, payload.inputRect.gravityCenter, payload.outputRect\n )[ 0 ];\n}\n\nfunction _toRoundedRectIntersections(payload: CalculateConnectionLineByBehaviorRequest) {\n return GetIntersections.getRoundedRectIntersections(\n payload.inputRect.gravityCenter, payload.outputRect.gravityCenter, payload.inputRect\n )[ 0 ];\n}\n\nfunction _getIntersectionsLine(from: IPoint, to: IPoint, payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return {\n point1: from ? from : payload.outputRect.gravityCenter,\n point2: to ? to : payload.inputRect.gravityCenter\n };\n}\n","import { ILine, Line } from '@foblex/2d';\nimport { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\n\nexport function fixedCenterBehavior(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return {\n point1: payload.outputRect.gravityCenter,\n point2: payload.inputRect.gravityCenter\n };\n}\n","import { ILine, IPoint, IRect } from '@foblex/2d';\nimport { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\nimport { EFConnectableSide } from '../../../f-connectors';\n\nexport function fixedOutboundBehavior(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return {\n point1: _getPosition(\n payload.outputRect,\n payload.outputSide === EFConnectableSide.AUTO ? EFConnectableSide.BOTTOM : payload.outputSide\n ),\n point2: _getPosition(\n payload.inputRect,\n payload.inputSide === EFConnectableSide.AUTO ? EFConnectableSide.TOP : payload.inputSide\n )\n };\n}\n\nfunction _getPosition(rect: IRect, side: EFConnectableSide): IPoint {\n switch (side) {\n case EFConnectableSide.TOP:\n return { x: rect.x + rect.width / 2, y: rect.y };\n case EFConnectableSide.BOTTOM:\n return { x: rect.x + rect.width / 2, y: rect.y + rect.height };\n case EFConnectableSide.LEFT:\n return { x: rect.x, y: rect.y + rect.height / 2 };\n case EFConnectableSide.RIGHT:\n return { x: rect.x + rect.width, y: rect.y + rect.height / 2 };\n default:\n throw new Error(`Unknown side: ${ side }`);\n }\n}\n\n\n\n\n","import { CalculateConnectionLineByBehaviorRequest } from './calculate-connection-line-by-behavior.request';\nimport { Injectable } from '@angular/core';\nimport { EFConnectionBehavior } from '../../../f-connection';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ILine } from '@foblex/2d';\nimport { floatingBehavior } from './floating-behavior';\nimport { fixedCenterBehavior } from './fixed-center-behavior';\nimport { fixedOutboundBehavior } from './fixed-outbound-behavior';\n\n@Injectable()\n@FExecutionRegister(CalculateConnectionLineByBehaviorRequest)\nexport class CalculateConnectionLineByBehaviorExecution\n implements IExecution<CalculateConnectionLineByBehaviorRequest, ILine> {\n\n private _handlers = {\n\n [ EFConnectionBehavior.FLOATING.toString() ]: floatingBehavior,\n\n [ EFConnectionBehavior.FIXED_CENTER.toString() ]: fixedCenterBehavior,\n\n [ EFConnectionBehavior.FIXED.toString() ]: fixedOutboundBehavior,\n }\n\n public handle(payload: CalculateConnectionLineByBehaviorRequest): ILine {\n return this._handlers[ payload.behavior ](payload);\n }\n}\n\n","export class RedrawConnectionsRequest {\n static readonly fToken = Symbol('RedrawConnectionsRequest');\n\n}\n","export class GetNormalizedConnectorRectRequest {\n static readonly fToken = Symbol('GetNormalizedConnectorRectRequest');\n\n constructor(\n public element: HTMLElement | SVGElement,\n ) {\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class GetNormalizedPointRequest {\n static readonly fToken = Symbol('GetNormalizedPointRequest');\n\n constructor(\n public position: IPoint\n ) {\n }\n}\n","import { IPoint, ITransformModel, Point } from '@foblex/2d';\nimport { inject, Injectable } from '@angular/core';\nimport { GetNormalizedPointRequest } from './get-normalized-point-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedPointRequest)\nexport class GetNormalizedPointExecution implements IExecution<GetNormalizedPointRequest, IPoint> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n // BrowserWindow\n // +------------------------------------------+\n // | F-Flow |\n // | +----------------------------------+ |\n // | | F-Canvas (scale: 0.5) | |\n // | | +-------------------------+ | |\n // | | | | | |\n // | | | Element | | |\n // | | | System: (500,300) | | |\n // | | | Normalize: (200,150) | | |\n // | | | | | |\n // | | | | | |\n // | | +-------------------------+ | |\n // | | | |\n // | +----------------------------------+ |\n // | |\n // +------------------------------------------+\n // Transform from the browser window to the canvas coordinates:\n public handle(request: GetNormalizedPointRequest): IPoint {\n return Point.fromPoint(request.position)\n .elementTransform(this._fComponentsStore.flowHost)\n .sub(this._transform.scaledPosition)\n .sub(this._transform.position)\n .div(this._transform.scale);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetNormalizedConnectorRectRequest } from './get-normalized-connector-rect-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport {\n IRoundedRect,\n RoundedRect,\n IPoint,\n ISize,\n SizeExtensions,\n ITransformModel,\n} from '@foblex/2d';\nimport { GetElementRoundedRectRequest } from '../get-element-rounded-rect';\nimport {GetNormalizedPointRequest} from \"../get-normalized-point\";\n\n@Injectable()\n@FExecutionRegister(GetNormalizedConnectorRectRequest)\nexport class GetNormalizedConnectorRectExecution implements IExecution<GetNormalizedConnectorRectRequest, IRoundedRect> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fMediator = inject(FMediator);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: GetNormalizedConnectorRectRequest): IRoundedRect {\n const systemRect = this._getElementRoundedRect(request);\n const position = this._normalizePosition(systemRect);\n const unscaledSize = this._unscaleSize(systemRect);\n const unscaledRect = this._getUnscaledRect(position, unscaledSize, systemRect)\n\n const offsetSize = this._getOffsetSize(request.element, unscaledSize);\n return RoundedRect.fromCenter(unscaledRect, offsetSize.width, offsetSize.height);\n }\n\n private _getElementRoundedRect(request: GetNormalizedConnectorRectRequest): IRoundedRect {\n return this._fMediator.execute<IRoundedRect>(\n new GetElementRoundedRectRequest(request.element)\n );\n }\n\n private _normalizePosition(rect: IRoundedRect): IPoint {\n return this._fMediator.execute(new GetNormalizedPointRequest(rect));\n }\n\n private _unscaleSize(rect: IRoundedRect): ISize {\n return SizeExtensions.initialize(rect.width / this._transform.scale, rect.height / this._transform.scale);\n }\n\n private _getUnscaledRect(position: IPoint, size: ISize, rect: IRoundedRect): IRoundedRect {\n return new RoundedRect(\n position.x, position.y, size.width, size.height,\n rect.radius1, rect.radius2, rect.radius3, rect.radius4\n )\n }\n\n private _getOffsetSize(element: HTMLElement | SVGElement, size: ISize): ISize {\n return SizeExtensions.offsetFromElement(element) || size\n }\n}\n","import {ILine, IRoundedRect} from '@foblex/2d';\nimport {inject, Injectable} from '@angular/core';\nimport {RedrawConnectionsRequest} from './redraw-connections-request';\nimport {FComponentsStore} from '../../../f-storage';\nimport {CalculateConnectionLineByBehaviorRequest} from '../calculate-connection-line-by-behavior';\nimport {FConnectorBase} from '../../../f-connectors';\nimport {FConnectionBase} from '../../../f-connection';\nimport {FExecutionRegister, FMediator, IExecution} from '@foblex/mediator';\nimport {CreateConnectionMarkersRequest} from '../create-connection-markers';\nimport {GetNormalizedConnectorRectRequest} from \"../../get-normalized-connector-rect\";\n\n@Injectable()\n@FExecutionRegister(RedrawConnectionsRequest)\nexport class RedrawConnectionsExecution implements IExecution<RedrawConnectionsRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RedrawConnectionsRequest): void {\n this._resetConnectors();\n\n if (this._fComponentsStore.fTempConnection) {\n this._setMarkers(this._fComponentsStore.fTempConnection);\n }\n\n if (this._fComponentsStore.fSnapConnection) {\n this._setMarkers(this._fComponentsStore.fSnapConnection);\n }\n\n this._fComponentsStore.fConnections.forEach((x) => {\n this._setupConnection(this._getOutput(x.fOutputId), this._getInput(x.fInputId), x);\n });\n }\n\n private _getOutput(id: string): FConnectorBase {\n const result = this._fComponentsStore.fOutputs.find((x) => x.fId === id)!;\n if (!result) {\n throw new Error(`Output with id ${id} not found`);\n }\n return result;\n }\n\n private _getInput(id: string): FConnectorBase {\n const result = this._fComponentsStore.fInputs.find((x) => x.fId === id)!;\n if (!result) {\n throw new Error(`Input with id ${id} not found`);\n }\n return result;\n }\n\n private _resetConnectors(): void {\n this._fComponentsStore.fOutputs.forEach((x) => x.resetConnected());\n this._fComponentsStore.fInputs.forEach((x) => x.resetConnected());\n }\n\n private _setupConnection(fOutput: FConnectorBase, fInput: FConnectorBase, fConnection: FConnectionBase): void {\n fOutput.setConnected(fInput);\n fInput.setConnected(fOutput);\n\n const line = this._getLine(fOutput, fInput, fConnection);\n\n this._setMarkers(fConnection);\n\n fConnection.setLine(line, fOutput.fConnectableSide, fInput.fConnectableSide);\n\n fConnection.initialize();\n fConnection.isSelected() ? fConnection.markAsSelected() : null;\n }\n\n private _getLine(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): ILine {\n return this._fMediator.execute(new CalculateConnectionLineByBehaviorRequest(\n this._fMediator.execute<IRoundedRect>(new GetNormalizedConnectorRectRequest(output.hostElement)),\n this._fMediator.execute<IRoundedRect>(new GetNormalizedConnectorRectRequest(input.hostElement)),\n connection.fBehavior,\n output.fConnectableSide,\n input.fConnectableSide\n )\n );\n }\n\n private _setMarkers(connection: FConnectionBase): void {\n this._fMediator.execute(\n new CreateConnectionMarkersRequest(connection)\n );\n }\n}\n\n","export class RemoveConnectionForCreateFromStoreRequest {\n static readonly fToken = Symbol('RemoveConnectionForCreateFromStoreRequest');\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveConnectionForCreateFromStoreRequest } from './remove-connection-for-create-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveConnectionForCreateFromStoreRequest)\nexport class RemoveConnectionForCreateFromStoreExecution implements IExecution<RemoveConnectionForCreateFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveConnectionForCreateFromStoreRequest): void {\n this._fComponentsStore.fTempConnection = undefined;\n }\n}\n","import {FConnectionBase} from '../../../f-connection';\n\nexport class RemoveConnectionFromStoreRequest {\n static readonly fToken = Symbol('RemoveConnectionFromStoreRequest');\n\n constructor(\n public fConnection: FConnectionBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveConnectionFromStoreRequest } from './remove-connection-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FConnectionBase } from '../../../f-connection/common';\n\n@Injectable()\n@FExecutionRegister(RemoveConnectionFromStoreRequest)\nexport class RemoveConnectionFromStoreExecution implements IExecution<RemoveConnectionFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveConnectionFromStoreRequest): void {\n this._fComponentsStore.fConnections.splice(this._getIndexOfConnection(request.fConnection), 1);\n this._fComponentsStore.dataChanged();\n }\n\n private _getIndexOfConnection(fConnection: FConnectionBase): number {\n const result = this._fComponentsStore.fConnections.indexOf(fConnection);\n if (result === -1) {\n throw new Error(`Connection not found in store`);\n }\n return result;\n }\n}\n","import {FMarkerBase} from '../../../f-connection';\n\nexport class RemoveConnectionMarkerFromStoreRequest {\n static readonly fToken = Symbol('RemoveConnectionMarkerFromStoreRequest');\n\n constructor(\n public fComponent: FMarkerBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveConnectionMarkerFromStoreRequest } from './remove-connection-marker-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveConnectionMarkerFromStoreRequest)\nexport class RemoveConnectionMarkerFromStoreExecution implements IExecution<RemoveConnectionMarkerFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveConnectionMarkerFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fMarkers, request.fComponent);\n }\n}\n","export class RemoveSnapConnectionFromStoreRequest {\n static readonly fToken = Symbol('RemoveSnapConnectionFromStoreRequest');\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveSnapConnectionFromStoreRequest } from './remove-snap-connection-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveSnapConnectionFromStoreRequest)\nexport class RemoveSnapConnectionFromStoreExecution implements IExecution<RemoveSnapConnectionFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveSnapConnectionFromStoreRequest): void {\n this._fComponentsStore.fSnapConnection = undefined;\n }\n}\n","import { CreateConnectionMarkersExecution } from './create-connection-markers';\nimport { AddConnectionForCreateToStoreExecution } from './add-connection-for-create-to-store';\nimport { AddConnectionToStoreExecution } from './add-connection-to-store';\nimport { AddSnapConnectionToStoreExecution } from './add-snap-connection-to-store';\nimport { RemoveConnectionForCreateFromStoreExecution } from './remove-connection-for-create-from-store';\nimport { RemoveConnectionFromStoreExecution } from './remove-connection-from-store';\nimport { RemoveSnapConnectionFromStoreExecution } from './remove-snap-connection-from-store';\nimport { AddConnectionMarkerToStoreExecution } from './add-connection-marker-to-store';\nimport { RemoveConnectionMarkerFromStoreExecution } from './remove-connection-marker-from-store';\nimport { RedrawConnectionsExecution } from './redraw-connections';\nimport { CalculateConnectionLineByBehaviorExecution } from './calculate-connection-line-by-behavior';\n\nexport const F_CONNECTION_FEATURES = [\n\n AddConnectionForCreateToStoreExecution,\n\n AddConnectionMarkerToStoreExecution,\n\n AddConnectionToStoreExecution,\n\n AddSnapConnectionToStoreExecution,\n\n CreateConnectionMarkersExecution,\n\n CalculateConnectionLineByBehaviorExecution,\n\n RedrawConnectionsExecution,\n\n RemoveConnectionForCreateFromStoreExecution,\n\n RemoveConnectionFromStoreExecution,\n\n RemoveConnectionMarkerFromStoreExecution,\n\n RemoveSnapConnectionFromStoreExecution\n];\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class AddInputToStoreRequest {\n static readonly fToken = Symbol('AddInputToStoreRequest');\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddInputToStoreRequest } from './add-input-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddInputToStoreRequest)\nexport class AddInputToStoreExecution implements IExecution<AddInputToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddInputToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fInputs, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class AddOutletToStoreRequest {\n static readonly fToken = Symbol('AddOutletToStoreRequest');\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddOutletToStoreRequest } from './add-outlet-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddOutletToStoreRequest)\nexport class AddOutletToStoreExecution implements IExecution<AddOutletToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddOutletToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fOutlets, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class AddOutputToStoreRequest {\n static readonly fToken = Symbol('AddOutputToStoreRequest');\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddOutputToStoreRequest } from './add-output-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddOutputToStoreRequest)\nexport class AddOutputToStoreExecution implements IExecution<AddOutputToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddOutputToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fOutputs, request.fComponent);\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { IConnectorAndRect } from '../index';\n\nexport class CalculateClosestInputRequest {\n static readonly fToken = Symbol('CalculateClosestInputRequest');\n constructor(\n public position: IPoint,\n public canBeConnectedInputs: IConnectorAndRect[],\n ) {\n }\n}\n","import { CalculateClosestInputRequest } from './calculate-closest-input.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { IClosestInput } from '../i-closest-input';\nimport { IConnectorAndRect } from '../index';\n\n@Injectable()\n@FExecutionRegister(CalculateClosestInputRequest)\nexport class CalculateClosestInputExecution\n implements IExecution<CalculateClosestInputRequest, IClosestInput | undefined> {\n\n public handle(payload: CalculateClosestInputRequest): IClosestInput | undefined {\n let result: IConnectorAndRect | undefined;\n let minDistance = Infinity;\n\n for (const element of payload.canBeConnectedInputs) {\n const distance = this._distanceToRectangle(payload.position, element);\n\n if (distance < minDistance) {\n minDistance = distance;\n result = element;\n }\n }\n\n return result ? {\n ...result,\n distance: minDistance,\n } : undefined;\n }\n\n private _distanceToRectangle(point: IPoint, inputWithRect: IConnectorAndRect): number {\n const closestX = this._clamp(point.x, inputWithRect.fRect.x, inputWithRect.fRect.x + inputWithRect.fRect.width);\n const closestY = this._clamp(point.y, inputWithRect.fRect.y, inputWithRect.fRect.y + inputWithRect.fRect.height);\n\n const dx = point.x - closestX;\n const dy = point.y - closestY;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n private _clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n }\n}\n","import { IPoint, IRoundedRect } from '@foblex/2d';\nimport { IConnectorAndRect } from '../i-connector-and-rect';\n\nexport class FindInputAtPositionRequest {\n static readonly fToken = Symbol('FindInputAtPositionRequest');\n constructor(\n public pointerPosition: IPoint,\n public toConnectorRect: IRoundedRect,\n public canBeConnectedInputs: IConnectorAndRect[],\n ) {\n }\n}\n","import { IPoint, ITransformModel, Point, RectExtensions } from '@foblex/2d';\nimport { FindInputAtPositionRequest } from './find-input-at-position.request';\nimport { inject, Injectable } from '@angular/core';\nimport { BrowserService } from '@foblex/platform';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IClosestInput } from '../i-closest-input';\nimport { CalculateClosestInputRequest } from '../calculate-closest-input';\nimport { FSnapConnectionComponent } from '../../../f-connection';\nimport { IConnectorAndRect } from '../i-connector-and-rect';\n\n@Injectable()\n@FExecutionRegister(FindInputAtPositionRequest)\nexport class FindInputAtPositionExecution\n implements IExecution<FindInputAtPositionRequest, FConnectorBase | undefined> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fBrowser = inject(BrowserService);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private get _fNodes(): FNodeBase[] {\n return this._fComponentsStore.fNodes;\n }\n\n private get _fSnapConnection(): FSnapConnectionComponent | undefined {\n return this._fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n public handle(payload: FindInputAtPositionRequest): FConnectorBase | undefined {\n const fInputs = this._findInputsAtPosition(payload,);\n return fInputs.length > 0 ? fInputs[ 0 ] : undefined;\n }\n\n private _findInputsAtPosition(request: FindInputAtPositionRequest): FConnectorBase[] {\n const result: FConnectorBase[] = [];\n\n result.push(...this._getConnectableInputsAtPosition(request));\n\n const fClosestInput = this._calculateClosetInput(request);\n if (fClosestInput) {\n result.unshift(fClosestInput.fConnector);\n }\n\n const fInput = this._getFirstConnectableInputOfNodeAtPosition(request);\n if (fInput) {\n result.push(fInput);\n }\n\n return result;\n }\n\n private _getConnectableInputsAtPosition(request: FindInputAtPositionRequest): FConnectorBase[] {\n return request.canBeConnectedInputs.filter((x) => {\n return RectExtensions.isIncludePoint(x.fRect, this._getPointInFlow(request.pointerPosition));\n }).map((x) => x.fConnector);\n }\n\n private _getPointInFlow(position: IPoint): IPoint {\n return Point.fromPoint(position)\n .elementTransform(this._fHost)\n .sub(this._transform.scaledPosition).sub(this._transform.position)\n .div(this._transform.scale);\n }\n\n //if the closest input is valid, return it\n private _calculateClosetInput(request: FindInputAtPositionRequest): IClosestInput | undefined {\n if (!this._fSnapConnection) {\n return undefined;\n }\n\n const fClosestInput = this._fMediator.execute<IClosestInput | undefined>(\n new CalculateClosestInputRequest(this._getPointInFlow(request.pointerPosition), request.canBeConnectedInputs)\n );\n\n return this._isValidClosestInput(fClosestInput) ? fClosestInput : undefined;\n }\n\n private _isValidClosestInput(fClosestInput: IClosestInput | undefined): boolean {\n return !!fClosestInput && fClosestInput.distance < this._fSnapConnection!.fSnapThreshold;\n }\n\n //if node placed in position and fConnectOnNode is true, return the first connectable input of the node\n private _getFirstConnectableInputOfNodeAtPosition(request: FindInputAtPositionRequest): FConnectorBase | undefined {\n return this._getElementsFromPoint(request.pointerPosition)\n .map((x) => this._findConnectableNode(x))\n .filter((x) => !!x)\n .map((x) => this._findFirstConnectableInputOfNode(request.canBeConnectedInputs, x))\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 private _findConnectableNode(element: HTMLElement): FNodeBase | undefined {\n return this._fNodes.find((x) => x.isContains(element) && x.fConnectOnNode);\n }\n\n private _findFirstConnectableInputOfNode(connectableInputs: IConnectorAndRect[], fNode: FNodeBase): FConnectorBase | undefined {\n return connectableInputs.find((x) => x.fConnector.fNodeId === fNode.fId)?.fConnector\n }\n}\n","import { FNodeOutletBase, FNodeOutputBase } from '../../../f-connectors';\n\nexport class GetAllCanBeConnectedInputsAndRectsRequest {\n static readonly fToken = Symbol('GetAllCanBeConnectedInputsAndRectsRequest');\n constructor(\n public fOutputOrOutlet: FNodeOutputBase | FNodeOutletBase,\n ) {\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class GetConnectorAndRectRequest {\n static readonly fToken = Symbol('GetConnectorAndRectRequest');\n constructor(\n public fConnector: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetConnectorAndRectRequest } from './get-connector-and-rect-request';\nimport { IRoundedRect } from '@foblex/2d';\nimport { IConnectorAndRect } from '../i-connector-and-rect';\nimport { FConnectorBase } from '../../../f-connectors';\nimport {GetNormalizedConnectorRectRequest} from \"../../get-normalized-connector-rect\";\n\n@Injectable()\n@FExecutionRegister(GetConnectorAndRectRequest)\nexport class GetConnectorAndRectExecution implements IExecution<GetConnectorAndRectRequest, IConnectorAndRect> {\n\n private readonly _fMediator = inject(FMediator);\n\n public handle(request: GetConnectorAndRectRequest): IConnectorAndRect {\n return {\n fConnector: request.fConnector,\n fRect: this._getConnectorRect(request.fConnector)\n }\n }\n\n private _getConnectorRect(fConnector: FConnectorBase): IRoundedRect {\n return this._fMediator.execute<IRoundedRect>(new GetNormalizedConnectorRectRequest(fConnector.hostElement));\n }\n}\n","import { GetAllCanBeConnectedInputsAndRectsRequest } from './get-all-can-be-connected-inputs-and-rects.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase } from '../../../f-connectors';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IConnectorAndRect } from '../i-connector-and-rect';\nimport { GetConnectorAndRectRequest } from '../get-connector-and-rect';\n\n@Injectable()\n@FExecutionRegister(GetAllCanBeConnectedInputsAndRectsRequest)\nexport class GetAllCanBeConnectedInputsAndRectsExecution\n implements IExecution<GetAllCanBeConnectedInputsAndRectsRequest, IConnectorAndRect[]> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fInputs(): FConnectorBase[] {\n return this._fComponentsStore.fInputs;\n }\n\n public handle(payload: GetAllCanBeConnectedInputsAndRectsRequest): IConnectorAndRect[] {\n return this._getCanBeConnectedInputs(payload.fOutputOrOutlet).map((x) => {\n return this._fMediator.execute(new GetConnectorAndRectRequest(x));\n });\n }\n\n private _getCanBeConnectedInputs(fOutputOrOutlet: FNodeOutputBase | FNodeOutletBase): FConnectorBase[] {\n let fInputs: FConnectorBase[] = [];\n if (fOutputOrOutlet.canBeConnectedInputs?.length) {\n fInputs = this._fInputs.filter((x) => fOutputOrOutlet.canBeConnectedInputs.includes(x.fId));\n } else {\n fInputs = this._fInputs.filter((x) => x.canBeConnected);\n\n if(!fOutputOrOutlet.isSelfConnectable) {\n fInputs = this._filterSelfConnectable(fInputs, fOutputOrOutlet);\n }\n }\n return fInputs;\n }\n\n private _filterSelfConnectable(fInputs: FConnectorBase[], fOutputOrOutlet: FConnectorBase): FConnectorBase[] {\n return fInputs.filter((x) => fOutputOrOutlet.fNodeId !== x.fNodeId);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class MarkAllCanBeConnectedInputsRequest {\n static readonly fToken = Symbol('MarkAllCanBeConnectedInputsRequest');\n constructor(\n public fInputs: FConnectorBase[],\n ) {\n }\n}\n","import { MarkAllCanBeConnectedInputsRequest } from './mark-all-can-be-connected-inputs.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { F_CSS_CLASS } from '../../css-cls';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(MarkAllCanBeConnectedInputsRequest)\nexport class MarkAllCanBeConnectedInputsExecution\n implements IExecution<MarkAllCanBeConnectedInputsRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(payload: MarkAllCanBeConnectedInputsRequest): void {\n this._fComponentsStore.flowHost.classList.add(F_CSS_CLASS.DRAG_AND_DROP.CONNECTIONS_DRAGGING);\n payload.fInputs.forEach((fInput) => this._markCanBeConnectedTo(fInput));\n }\n\n private _markCanBeConnectedTo(fInput: FConnectorBase): void {\n fInput.hostElement.classList.add(F_CSS_CLASS.CONNECTOR.INPUT_CAN_BE_CONNECTED_TO);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class RemoveInputFromStoreRequest {\n static readonly fToken = Symbol('RemoveInputFromStoreRequest');\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveInputFromStoreRequest } from './remove-input-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveInputFromStoreRequest)\nexport class RemoveInputFromStoreExecution implements IExecution<RemoveInputFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveInputFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fInputs, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class RemoveOutletFromStoreRequest {\n static readonly fToken = Symbol('RemoveOutletFromStoreRequest');\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveOutletFromStoreRequest } from './remove-outlet-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveOutletFromStoreRequest)\nexport class RemoveOutletFromStoreExecution implements IExecution<RemoveOutletFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveOutletFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fOutlets, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class RemoveOutputFromStoreRequest {\n static readonly fToken = Symbol('RemoveOutputFromStoreRequest');\n constructor(\n public fComponent: FConnectorBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveOutputFromStoreRequest } from './remove-output-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveOutputFromStoreRequest)\nexport class RemoveOutputFromStoreExecution implements IExecution<RemoveOutputFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveOutputFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fOutputs, request.fComponent);\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class UnmarkAllCanBeConnectedInputsRequest {\n static readonly fToken = Symbol('UnmarkAllCanBeConnectedInputsRequest');\n constructor(\n public fInputs: FConnectorBase[],\n ) {\n }\n}\n","import { UnmarkAllCanBeConnectedInputsRequest } from './unmark-all-can-be-connected-inputs.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { F_CSS_CLASS } from '../../css-cls';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(UnmarkAllCanBeConnectedInputsRequest)\nexport class UnmarkAllCanBeConnectedInputsExecution\n implements IExecution<UnmarkAllCanBeConnectedInputsRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(payload: UnmarkAllCanBeConnectedInputsRequest): void {\n this._fComponentsStore.flowHost.classList.remove(F_CSS_CLASS.DRAG_AND_DROP.CONNECTIONS_DRAGGING);\n payload.fInputs.forEach((fInput) => this._unmarkCanBeConnectedTo(fInput));\n }\n\n private _unmarkCanBeConnectedTo(fInput: FConnectorBase): void {\n fInput.hostElement.classList.remove(F_CSS_CLASS.CONNECTOR.INPUT_CAN_BE_CONNECTED_TO);\n }\n}\n","import { AddInputToStoreExecution } from './add-input-to-store';\nimport { AddOutletToStoreExecution } from './add-outlet-to-store';\nimport { AddOutputToStoreExecution } from './add-output-to-store';\nimport { RemoveInputFromStoreExecution } from './remove-input-from-store';\nimport { RemoveOutletFromStoreExecution } from './remove-outlet-from-store';\nimport { RemoveOutputFromStoreExecution } from './remove-output-from-store';\nimport { MarkAllCanBeConnectedInputsExecution } from './mark-all-can-be-connected-inputs';\nimport { UnmarkAllCanBeConnectedInputsExecution } from './unmark-all-can-be-connected-inputs';\nimport { GetAllCanBeConnectedInputsAndRectsExecution } from './get-all-can-be-connected-inputs-and-rects';\nimport { GetConnectorAndRectExecution } from './get-connector-and-rect';\nimport { CalculateClosestInputExecution } from './calculate-closest-input';\nimport { FindInputAtPositionExecution } from './find-input-at-position';\n\nexport const F_CONNECTORS_FEATURES = [\n\n AddInputToStoreExecution,\n\n AddOutletToStoreExecution,\n\n AddOutputToStoreExecution,\n\n CalculateClosestInputExecution,\n\n FindInputAtPositionExecution,\n\n GetAllCanBeConnectedInputsAndRectsExecution,\n\n GetConnectorAndRectExecution,\n\n MarkAllCanBeConnectedInputsExecution,\n\n RemoveInputFromStoreExecution,\n\n RemoveOutletFromStoreExecution,\n\n RemoveOutputFromStoreExecution,\n\n UnmarkAllCanBeConnectedInputsExecution\n];\n","import { FDraggableBase } from '../../../f-draggable';\n\nexport class AddDndToStoreRequest {\n static readonly fToken = Symbol('AddDndToStoreRequest');\n\n constructor(\n public fComponent: FDraggableBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddDndToStoreRequest } from './add-dnd-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddDndToStoreRequest)\nexport class AddDndToStoreExecution implements IExecution<AddDndToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddDndToStoreRequest): void {\n this._fComponentsStore.fDraggable = request.fComponent;\n }\n}\n","export class EmitSelectionChangeEventRequest {\n static readonly fToken = Symbol('EmitSelectionChangeEventRequest');\n\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedParentNodeRectRequest {\n static readonly fToken = Symbol('GetNormalizedParentNodeRectRequest');\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import {inject, Injectable} from '@angular/core';\nimport { GetNormalizedParentNodeRectRequest } from './get-normalized-parent-node-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { GetNodePaddingRequest } from '../../../domain';\nimport { GetNormalizedElementRectRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedParentNodeRectRequest)\nexport class GetNormalizedParentNodeRectExecution\n implements IExecution<GetNormalizedParentNodeRectRequest, IRect> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fMediator = inject(FMediator);\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 // Parent Node\n // +----------------------------------------+\n // | padding-top |\n // | +----------------------------------+ |\n // | | | |\n // | | Available area for | |\n // |p | child nodes |p |\n // |a | |a |\n // |d | (width - padLeft - padRight) |d |\n // | | |d |\n // |l | (height - padTop - padBottom) |i |\n // |e | |n |\n // |f | |g |\n // |t | | |\n // | | |r |\n // | | |i |\n // | | |g |\n // | | |h |\n // | | |t |\n // | +----------------------------------+ |\n // | padding-bottom |\n // +----------------------------------------+\n private _getParentRect(node: FNodeBase): IRect {\n const rect = this._getNodeRect(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 _getNodeRect(fNode: FNodeBase): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(fNode.hostElement));\n }\n\n private _getNodePadding(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this._fMediator.execute<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class IsArrayHasParentNodeRequest {\n static readonly fToken = Symbol('IsArrayHasParentNodeRequest');\n constructor(\n public fParentNodes: FNodeBase[],\n public fDraggedNodes: FNodeBase[]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IsArrayHasParentNodeRequest } from './is-array-has-parent-node.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(IsArrayHasParentNodeRequest)\nexport class IsArrayHasParentNodeExecution\n implements IExecution<IsArrayHasParentNodeRequest, boolean> {\n\n public handle(request: IsArrayHasParentNodeRequest): boolean {\n return this._isParentNodeInArray(this._getParentNodeIds(request.fParentNodes), request.fDraggedNodes);\n }\n\n private _getParentNodeIds(fParentNodes: FNodeBase[]): string[] {\n return fParentNodes.map((x) => x.fId);\n }\n\n private _isParentNodeInArray(parentNodeIds: string[], fDraggedNodes: FNodeBase[]): boolean {\n return fDraggedNodes.some((x) => parentNodeIds.includes(x.fId));\n }\n}\n\n\n","export class FNodeIntersectedWithConnections {\n\n constructor(\n public fNodeId: string,\n public fConnectionIds: string[],\n ) {\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class IsConnectionUnderNodeRequest {\n static readonly fToken = Symbol('IsConnectionUnderNodeRequest');\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { GetIntersections, IRoundedRect } from '@foblex/2d';\nimport { inject, 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 { FNodeIntersectedWithConnections } from '../../index';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FConnectionBase } from '../../../f-connection';\nimport {GetNormalizedConnectorRectRequest, GetNormalizedElementRectRequest} from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(IsConnectionUnderNodeRequest)\nexport class IsConnectionUnderNodeExecution implements IExecution<IsConnectionUnderNodeRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: IsConnectionUnderNodeRequest): void {\n\n const fOutputConnectors = this._getOutputConnectors(request.fNode);\n const fInputConnectors = this._getInputConnectors(request.fNode);\n\n if (!fOutputConnectors.length || !fInputConnectors.length) {\n return;\n }\n\n const fOutputConnections = this._getOutputConnectionsId(fOutputConnectors);\n const fInputConnections = this._getInputConnectionsId(fInputConnectors);\n\n const fConnectionsUnderNode = this._calculateConnectionsUnderNode(request.fNode).filter((x) => {\n return !fOutputConnections.includes(x.fId) && !fInputConnections.includes(x.fId);\n });\n\n if (!fConnectionsUnderNode.length) {\n return;\n }\n\n this._emitNodeIntersectedWithConnections(request.fNode, fConnectionsUnderNode);\n }\n\n private _getOutputConnectors(fNode: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fOutputs.filter((x) => {\n return fNode.isContains(x.hostElement) && x.canBeConnected;\n });\n }\n\n private _getInputConnectors(fNode: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fInputs.filter((x) => {\n return fNode.isContains(x.hostElement) && x.canBeConnected;\n });\n }\n\n private _getOutputConnectionsId(connectors: FConnectorBase[]): string[] {\n const connectorsId = this._getConnectorsId(connectors);\n return this._fComponentsStore.fConnections\n .filter((x) => connectorsId.includes(x.fOutputId))\n .map((x) => x.fId);\n }\n\n private _getInputConnectionsId(connectors: FConnectorBase[]): string[] {\n const connectorsId = this._getConnectorsId(connectors);\n return this._fComponentsStore.fConnections\n .filter((x) => connectorsId.includes(x.fInputId))\n .map((x) => x.fId);\n }\n\n private _getConnectorsId(connectors: FConnectorBase[]): string[] {\n return connectors.map((x) => x.fId);\n }\n\n private _calculateConnectionsUnderNode(fNode: FNodeBase): FConnectionBase[] {\n const fNodeRect = this._fMediator.execute<IRoundedRect>(new GetNormalizedConnectorRectRequest(fNode.hostElement));\n return this._fComponentsStore.fConnections.filter((x) => this._isConnectionHasIntersectionsWithNode(x, fNodeRect));\n }\n\n private _isConnectionHasIntersectionsWithNode(fConnection: FConnectionBase, fNodeRect: IRoundedRect): boolean {\n return GetIntersections.getRoundedRectIntersectionsWithSVGPath(fConnection.fPath.hostElement, fNodeRect).length > 0;\n }\n\n private _emitNodeIntersectedWithConnections(fNode: FNodeBase, fConnections: FConnectionBase[]): void {\n this._fComponentsStore.fDraggable?.fNodeIntersectedWithConnections.emit(\n new FNodeIntersectedWithConnections(\n fNode.fId,\n fConnections.map((x) => x.fId)\n )\n );\n }\n}\n","export class FDragStartedEvent {\n\n constructor(\n public fEventType: string,\n public fData?: any,\n ) {\n }\n}\n","import { IsArrayHasParentNodeExecution } from './is-array-has-parent-node';\nimport { GetNormalizedParentNodeRectExecution } from './get-normalized-parent-node-rect';\nimport { IsConnectionUnderNodeExecution } from './is-connection-under-node';\n\nexport const DRAG_AND_DROP_COMMON_PROVIDERS = [\n\n GetNormalizedParentNodeRectExecution,\n\n IsArrayHasParentNodeExecution,\n\n IsConnectionUnderNodeExecution,\n];\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FCanvasMoveFinalizeRequest {\n static readonly fToken = Symbol('FCanvasMoveFinalizeRequest');\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Point } from '@foblex/2d';\nimport { IFDragHandler } from './f-drag-handler';\nimport { ISelectable } from '../mixins';\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: IFDragHandler[] = [];\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 public isEmpty(): boolean {\n return !this.draggableItems.length;\n }\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/2d';\nimport { IFDragHandler } from '../f-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\nimport { Injector } from '@angular/core';\n\nexport class FCanvasDragHandler implements IFDragHandler {\n\n public fEventType = 'canvas-move';\n\n private readonly _fComponentsStore: FComponentsStore;\n private _onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n _injector: Injector,\n ) {\n this._fComponentsStore = _injector.get(FComponentsStore);\n }\n\n public prepareDragSequence(): void {\n this._onPointerDownPosition = this._fComponentsStore.fCanvas!.transform.position;\n }\n\n public onPointerMove(difference: IPoint): void {\n this._fComponentsStore.fCanvas!.setPosition(Point.fromPoint(this._onPointerDownPosition).add(difference));\n this._fComponentsStore.fCanvas!.redraw();\n }\n\n public onPointerUp(): void {\n this._fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FCanvasMoveFinalizeRequest } from './f-canvas-move-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FCanvasDragHandler } from '../f-canvas.drag-handler';\n\n@Injectable()\n@FExecutionRegister(FCanvasMoveFinalizeRequest)\nexport class FCanvasMoveFinalizeExecution implements IExecution<FCanvasMoveFinalizeRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: FCanvasMoveFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n this._fDraggableDataContext.draggableItems.forEach((x) => x.onPointerUp?.());\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FCanvasDragHandler\n );\n }\n}\n","import { FEventTrigger } from '../../../domain';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FCanvasMovePreparationRequest {\n static readonly fToken = Symbol('FCanvasMovePreparationRequest');\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { FCanvasMovePreparationRequest } from './f-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 { FCanvasDragHandler } from '../f-canvas.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { isValidEventTrigger } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(FCanvasMovePreparationRequest)\nexport class FCanvasMovePreparationExecution implements IExecution<FCanvasMovePreparationRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _injector = inject(Injector);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n public handle(request: FCanvasMovePreparationRequest): void {\n if (!this._isValid(request) || !this._isValidTrigger(request)) {\n return;\n }\n this._fDraggableDataContext.onPointerDownScale = 1;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost);\n this._fDraggableDataContext.draggableItems = [ new FCanvasDragHandler(this._injector) ];\n }\n\n private _isValid(request: FCanvasMovePreparationRequest): boolean {\n return this._fDraggableDataContext.isEmpty() &&\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?.hostElement.contains(targetElement);\n }\n\n private _isDragOnHost(targetElement: HTMLElement): boolean {\n return this._fHost.contains(targetElement) && !this._getNode(targetElement);\n }\n\n private _getNode(targetElement: HTMLElement): FNodeBase | undefined {\n let result = this._fComponentsStore.fNodes\n .find(x => x.isContains(targetElement));\n if (result && result.fDraggingDisabled) {\n result = undefined;\n }\n return result;\n }\n\n private _isValidTrigger(request: FCanvasMovePreparationRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n}\n","import { FCanvasMovePreparationExecution } from './move-preparation';\nimport { FCanvasMoveFinalizeExecution } from './move-finalize';\n\nexport const CANVAS_PROVIDERS = [\n\n FCanvasMoveFinalizeExecution,\n\n FCanvasMovePreparationExecution,\n];\n","import {IPointerEvent} from \"../../../../drag-toolkit\";\n\nexport class FCreateConnectionFinalizeRequest {\n static readonly fToken = Symbol('FCreateConnectionFinalizeRequest');\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { FNodeOutletBase } from '../../../../f-connectors';\n\nexport class GetFirstConnectableOutputRequest {\n static readonly fToken = Symbol('GetFirstConnectableOutputRequest');\n constructor(\n public fOutlet: FNodeOutletBase\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { GetFirstConnectableOutputRequest } from './get-first-connectable-output.request';\nimport { FExecutionRegister } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetFirstConnectableOutputRequest)\nexport class GetFirstConnectableOutputExecution\n implements IHandler<GetFirstConnectableOutputRequest, FConnectorBase | undefined> {\n\n private readonly _fComponentStore = inject(FComponentsStore);\n\n private get _fNodes(): FNodeBase[] {\n return this._fComponentStore.fNodes;\n }\n\n private get _fOutputs(): FConnectorBase[] {\n return this._fComponentStore.fOutputs;\n }\n\n private _fNode: FNodeBase | undefined;\n\n public handle(request: GetFirstConnectableOutputRequest): FConnectorBase | undefined {\n if(!this._isValid(request)) {\n return;\n }\n\n const fOutputs = this._getConnectableOutputs();\n if(!fOutputs.length) {\n throw new Error('The fNode must contain at least one fOutput if there is an fOutlet')\n }\n return fOutputs[0];\n }\n\n private _isValid(request: GetFirstConnectableOutputRequest): boolean {\n return !!this._getNode(request.fOutlet);\n }\n\n private _getNode(fOutlet: FNodeOutletBase): FNodeBase {\n this._fNode = this._fNodes.find((x) => x.isContains(fOutlet.hostElement))!;\n return this._fNode;\n }\n\n private _getConnectableOutputs(): FConnectorBase[] {\n return this._fOutputs\n .filter((x) => this._fNode!.isContains(x.hostElement) && x.canBeConnected);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FCreateConnectionEvent {\n\n constructor(\n public fOutputId: string,\n public fInputId: string | undefined,\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class FDragHandlerResult<T> {\n\n private _data: T | undefined;\n\n public setData(data: Partial<T>): void {\n this._data = { ...this._data, ...data } as T;\n }\n\n public getData(): T {\n return this._data!;\n }\n\n public clear(): void {\n this._data = undefined;\n }\n}\n","import { FDragHandlerResult, IFDragHandler } from '../../f-drag-handler';\nimport {\n CalculateClosestInputRequest,\n GetAllCanBeConnectedInputsAndRectsRequest,\n CalculateConnectionLineByBehaviorRequest,\n GetConnectorAndRectRequest,\n IConnectorAndRect, IClosestInput, MarkAllCanBeConnectedInputsRequest, UnmarkAllCanBeConnectedInputsRequest\n} from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport {\n EFConnectableSide, FNodeOutletBase,\n FNodeOutputBase,\n} from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { RoundedRect, ILine, IPoint, PointExtensions, RectExtensions, IRoundedRect } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IFCreateConnectionDragResult } from './i-f-create-connection-drag-result';\nimport { Injector } from '@angular/core';\n\nexport class FCreateConnectionDragHandler implements IFDragHandler {\n\n public fEventType = 'create-connection';\n public fData: any;\n\n private readonly _fResult: FDragHandlerResult<IFCreateConnectionDragResult>;\n private readonly _fMediator: FMediator;\n private readonly _fComponentsStore: FComponentsStore;\n\n private readonly _toConnectorRect = new RoundedRect();\n\n private get _fConnection(): FConnectionBase {\n return this._fComponentsStore.fTempConnection!;\n }\n\n private get _fSnapConnection(): FSnapConnectionComponent | undefined {\n return this._fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private _fOutputWithRect!: IConnectorAndRect;\n\n private _canBeConnectedInputs: IConnectorAndRect[] = [];\n\n constructor(\n _injector: Injector,\n private _fOutputOrOutlet: FNodeOutputBase | FNodeOutletBase,\n _onPointerDownPosition: IPoint,\n ) {\n this._fResult = _injector.get(FDragHandlerResult);\n this._fMediator = _injector.get(FMediator);\n this._fComponentsStore = _injector.get(FComponentsStore);\n\n this._toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(_onPointerDownPosition.x, _onPointerDownPosition.y)\n );\n this.fData = {\n fOutputOrOutletId: this._fOutputOrOutlet.fId,\n };\n }\n\n public prepareDragSequence(): void {\n this._getAndMarkCanBeConnectedInputs();\n this._initializeSnapConnection();\n this._initializeConnectionForCreate();\n\n this._fOutputWithRect = this._fMediator.execute<IConnectorAndRect>(new GetConnectorAndRectRequest(this._fOutputOrOutlet));\n\n this._fConnection.show();\n this.onPointerMove(PointExtensions.initialize());\n\n this._fResult.setData({\n toConnectorRect: this._toConnectorRect,\n canBeConnectedInputs: this._canBeConnectedInputs,\n fOutputId: this._fOutputOrOutlet.fId,\n });\n }\n\n private _getAndMarkCanBeConnectedInputs(): void {\n this._canBeConnectedInputs = this._fMediator.execute<IConnectorAndRect[]>(\n new GetAllCanBeConnectedInputsAndRectsRequest(this._fOutputOrOutlet)\n );\n\n this._fMediator.execute(\n new MarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector))\n );\n }\n\n private _initializeSnapConnection(): void {\n if (!this._fSnapConnection) {\n return;\n }\n this._fSnapConnection.fOutputId = this._fOutputOrOutlet.fId;\n this._fSnapConnection.initialize();\n }\n\n private _initializeConnectionForCreate(): void {\n this._fConnection.fOutputId = this._fOutputOrOutlet.fId;\n this._fConnection.initialize();\n }\n\n public onPointerMove(difference: IPoint): void {\n const fClosestInput = this._findClosestInput(difference);\n\n this._drawConnectionForCreate(\n this._toConnectorRect.addPoint(difference),\n fClosestInput?.fConnector.fConnectableSide || EFConnectableSide.TOP\n );\n\n if (this._fSnapConnection) {\n this._drawSnapConnection(this._getClosestInputForSnapConnection(fClosestInput));\n }\n }\n\n private _drawConnectionForCreate(toConnectorRect: IRoundedRect, fSide: EFConnectableSide): void {\n const line = this._fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this._fOutputWithRect.fRect,\n toConnectorRect,\n this._fConnection.fBehavior,\n this._fOutputWithRect.fConnector.fConnectableSide,\n fSide\n )\n );\n\n this._fConnection.setLine(line, this._fOutputWithRect.fConnector.fConnectableSide, fSide);\n this._fConnection.redraw();\n }\n\n private _drawSnapConnection(fClosestInput: IClosestInput | undefined): void {\n if (fClosestInput) {\n const line = this._fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this._fOutputWithRect.fRect,\n fClosestInput.fRect,\n this._fSnapConnection!.fBehavior,\n this._fOutputWithRect.fConnector.fConnectableSide,\n fClosestInput.fConnector.fConnectableSide\n )\n );\n this._fSnapConnection!.show();\n this._fSnapConnection!.setLine(line, this._fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide);\n this._fSnapConnection!.redraw();\n } else {\n this._fSnapConnection?.hide();\n }\n }\n\n private _findClosestInput(difference: IPoint): IClosestInput | undefined {\n return this._fMediator.execute<IClosestInput | undefined>(\n new CalculateClosestInputRequest(\n this._toConnectorRect.addPoint(difference),\n this._canBeConnectedInputs,\n )\n );\n }\n\n private _getClosestInputForSnapConnection(fClosestInput: IClosestInput | undefined): IClosestInput | undefined {\n return fClosestInput && fClosestInput.distance < this._fSnapConnection!.fSnapThreshold ? fClosestInput : undefined;\n }\n\n public onPointerUp(): void {\n this._fConnection.redraw();\n this._fConnection.hide();\n this._fSnapConnection?.hide();\n\n this._fMediator.execute(\n new UnmarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector))\n );\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase, isNodeOutlet } from '../../../../f-connectors';\nimport { FCreateConnectionFinalizeRequest } from './f-create-connection-finalize.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { GetFirstConnectableOutputRequest } from '../get-first-connectable-output';\nimport { FCreateConnectionEvent } from '../f-create-connection.event';\nimport { FCreateConnectionDragHandler } from '../f-create-connection.drag-handler';\nimport { FindInputAtPositionRequest } from '../../../../domain';\nimport { FDragHandlerResult } from '../../../f-drag-handler';\nimport { IFCreateConnectionDragResult } from '../i-f-create-connection-drag-result';\nimport {IPointerEvent} from \"../../../../drag-toolkit\";\n\n@Injectable()\n@FExecutionRegister(FCreateConnectionFinalizeRequest)\nexport class FCreateConnectionFinalizeExecution\n implements IHandler<FCreateConnectionFinalizeRequest, void> {\n\n private _fResult: FDragHandlerResult<IFCreateConnectionDragResult> = inject(FDragHandlerResult);\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _fDragHandler(): FCreateConnectionDragHandler {\n return this._fDraggableDataContext.draggableItems[ 0 ] as FCreateConnectionDragHandler;\n }\n\n public handle(request: FCreateConnectionFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n this.emitEvent(request.event);\n this._fDragHandler.onPointerUp();\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FCreateConnectionDragHandler\n );\n }\n\n private getTargetOutput(output: FConnectorBase | undefined): FConnectorBase {\n if (!output) {\n throw new Error(`Output with fOutputId ${ this._fResult.getData().fOutputId } not found. Make sure there is no f-connection to a non-existent fOutput.`);\n }\n return isNodeOutlet(output.hostElement) ? this._fMediator.execute<FNodeOutputBase>(\n new GetFirstConnectableOutputRequest(output as FNodeOutletBase)\n ) : output;\n }\n\n private getOutput(): FConnectorBase | undefined {\n return this._fComponentsStore.fOutputs.find((x) => x.fId === this._fResult.getData().fOutputId);\n }\n\n private getOutlet(): FConnectorBase | undefined {\n return this._fComponentsStore.fOutlets.find((x) => x.fId === this._fResult.getData().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()).fId,\n this._getInputUnderPointer(event)?.fId,\n event.getPosition()\n )\n );\n }\n\n private _getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this._fMediator.execute<FConnectorBase | undefined>(\n new FindInputAtPositionRequest(\n event.getPosition(),\n this._fResult.getData().toConnectorRect,\n this._fResult.getData().canBeConnectedInputs\n )\n );\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { FNodeOutletBase, FNodeOutputBase } from '../../../../../f-connectors';\n\nexport class FCreateConnectionDragHandlerPreparationRequest {\n static readonly fToken = Symbol('FCreateConnectionDragHandlerPreparationRequest');\n constructor(\n public onPointerDownPosition: IPoint,\n public fOutputOrOutlet: FNodeOutputBase | FNodeOutletBase\n ) {\n }\n}\n","import { ITransformModel, Point } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { inject, Injectable, Injector } from '@angular/core';\nimport { FCreateConnectionDragHandlerPreparationRequest } from './f-create-connection-drag-handler-preparation.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../../f-draggable-data-context';\nimport { FCreateConnectionDragHandler } from '../../f-create-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(FCreateConnectionDragHandlerPreparationRequest)\nexport class FCreateConnectionDragHandlerPreparationExecution\n implements IHandler<FCreateConnectionDragHandlerPreparationRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _injector = inject(Injector);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: FCreateConnectionDragHandlerPreparationRequest): void {\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n const positionRelativeToFlowComponent = Point.fromPoint(request.onPointerDownPosition)\n .elementTransform(this._fHost).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 FCreateConnectionDragHandler(\n this._injector, request.fOutputOrOutlet, positionRelativeToCanvasComponent\n )\n ];\n }\n}\n","import { FNodeBase } from '../../../../../f-node';\nimport {IPointerEvent} from \"../../../../../drag-toolkit\";\n\nexport class FCreateConnectionFromOutletPreparationRequest {\n static readonly fToken = Symbol('FCreateConnectionFromOutletPreparationRequest');\n constructor(\n public event: IPointerEvent,\n public fNode: FNodeBase\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { inject, Injectable } from '@angular/core';\nimport { FCreateConnectionFromOutletPreparationRequest } from './f-create-connection-from-outlet-preparation.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport {\n FConnectorBase,\n FNodeOutletBase,\n FNodeOutputBase,\n} from '../../../../../f-connectors';\nimport { GetFirstConnectableOutputRequest } from '../../get-first-connectable-output';\nimport { FCreateConnectionDragHandlerPreparationRequest } from '../drag-handler-preparation';\nimport { FNodeBase } from '../../../../../f-node';\n\n@Injectable()\n@FExecutionRegister(FCreateConnectionFromOutletPreparationRequest)\nexport class FCreateConnectionFromOutletPreparationExecution\n implements IHandler<FCreateConnectionFromOutletPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: FCreateConnectionFromOutletPreparationRequest): void {\n\n const fOutlet = this._getNodeOutlet(request.fNode);\n const fOutputs = this._getNodeOutputs(request.fNode);\n\n fOutlet.setOutputs(fOutputs);\n\n if (!fOutlet.canBeConnected) {\n return;\n }\n\n if (fOutlet.isConnectionFromOutlet) {\n this._createDragHandler(request.event.getPosition(), fOutlet);\n } else {\n this._createDragHandler(request.event.getPosition(), this._getConnectableOutput(fOutlet));\n }\n }\n\n private _getNodeOutlet(fNode: FNodeBase): FNodeOutletBase {\n const result = this._fComponentsStore.fOutlets\n .find((x) => fNode.isContains(x.hostElement));\n if (!result) {\n throw new Error('Outlet not found');\n }\n return result as FNodeOutletBase;\n }\n\n private _getNodeOutputs(fNode: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fOutputs\n .filter((x) => fNode.isContains(x.hostElement));\n }\n\n private _createDragHandler(position: IPoint, fOutputOrOutlet: FNodeOutputBase | FNodeOutletBase): void {\n this._fMediator.execute(new FCreateConnectionDragHandlerPreparationRequest(position, fOutputOrOutlet));\n }\n\n private _getConnectableOutput(fOutlet: FNodeOutletBase): FNodeOutputBase {\n return this._fMediator.execute<FNodeOutputBase>(new GetFirstConnectableOutputRequest(fOutlet));\n }\n}\n","import { FNodeBase } from '../../../../../f-node';\nimport {IPointerEvent} from \"../../../../../drag-toolkit\";\n\nexport class FCreateConnectionFromOutputPreparationRequest {\n static readonly fToken = Symbol('FCreateConnectionFromOutputPreparationRequest');\n constructor(\n public event: IPointerEvent,\n public fNode: FNodeBase\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { inject, Injectable } from '@angular/core';\nimport { FCreateConnectionFromOutputPreparationRequest } from './f-create-connection-from-output-preparation.request';\nimport { FConnectorBase, FNodeOutputBase, isNodeOutput } from '../../../../../f-connectors';\nimport { FCreateConnectionDragHandlerPreparationRequest } from '../drag-handler-preparation';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\n\n@Injectable()\n@FExecutionRegister(FCreateConnectionFromOutputPreparationRequest)\nexport class FCreateConnectionFromOutputPreparationExecution\n implements IHandler<FCreateConnectionFromOutputPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: FCreateConnectionFromOutputPreparationRequest): void {\n if(!this._isValid(request)) {\n return;\n }\n const fOutput = this._getOutput(request.event.targetElement);\n\n if (fOutput.canBeConnected) {\n this._fMediator.execute(\n new FCreateConnectionDragHandlerPreparationRequest(request.event.getPosition(), fOutput)\n );\n }\n }\n\n private _isValid(request: FCreateConnectionFromOutputPreparationRequest): boolean {\n return this._isNodeOutput(request.event.targetElement, request.fNode);\n }\n\n private _isNodeOutput(element: HTMLElement, fNode: FNodeBase): boolean {\n return isNodeOutput(element) && !this._getNodeOutlets(fNode).length;\n }\n\n private _getNodeOutlets(node: FNodeBase): FConnectorBase[] {\n return this._fComponentsStore.fOutlets\n .filter((x) => node.isContains(x.hostElement));\n }\n\n private _getOutput(element: Element): FNodeOutputBase {\n const result = this._fComponentsStore.fOutputs\n .find((x) => x.hostElement.contains(element));\n if (!result) {\n throw new Error('Output not found');\n }\n return result as FNodeOutputBase;\n }\n}\n","import { FEventTrigger } from '../../../../domain';\nimport {IPointerEvent} from \"../../../../drag-toolkit\";\n\nexport class FCreateConnectionPreparationRequest {\n static readonly fToken = Symbol('FCreateConnectionPreparationRequest');\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { isNodeOutlet, isNodeOutput } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { FCreateConnectionPreparationRequest } from './f-create-connection-preparation.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FCreateConnectionFromOutletPreparationRequest } from './from-outlet-preparation';\nimport { FCreateConnectionFromOutputPreparationRequest } from './from-output-preparation';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { FReassignConnectionPreparationRequest } from '../../f-reassign-connection';\nimport { isValidEventTrigger } from '../../../../domain';\nimport {IPointerEvent} from \"../../../../drag-toolkit\";\n\n@Injectable()\n@FExecutionRegister(FCreateConnectionPreparationRequest)\nexport class FCreateConnectionPreparationExecution\n implements IHandler<FCreateConnectionPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private _fNode: FNodeBase | undefined;\n\n public handle(request: FCreateConnectionPreparationRequest): void {\n if (!this._isValid(request) || !this._isValidTrigger(request)) {\n return;\n }\n\n if (isNodeOutlet(request.event.targetElement)) {\n this._fMediator.execute<void>(\n new FCreateConnectionFromOutletPreparationRequest(request.event, this._fNode!)\n );\n } else if (isNodeOutput(request.event.targetElement)) {\n this._fMediator.execute<void>(\n new FCreateConnectionFromOutputPreparationRequest(request.event, this._fNode!)\n );\n }\n }\n\n private _isValid(request: FCreateConnectionPreparationRequest): boolean {\n return !!this._getNode(request.event) && this._isValidConditions();\n }\n\n private _getNode(event: IPointerEvent): FNodeBase | undefined {\n this._fNode = this._fComponentsStore\n .fNodes.find(n => n.isContains(event.targetElement));\n return this._fNode;\n }\n\n private _isValidConditions(): boolean {\n return this._fDraggableDataContext.isEmpty() && !!this._fComponentsStore.fTempConnection;\n }\n\n private _isValidTrigger(request: FReassignConnectionPreparationRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n}\n","import {IPointerEvent} from \"../../../../drag-toolkit\";\n\nexport class FReassignConnectionFinalizeRequest {\n static readonly fToken = Symbol('FReassignConnectionFinalizeRequest');\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { FDragHandlerResult, IFDragHandler } from '../../f-drag-handler';\nimport {\n CalculateClosestInputRequest,\n GetAllCanBeConnectedInputsAndRectsRequest,\n CalculateConnectionLineByBehaviorRequest, GetConnectorAndRectRequest,\n IConnectorAndRect, IClosestInput, MarkAllCanBeConnectedInputsRequest, UnmarkAllCanBeConnectedInputsRequest\n} from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport { EFConnectableSide, FConnectorBase, FNodeOutputDirective } from '../../../f-connectors';\nimport { ILine, IPoint, RectExtensions, RoundedRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IFReassignConnectionDragResult } from './i-f-reassign-connection-drag-result';\nimport { Injector } from '@angular/core';\n\nexport class FReassignConnectionDragHandler implements IFDragHandler {\n\n public fEventType = 'reassign-connection';\n public fData: any;\n\n private readonly _fResult: FDragHandlerResult<IFReassignConnectionDragResult>;\n private readonly _fMediator: FMediator;\n private readonly _fComponentsStore: FComponentsStore;\n\n private readonly _toConnectorRect = new RoundedRect();\n\n private get _fSnapConnection(): FSnapConnectionComponent | undefined {\n return this._fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private _fOutputWithRect!: IConnectorAndRect;\n private _fInputWithRect!: IConnectorAndRect;\n\n private _canBeConnectedInputs: IConnectorAndRect[] = [];\n\n private get _fOutput(): FConnectorBase {\n const result = this._fComponentsStore.fOutputs.find((x) => x.fId === this._fConnection.fOutputId);\n if (!result) {\n throw new Error('Connection output not found');\n }\n return result;\n }\n\n private get _fInput(): FConnectorBase {\n const result = this._fComponentsStore.fInputs.find((x) => x.fId === this._fConnection.fInputId);\n if (!result) {\n throw new Error('Connection input not found');\n }\n return result;\n }\n\n constructor(\n _injector: Injector,\n private _fConnection: FConnectionBase,\n ) {\n this._fResult = _injector.get(FDragHandlerResult);\n this._fMediator = _injector.get(FMediator);\n this._fComponentsStore = _injector.get(FComponentsStore);\n\n this._toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this._fConnection.line.point2.x, this._fConnection.line.point2.y)\n );\n this.fData = {\n fConnectionId: this._fConnection.fId\n };\n }\n\n public prepareDragSequence(): void {\n this._getAndMarkCanBeConnectedInputs();\n this._initializeSnapConnection();\n\n this._fOutputWithRect = this._fMediator.execute<IConnectorAndRect>(new GetConnectorAndRectRequest(this._fOutput));\n this._fInputWithRect = this._fMediator.execute<IConnectorAndRect>(new GetConnectorAndRectRequest(this._fInput));\n\n this._fResult.setData({\n toConnectorRect: this._toConnectorRect,\n canBeConnectedInputs: this._canBeConnectedInputs,\n fConnection: this._fConnection\n });\n }\n\n private _getAndMarkCanBeConnectedInputs(): void {\n this._canBeConnectedInputs = this._fMediator.execute<IConnectorAndRect[]>(\n new GetAllCanBeConnectedInputsAndRectsRequest(this._fOutput as FNodeOutputDirective)\n );\n\n this._fMediator.execute(\n new MarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector))\n );\n }\n\n private _initializeSnapConnection(): void {\n if (!this._fSnapConnection) {\n return;\n }\n this._fSnapConnection.fOutputId = this._fConnection.fOutputId;\n this._fSnapConnection.initialize();\n }\n\n public onPointerMove(difference: IPoint): void {\n const fClosestInput = this._findClosestInput(difference);\n\n this._drawConnection(\n this._toConnectorRect.addPoint(difference),\n fClosestInput?.fConnector.fConnectableSide || this._fInputWithRect.fConnector.fConnectableSide\n );\n if (this._fSnapConnection) {\n this._drawSnapConnection(this._getClosestInputForSnapConnection(fClosestInput));\n }\n }\n\n private _drawConnection(difference: IPoint, fSide: EFConnectableSide): void {\n const line = this._getLineToPointer(difference, fSide);\n this._fConnection.setLine(line, this._fOutputWithRect.fConnector.fConnectableSide, fSide);\n this._fConnection.redraw();\n }\n\n private _getLineToPointer(difference: IPoint, fSide: EFConnectableSide): ILine {\n return this._fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this._fOutputWithRect.fRect,\n RoundedRect.fromRect(RectExtensions.initialize(difference.x, difference.y)),\n this._fConnection.fBehavior,\n this._fOutputWithRect.fConnector.fConnectableSide,\n fSide\n )\n );\n }\n\n private _drawSnapConnection(fClosestInput: IClosestInput | undefined): void {\n if (fClosestInput) {\n const line = this._getLineToClosestInput(fClosestInput);\n this._fSnapConnection!.show();\n this._fSnapConnection!.setLine(line, this._fOutputWithRect.fConnector.fConnectableSide, fClosestInput.fConnector.fConnectableSide);\n this._fSnapConnection!.redraw();\n } else {\n this._fSnapConnection?.hide();\n }\n }\n\n private _getLineToClosestInput(fClosestInput: IClosestInput): ILine {\n return this._fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n this._fOutputWithRect.fRect,\n fClosestInput.fRect,\n this._fSnapConnection!.fBehavior,\n this._fOutputWithRect.fConnector.fConnectableSide,\n fClosestInput.fConnector.fConnectableSide\n ));\n }\n\n private _findClosestInput(difference: IPoint): IClosestInput | undefined {\n return this._fMediator.execute<IClosestInput | undefined>(\n new CalculateClosestInputRequest(\n this._toConnectorRect.addPoint(difference),\n this._canBeConnectedInputs,\n )\n );\n }\n\n private _getClosestInputForSnapConnection(fClosestInput: IClosestInput | undefined): IClosestInput | undefined {\n return fClosestInput && fClosestInput.distance < this._fSnapConnection!.fSnapThreshold ? fClosestInput : undefined;\n }\n\n public onPointerUp(): void {\n this._drawConnection(this._toConnectorRect, this._fInputWithRect.fConnector.fConnectableSide);\n this._fSnapConnection?.hide();\n\n this._fMediator.execute(\n new UnmarkAllCanBeConnectedInputsRequest(this._canBeConnectedInputs.map((x) => x.fConnector))\n );\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FReassignConnectionEvent {\n\n constructor(\n public fConnectionId: string,\n public fOutputId: string,\n public oldFInputId: string,\n public newFInputId: string | undefined,\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FReassignConnectionFinalizeRequest } from './f-reassign-connection-finalize.request';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FReassignConnectionDragHandler } from '../f-reassign-connection.drag-handler';\nimport { FDraggableBase } from '../../../f-draggable-base';\nimport { FReassignConnectionEvent } from '../f-reassign-connection.event';\nimport { FConnectorBase } from '../../../../f-connectors';\nimport { FindInputAtPositionRequest } from '../../../../domain';\nimport { FDragHandlerResult } from '../../../f-drag-handler';\nimport { IFReassignConnectionDragResult } from '../i-f-reassign-connection-drag-result';\nimport {IPointerEvent} from \"../../../../drag-toolkit\";\n\n@Injectable()\n@FExecutionRegister(FReassignConnectionFinalizeRequest)\nexport class FReassignConnectionFinalizeExecution implements IExecution<FReassignConnectionFinalizeRequest, void> {\n\n private _fResult: FDragHandlerResult<IFReassignConnectionDragResult> = inject(FDragHandlerResult);\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _fDraggable(): FDraggableBase {\n return this._fComponentsStore.fDraggable!;\n }\n\n private get _fDragHandler(): FReassignConnectionDragHandler {\n return this._fDraggableDataContext.draggableItems[ 0 ] as FReassignConnectionDragHandler;\n }\n\n public handle(request: FReassignConnectionFinalizeRequest): void {\n if (!this._isDroppedConnectionReassignEvent()) {\n return;\n }\n this._applyReassignEvent(request.event);\n this._fDragHandler.onPointerUp();\n }\n\n private _isDroppedConnectionReassignEvent(): boolean {\n return this._fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FReassignConnectionDragHandler\n );\n }\n\n private _applyReassignEvent(event: IPointerEvent): void {\n const fInput = this._getInputUnderPointer(event);\n if (\n !!fInput && !this._isReassignToDifferentInput(fInput)\n ) {\n return;\n }\n\n this._emitReassignConnectionEvent(event, fInput);\n }\n\n private _getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this._fMediator.execute<FConnectorBase | undefined>(\n new FindInputAtPositionRequest(\n event.getPosition(),\n this._fResult.getData().toConnectorRect,\n this._fResult.getData().canBeConnectedInputs\n )\n );\n }\n\n private _isReassignToDifferentInput(fInput: FConnectorBase): boolean {\n return this._fResult.getData().fConnection.fInputId !== fInput.fId;\n }\n\n private _emitReassignConnectionEvent(event: IPointerEvent, fInput?: FConnectorBase): void {\n this._fDraggable.fReassignConnection.emit(this._getEventData(event, fInput));\n }\n\n private _getEventData(event: IPointerEvent, fInput?: FConnectorBase): FReassignConnectionEvent {\n const fConnection = this._fResult.getData().fConnection;\n\n return new FReassignConnectionEvent(\n fConnection.fId,\n fConnection.fOutputId,\n fConnection.fInputId,\n fInput?.fId, event.getPosition()\n );\n }\n}\n","import { FEventTrigger } from '../../../../domain';\nimport {IPointerEvent} from \"../../../../drag-toolkit\";\n\nexport class FReassignConnectionPreparationRequest {\n static readonly fToken = Symbol('FReassignConnectionPreparationRequest');\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { FReassignConnectionPreparationRequest } from './f-reassign-connection-preparation.request';\nimport { IPoint, ITransformModel, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { isValidEventTrigger, UpdateItemAndChildrenLayersRequest } from '../../../../domain';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FConnectionBase } from '../../../../f-connection';\nimport { FReassignConnectionDragHandler } from '../f-reassign-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(FReassignConnectionPreparationRequest)\nexport class FReassignConnectionPreparationExecution implements IExecution<FReassignConnectionPreparationRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _injector = inject(Injector);\n\n private _fConnection: FConnectionBase | undefined;\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private get _fConnections(): FConnectionBase[] {\n return this._fComponentsStore.fConnections;\n }\n\n public handle(request: FReassignConnectionPreparationRequest): void {\n if (!this._isValid(request) || !this._isValidTrigger(request)) {\n return;\n }\n\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost).div(this._transform.scale);\n this._fDraggableDataContext.draggableItems = [\n new FReassignConnectionDragHandler(this._injector, this._fConnection!)\n ];\n\n setTimeout(() => this._updateConnectionLayer());\n }\n\n private _isValid(request: FReassignConnectionPreparationRequest): boolean {\n this._fConnection = this._getConnectionToReassign(this._getPointInFlow(request));\n return !!this._fConnection && !this._fDraggableDataContext.draggableItems.length;\n }\n\n private _isValidTrigger(request: FReassignConnectionPreparationRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n\n private _getPointInFlow(request: FReassignConnectionPreparationRequest): IPoint {\n return Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost)\n .sub(this._transform.scaledPosition).sub(this._transform.position)\n .div(this._transform.scale);\n }\n\n private _getConnectionToReassign(position: IPoint): FConnectionBase | undefined {\n const connections = this._getConnectionsFromPoint(position);\n return connections.length ? connections[0] : undefined;\n }\n\n private _getConnectionsFromPoint(position: IPoint): FConnectionBase[] {\n return this._fConnections.filter((x) => {\n return x.fDragHandle?.point && this._isPointInsideCircle(position, x.fDragHandle.point) && !x.fDraggingDisabled;\n });\n }\n\n private _isPointInsideCircle(point: IPoint, circleCenter: IPoint): boolean {\n return (point.x - circleCenter.x) ** 2 + (point.y - circleCenter.y) ** 2 <= 8 ** 2;\n }\n\n private _updateConnectionLayer(): void {\n this._fMediator.execute<void>(\n new UpdateItemAndChildrenLayersRequest(\n this._fConnection!, this._fComponentsStore.fCanvas!.fConnectionsContainer().nativeElement\n )\n );\n }\n}\n","import {\n FCreateConnectionDragHandlerPreparationExecution,\n FCreateConnectionFinalizeExecution,\n FCreateConnectionFromOutletPreparationExecution,\n FCreateConnectionFromOutputPreparationExecution,\n FCreateConnectionPreparationExecution,\n GetFirstConnectableOutputExecution,\n} from './f-create-connection';\nimport {\n FReassignConnectionFinalizeExecution,\n FReassignConnectionPreparationExecution,\n} from './f-reassign-connection';\n\nexport const CONNECTIONS_PROVIDERS = [\n\n FCreateConnectionFinalizeExecution,\n\n FCreateConnectionDragHandlerPreparationExecution,\n\n FCreateConnectionFromOutletPreparationExecution,\n\n GetFirstConnectableOutputExecution,\n\n FCreateConnectionFromOutputPreparationExecution,\n\n FCreateConnectionPreparationExecution,\n\n FReassignConnectionFinalizeExecution,\n\n FReassignConnectionPreparationExecution,\n];\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeDropToGroupFinalizeRequest {\n static readonly fToken = Symbol('FNodeDropToGroupFinalizeRequest');\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Directive, Injector } from '@angular/core';\nimport { IPoint, ITransformModel, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { IFDragHandler } from '../f-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\nimport { INodeWithRect } from '../domain';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n@Directive()\nexport class FNodeDropToGroupDragHandler implements IFDragHandler {\n\n private readonly _fComponentsStore: FComponentsStore;\n private readonly _fDraggableDataContext: FDraggableDataContext;\n\n public fEventType = 'move-node-to-parent';\n\n private _DEBOUNCE_TIME = 1;\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private _onPointerDownPosition: IPoint = PointExtensions.initialize();\n private _debounceTimer: any = null;\n\n public fNodeWithRect: INodeWithRect | null = null;\n\n constructor(\n _injector: Injector,\n private notDraggedNodesRects: INodeWithRect[],\n ) {\n this._fComponentsStore = _injector.get(FComponentsStore);\n this._fDraggableDataContext = _injector.get(FDraggableDataContext);\n this._onPointerDownPosition = this._fDraggableDataContext.onPointerDownPosition;\n }\n\n private _toggleParentNode(difference: IPoint): void {\n const isInclude = this._isNodeInsideAnotherNode(this._getNewPosition(difference));\n if (isInclude) {\n this._markIncludeNode(isInclude);\n } else {\n this._unmarkIncludeNode();\n }\n }\n\n private _getNewPosition(difference: IPoint): IPoint {\n return Point.fromPoint(this._onPointerDownPosition).add(difference).mult(this._transform.scale);\n }\n\n private _isNodeInsideAnotherNode(point: IPoint): INodeWithRect | undefined {\n return this.notDraggedNodesRects.find((x) => RectExtensions.isIncludePoint(x.rect, point));\n }\n\n public onPointerMove(difference: IPoint): void {\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n }\n\n this._debounceTimer = setTimeout(() => this._toggleParentNode(difference), this._DEBOUNCE_TIME);\n }\n\n private _markIncludeNode(nodeWithRect: INodeWithRect): void {\n this._unmarkIncludeNode();\n this.fNodeWithRect = nodeWithRect;\n nodeWithRect.node.setClass('f-parent-for-drop');\n }\n\n private _unmarkIncludeNode(): void {\n this.fNodeWithRect?.node.removeClass('f-parent-for-drop');\n this.fNodeWithRect = null;\n }\n\n public onPointerUp(): void {\n this._unmarkIncludeNode();\n\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n this._debounceTimer = null;\n }\n }\n}\n","import { ILine, IPoint, PointExtensions, RoundedRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport {\n CalculateConnectionLineByBehaviorRequest,\n GetConnectorAndRectRequest,\n IConnectorAndRect\n} from '../../../domain';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FConnectionBase } from '../../../f-connection';\nimport { Injector } from '@angular/core';\n\nexport class BaseConnectionDragHandler {\n\n private readonly _fMediator: FMediator;\n private readonly _fComponentsStore: FComponentsStore;\n\n private _fOutputWithRect!: IConnectorAndRect;\n private _fInputWithRect!: IConnectorAndRect;\n\n private get _fOutput(): FConnectorBase {\n const result = this._fComponentsStore.fOutputs.find((x) => x.fId === this.fConnection.fOutputId)!;\n if (!result) {\n throw new Error(this._connectorNotFoundPrefix(`fOutput with id ${ this.fConnection.fOutputId } not found`));\n }\n return result;\n }\n\n private get _fInput(): FConnectorBase {\n const result = this._fComponentsStore.fInputs.find((x) => x.fId === this.fConnection.fInputId)!;\n if (!result) {\n throw new Error(this._connectorNotFoundPrefix(`fInput with id ${ this.fConnection.fInputId } not found`));\n }\n return result;\n }\n\n private _sourceDifference = PointExtensions.initialize();\n private _targetDifference = PointExtensions.initialize();\n\n constructor(\n _injector: Injector,\n public fConnection: FConnectionBase,\n ) {\n this._fMediator = _injector.get(FMediator);\n this._fComponentsStore = _injector.get(FComponentsStore);\n this._initialize();\n }\n\n private _initialize(): void {\n this._fOutputWithRect = this._fMediator.execute<IConnectorAndRect>(new GetConnectorAndRectRequest(this._fOutput));\n this._fInputWithRect = this._fMediator.execute<IConnectorAndRect>(new GetConnectorAndRectRequest(this._fInput));\n }\n\n public setSourceDifference(difference: IPoint): void {\n this._sourceDifference = difference;\n }\n\n public setTargetDifference(difference: IPoint): void {\n this._targetDifference = difference;\n }\n\n protected redraw(): void {\n this._redrawConnection(this._recalculateConnection());\n }\n\n private _recalculateConnection(): ILine {\n return this._fMediator.execute<ILine>(new CalculateConnectionLineByBehaviorRequest(\n RoundedRect.fromRoundedRect(this._fOutputWithRect.fRect).addPoint(this._sourceDifference),\n RoundedRect.fromRoundedRect(this._fInputWithRect.fRect).addPoint(this._targetDifference),\n this.fConnection.fBehavior,\n this._fOutputWithRect.fConnector.fConnectableSide,\n this._fInputWithRect.fConnector.fConnectableSide\n ));\n }\n\n private _redrawConnection(line: ILine): void {\n this.fConnection.setLine(\n line,\n this._fOutputWithRect.fConnector.fConnectableSide,\n this._fInputWithRect.fConnector.fConnectableSide\n );\n this.fConnection.redraw();\n }\n\n private _connectorNotFoundPrefix(message: string): string {\n return `ConnectionDragHandler Error: Connection From (fOutput)${ this.fConnection.fOutputId } To (fInput)${ this.fConnection.fInputId }. ${ message }. Please ensure that all f-connections are associated with existing connectors`;\n }\n}\n","import { BaseConnectionDragHandler } from './base-connection.drag-handler';\nimport { FConnectionBase } from '../../../f-connection';\nimport { IPoint } from '@foblex/2d';\nimport { Injector } from '@angular/core';\n\nexport class SourceConnectionDragHandler extends BaseConnectionDragHandler {\n\n constructor(injector: Injector, fConnection: FConnectionBase) {\n super(injector, fConnection);\n }\n\n public override setSourceDifference(difference: IPoint) {\n super.setSourceDifference(difference);\n this.redraw();\n }\n}\n","import { BaseConnectionDragHandler } from './base-connection.drag-handler';\nimport { FConnectionBase } from '../../../f-connection';\nimport { IPoint } from '@foblex/2d';\nimport { Injector } from '@angular/core';\n\nexport class SourceTargetConnectionDragHandler extends BaseConnectionDragHandler {\n\n private readonly _callTracker = new Map<string, boolean>();\n\n constructor(injector: Injector, fConnection: FConnectionBase) {\n super(injector, fConnection);\n }\n\n public override setSourceDifference(difference: IPoint) {\n super.setSourceDifference(difference);\n this._checkAndTriggerAction();\n }\n\n public override setTargetDifference(difference: IPoint) {\n super.setTargetDifference(difference);\n this._checkAndTriggerAction();\n }\n\n private _checkAndTriggerAction() {\n if ([...this._callTracker.values()].every(Boolean)) {\n this._callTracker.clear();\n this.redraw();\n }\n }\n}\n\n","import { FConnectionBase } from '../../../f-connection';\nimport { BaseConnectionDragHandler } from './base-connection.drag-handler';\nimport { IPoint } from '@foblex/2d';\nimport { Injector } from '@angular/core';\n\nexport class TargetConnectionDragHandler extends BaseConnectionDragHandler {\n\n constructor(injector: Injector, fConnection: FConnectionBase) {\n super(injector, fConnection);\n }\n\n public override setTargetDifference(difference: IPoint) {\n super.setTargetDifference(difference);\n this.redraw();\n }\n}\n","import { INodeMoveLimitsAndPosition } from '../../i-node-move-limits-and-position';\n\nexport class CalculateCommonNodeMoveLimitsRequest {\n static readonly fToken = Symbol('CalculateCommonNodeMoveLimitsRequest');\n constructor(\n public limits: INodeMoveLimitsAndPosition[]\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { CalculateCommonNodeMoveLimitsRequest } from './calculate-common-node-move-limits.request';\nimport { IPoint } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { INodeMoveLimitsAndPosition } from '../../i-node-move-limits-and-position';\nimport { INodeMoveLimits } from '../../i-node-move-limits';\n\n@Injectable()\n@FExecutionRegister(CalculateCommonNodeMoveLimitsRequest)\nexport class CalculateCommonNodeMoveLimitsExecution\n implements IExecution<CalculateCommonNodeMoveLimitsRequest, INodeMoveLimits> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n private get _vCellSize(): number {\n return this._fComponentsStore.fDraggable!.vCellSize;\n }\n\n private get _hCellSize(): number {\n return this._fComponentsStore.fDraggable!.hCellSize;\n }\n\n public handle(request: CalculateCommonNodeMoveLimitsRequest): INodeMoveLimits {\n return this._calculateCommonLimits(request.limits);\n }\n\n private _calculateCommonLimits(limits: INodeMoveLimitsAndPosition[]): INodeMoveLimits {\n this._snapLimitToGrid(limits[0]);\n return limits.reduce((result: INodeMoveLimits, x) => {\n this._snapLimitToGrid(x);\n return this._clampRestrictions(result, x);\n }, limits[0]);\n }\n\n private _clampRestrictions(common: INodeMoveLimits, x: INodeMoveLimitsAndPosition): INodeMoveLimits {\n common.min = this._clampMinRestrictions(common.min, x.min);\n common.max = this._clampMaxRestrictions(common.max, x.max);\n return common;\n }\n\n private _clampMinRestrictions(common: IPoint, node: IPoint): IPoint {\n return {\n x: Math.max(common.x, node.x),\n y: Math.max(common.y, node.y),\n }\n }\n\n private _clampMaxRestrictions(common: IPoint, node: IPoint): IPoint {\n return {\n x: Math.min(common.x, node.x),\n y: Math.min(common.y, node.y),\n }\n }\n\n private _snapLimitToGrid(restriction: INodeMoveLimitsAndPosition): void {\n const { min, max, position } = restriction;\n restriction.min = {\n x: this._snapLimitToGridMinimum(position.x + min.x, this._hCellSize) - position.x,\n y: this._snapLimitToGridMinimum(position.y + min.y, this._vCellSize) - position.y,\n };\n restriction.max = {\n x: this._snapLimitToGridMaximum(position.x + max.x, this._hCellSize) - position.x,\n y: this._snapLimitToGridMaximum(position.y + max.y, this._vCellSize) - position.y,\n };\n }\n\n private _snapLimitToGridMinimum(value: number, cellSize: number): number {\n return Math.ceil(value / cellSize) * cellSize;\n }\n\n private _snapLimitToGridMaximum(value: number, cellSize: number): number {\n return Math.floor(value / cellSize) * cellSize;\n }\n}\n","import { FNodeMoveDragHandler } from '../../../f-node-move.drag-handler';\nimport { BaseConnectionDragHandler } from '../../../connection-drag-handlers/base-connection.drag-handler';\n\nexport class PutInputConnectionHandlersToArrayRequest {\n static readonly fToken = Symbol('PutInputConnectionHandlersToArrayRequest');\n\n constructor(\n public fDragHandler: FNodeMoveDragHandler,\n public outputIds: string[],\n public result: BaseConnectionDragHandler[]\n ) {\n }\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { PutInputConnectionHandlersToArrayRequest } from './put-input-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { FConnectionBase } from '../../../../../f-connection';\nimport { BaseConnectionDragHandler } from '../../../connection-drag-handlers/base-connection.drag-handler';\nimport { SourceTargetConnectionDragHandler } from '../../../connection-drag-handlers/source-target-connection.drag-handler';\nimport { TargetConnectionDragHandler } from '../../../connection-drag-handlers/target-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(PutInputConnectionHandlersToArrayRequest)\nexport class PutInputConnectionHandlersToArrayExecution\n implements IExecution<PutInputConnectionHandlersToArrayRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _injector = inject(Injector);\n\n private get _fConnections(): FConnectionBase[] {\n return this._fComponentsStore.fConnections;\n }\n\n public handle(request: PutInputConnectionHandlersToArrayRequest): void {\n this._getInputConnections(request.fDragHandler.fNode).forEach((fConnection) => {\n this._createAndSetConnectionToNodeHandler(fConnection, request);\n });\n }\n\n private _getInputConnections(fNode: FNodeBase): FConnectionBase[] {\n const ids = new Set(this._getNodeInputIds(fNode));\n return this._fConnections.filter((x) => ids.has(x.fInputId));\n }\n\n private _getNodeInputIds(fNode: FNodeBase): string[] {\n return this._fComponentsStore.fInputs\n .filter((x) => fNode.isContains(x.hostElement))\n .map((x) => x.fId);\n }\n\n private _createAndSetConnectionToNodeHandler(fConnection: FConnectionBase, request: PutInputConnectionHandlersToArrayRequest): void {\n let fHandler = this._getExistingConnectionHandler(request.result, fConnection);\n if (!fHandler) {\n fHandler = this._createConnectionHandler(request.outputIds, fConnection);\n request.result.push(fHandler);\n }\n request.fDragHandler.fTargetHandlers.push(fHandler);\n }\n\n private _getExistingConnectionHandler(fHandlers: BaseConnectionDragHandler[], fConnection: FConnectionBase): BaseConnectionDragHandler | undefined {\n return fHandlers.find((x) => x.fConnection.fId === fConnection.fId);\n }\n\n private _createConnectionHandler(outputIds: string[], fConnection: FConnectionBase): BaseConnectionDragHandler {\n let result: BaseConnectionDragHandler | undefined;\n if (outputIds.includes(fConnection.fOutputId)) {\n result = new SourceTargetConnectionDragHandler(this._injector, fConnection);\n } else {\n result = new TargetConnectionDragHandler(this._injector, fConnection);\n }\n return result;\n }\n}\n\n","import { FNodeMoveDragHandler } from '../../../f-node-move.drag-handler';\nimport { BaseConnectionDragHandler } from '../../../connection-drag-handlers/base-connection.drag-handler';\n\nexport class PutOutputConnectionHandlersToArrayRequest {\n static readonly fToken = Symbol('PutOutputConnectionHandlersToArrayRequest');\n\n constructor(\n public fDragHandler: FNodeMoveDragHandler,\n public inputIds: string[],\n public result: BaseConnectionDragHandler[]\n ) {\n }\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { PutOutputConnectionHandlersToArrayRequest } from './put-output-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { FConnectionBase } from '../../../../../f-connection';\nimport { SourceTargetConnectionDragHandler } from '../../../connection-drag-handlers/source-target-connection.drag-handler';\nimport { BaseConnectionDragHandler } from '../../../connection-drag-handlers/base-connection.drag-handler';\nimport { SourceConnectionDragHandler } from '../../../connection-drag-handlers/source-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(PutOutputConnectionHandlersToArrayRequest)\nexport class PutOutputConnectionHandlersToArrayExecution\n implements IExecution<PutOutputConnectionHandlersToArrayRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _injector = inject(Injector);\n\n private get _fConnections(): FConnectionBase[] {\n return this._fComponentsStore.fConnections;\n }\n\n public handle(request: PutOutputConnectionHandlersToArrayRequest): void {\n this._getOutputConnections(request.fDragHandler.fNode).forEach((fConnection) => {\n this._createAndSetConnectionToNodeHandler(fConnection, request);\n });\n }\n\n public _getOutputConnections(node: FNodeBase): FConnectionBase[] {\n const ids = new Set(this._getNodeOutputIds(node));\n return this._fConnections.filter((x) => ids.has(x.fOutputId));\n }\n\n private _getNodeOutputIds(node: FNodeBase): string[] {\n return this._fComponentsStore.fOutputs\n .filter((x) => node.isContains(x.hostElement))\n .map((x) => x.fId);\n }\n\n private _createAndSetConnectionToNodeHandler(fConnection: FConnectionBase, request: PutOutputConnectionHandlersToArrayRequest): void {\n let fHandler = this._getExistingConnectionHandler(request.result, fConnection);\n if (!fHandler) {\n fHandler = this._createConnectionHandler(request.inputIds, fConnection);\n request.result.push(fHandler);\n }\n request.fDragHandler.fSourceHandlers.push(fHandler);\n }\n\n private _getExistingConnectionHandler(fHandlers: BaseConnectionDragHandler[], fConnection: FConnectionBase): BaseConnectionDragHandler | undefined {\n return fHandlers.find((x) => x.fConnection.fId === fConnection.fId);\n }\n\n private _createConnectionHandler(inputIds: string[], fConnection: FConnectionBase): BaseConnectionDragHandler {\n let result: BaseConnectionDragHandler;\n if (inputIds.includes(fConnection.fInputId)) {\n result = new SourceTargetConnectionDragHandler(this._injector, fConnection);\n } else {\n result = new SourceConnectionDragHandler(this._injector, fConnection)\n }\n return result;\n }\n}\n\n","import { FNodeBase } from '../../../../../f-node';\n\nexport class CalculateNodeMoveLimitsRequest {\n static readonly fToken = Symbol('CalculateNodeMoveLimitsRequest');\n\n constructor(\n public fNode: FNodeBase,\n public hasParentNodeInSelected: boolean\n ) {\n }\n}\n","import {IMinMaxPoint} from \"@foblex/2d\";\n\nexport function infinityMinMax(): IMinMaxPoint {\n return {\n min: { x: -Infinity, y: -Infinity },\n max: { x: Infinity, y: Infinity }\n };\n}\n","import {inject, Injectable} from '@angular/core';\nimport {CalculateNodeMoveLimitsRequest} from './calculate-node-move-limits.request';\nimport {IPoint, IRect, PointExtensions} from '@foblex/2d';\nimport {FExecutionRegister, FMediator, IExecution} from '@foblex/mediator';\nimport {GetNormalizedParentNodeRectRequest} from '../../../../domain';\nimport {FNodeBase} from '../../../../../f-node';\nimport {GetNormalizedElementRectRequest} from '../../../../../domain';\nimport {INodeMoveLimits} from '../../i-node-move-limits';\nimport {infinityMinMax} from \"../../../../../utils\";\n\n@Injectable()\n@FExecutionRegister(CalculateNodeMoveLimitsRequest)\nexport class CalculateNodeMoveLimitsExecution\n implements IExecution<CalculateNodeMoveLimitsRequest, INodeMoveLimits> {\n\n private _fMediator = inject(FMediator);\n\n public handle(request: CalculateNodeMoveLimitsRequest): INodeMoveLimits {\n if (!request.fNode.fParentId || request.hasParentNodeInSelected) {\n return {...infinityMinMax()};\n }\n\n return this._calculateDifference(\n this._fParentRect(request.fNode), this._fNodeRect(request.fNode)\n );\n }\n\n private _fNodeRect(fNode: FNodeBase): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(fNode.hostElement));\n }\n\n private _fParentRect(fNode: FNodeBase): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedParentNodeRectRequest(fNode));\n }\n\n private _calculateDifference(fParentRect: IRect, fRect: IRect): INodeMoveLimits {\n return {\n min: this._calculateMinimumDifference(fParentRect, fRect),\n max: this._calculateMaximumDifference(fParentRect, fRect)\n };\n }\n\n private _calculateMinimumDifference(fParentRect: IRect, fRect: IRect): IPoint {\n return PointExtensions.initialize(fParentRect.x - fRect.x, fParentRect.y - fRect.y);\n }\n\n private _calculateMaximumDifference(fParentRect: IRect, fRect: IRect): IPoint {\n return PointExtensions.initialize(\n (fParentRect.x + fParentRect.width) - (fRect.x + fRect.width),\n (fParentRect.y + fParentRect.height) - (fRect.y + fRect.height),\n );\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class CreateMoveNodesDragModelFromSelectionRequest {\n static readonly fToken = Symbol('CreateMoveNodesDragModelFromSelectionRequest');\n\n constructor(\n public nodeWithDisabledSelection?: FNodeBase\n ) {\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/2d';\nimport { IFDragHandler } from '../f-drag-handler';\nimport { FNodeBase } from '../../f-node';\nimport { BaseConnectionDragHandler } from './connection-drag-handlers';\n\nexport class FNodeMoveDragHandler implements IFDragHandler {\n\n public readonly fEventType = 'move-node';\n\n private readonly _onPointerDownPosition = PointExtensions.initialize();\n\n constructor(\n public fNode: FNodeBase,\n public fSourceHandlers: BaseConnectionDragHandler[] = [],\n public fTargetHandlers: BaseConnectionDragHandler[] = [],\n ) {\n this._onPointerDownPosition = { ...fNode.position };\n }\n\n public onPointerMove(difference: IPoint): void {\n this._redraw(this._calculateNewPosition(difference));\n\n this.fSourceHandlers.forEach((x) => x.setSourceDifference(difference));\n this.fTargetHandlers.forEach((x) => x.setTargetDifference(difference));\n }\n\n private _calculateNewPosition(difference: IPoint): IPoint {\n return PointExtensions.sum(this._onPointerDownPosition, difference);\n }\n\n private _redraw(position: IPoint): void {\n this.fNode.updatePosition(position);\n this.fNode.redraw();\n }\n\n public onPointerUp(): void {\n this.fNode.positionChange.emit(this.fNode.position);\n }\n}\n","import { IMinMaxPoint, IPoint } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { Injector } from '@angular/core';\n\nexport class PointBoundsLimiter {\n\n private readonly _fComponentsStore: FComponentsStore;\n\n private readonly _vCellSize: number;\n private readonly _hCellSize: number;\n\n constructor(\n _injector: Injector,\n private _onPointerDown: IPoint,\n private readonly _limit: IMinMaxPoint\n ) {\n this._fComponentsStore = _injector.get(FComponentsStore);\n this._vCellSize = this._fComponentsStore.fDraggable!.vCellSize;\n this._hCellSize = this._fComponentsStore.fDraggable!.hCellSize;\n }\n\n public limit(difference: IPoint, adjustCellSize: boolean): IPoint {\n const { min, max } = this._limit;\n\n const { x, y } = this._cellSizeStrategies[ +adjustCellSize ](difference);\n\n return {\n x: this._clamp(x, min.x, max.x),\n y: this._clamp(y, min.y, max.y),\n };\n }\n\n private _cellSizeStrategies: Record<number, (difference: IPoint) => IPoint> = {\n 0: this._skipCellSize.bind(this),\n 1: this._applyCellSize.bind(this)\n };\n\n private _applyCellSize(difference: IPoint): IPoint {\n return {\n x: this._snapToGrid(this._onPointerDown.x + difference.x, this._hCellSize) - this._onPointerDown.x,\n y: this._snapToGrid(this._onPointerDown.y + difference.y, this._vCellSize) - this._onPointerDown.y\n };\n }\n\n private _skipCellSize(difference: IPoint): IPoint {\n return difference;\n }\n\n private _clamp(value: number, min: number, max: number): number {\n return Math.min(Math.max(value, min), max);\n }\n\n private _snapToGrid(value: number, cellSize: number): number {\n return Math.round(value / cellSize) * cellSize;\n }\n}\n","import { IMinMaxPoint, IPoint, IRect } from '@foblex/2d';\nimport { IFDragHandler } from '../f-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\nimport { PointBoundsLimiter } from './point-bounds-limiter';\nimport { FNodeMoveDragHandler } from './f-node-move.drag-handler';\nimport { Injector } from '@angular/core';\n\nexport class FSummaryNodeMoveDragHandler implements IFDragHandler {\n\n public readonly fEventType = 'move-node';\n public readonly fData: any;\n\n private readonly _fComponentStore: FComponentsStore;\n private readonly _fBoundsLimiter: PointBoundsLimiter;\n\n constructor(\n _injector: Injector,\n public limits: IMinMaxPoint,\n public fHandlers: FNodeMoveDragHandler[],\n public commonRect: IRect\n ) {\n this._fComponentStore = _injector.get(FComponentsStore);\n this._fBoundsLimiter = new PointBoundsLimiter(_injector, this.commonRect, limits);\n this.fData = {\n fNodeIds: this.fHandlers.map((x) => x.fNode.fId)\n };\n }\n\n public onPointerMove(difference: IPoint): void {\n const adjustCellSize = this._fComponentStore.fDraggable!.fCellSizeWhileDragging;\n const differenceWithRestrictions = this._fBoundsLimiter.limit(difference, adjustCellSize);\n\n this.fHandlers.forEach((x) => x.onPointerMove(differenceWithRestrictions));\n }\n\n public onPointerUp(): void {\n this.fHandlers.forEach((x) => x.onPointerUp());\n }\n\n public calculateRestrictedDifference(difference: IPoint): IPoint {\n return this._fBoundsLimiter.limit(difference, true);\n }\n}\n","import { inject, Injectable, Injector } 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 { FNodeMoveDragHandler } from '../f-node-move.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { CalculateNodeMoveLimitsRequest } from './domain/calculate-node-move-limits';\nimport { PutOutputConnectionHandlersToArrayRequest } from './domain/put-output-connection-handlers-to-array';\nimport {\n PutInputConnectionHandlersToArrayRequest\n} from './domain/put-input-connection-handlers-to-array';\nimport { IsArrayHasParentNodeRequest } from '../../domain';\nimport {\n GetDeepChildrenNodesAndGroupsRequest,\n GetNormalizedElementRectRequest,\n GetParentNodesRequest\n} from '../../../domain';\nimport { flatMap } from '@foblex/utils';\nimport { CalculateCommonNodeMoveLimitsRequest } from './domain/calculate-common-node-move-limits';\nimport { IMinMaxPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { BaseConnectionDragHandler } from '../connection-drag-handlers';\nimport { FSummaryNodeMoveDragHandler } from '../f-summary-node-move.drag-handler';\nimport { INodeMoveLimitsAndPosition } from './i-node-move-limits-and-position';\nimport { INodeMoveLimits } from './i-node-move-limits';\n\n@Injectable()\n@FExecutionRegister(CreateMoveNodesDragModelFromSelectionRequest)\nexport class CreateMoveNodesDragModelFromSelectionExecution\n implements IExecution<CreateMoveNodesDragModelFromSelectionRequest, FSummaryNodeMoveDragHandler> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _injector = inject(Injector);\n\n public handle(request: CreateMoveNodesDragModelFromSelectionRequest): FSummaryNodeMoveDragHandler {\n const fDraggedNodes = this._getDraggedNodes(request.nodeWithDisabledSelection);\n\n const fNodesToDrag = this._getNodesToDragWithCommonLimits(fDraggedNodes);\n\n const fDragHandlers = this._mapToNodeDragHandlers(fNodesToDrag);\n\n this._setConnectionsHandlersToNodes(fDragHandlers, this._getAllOutputIds(fNodesToDrag), this._getAllInputIds(fNodesToDrag));\n\n const commonLimits = this._calculateCommonLimits(\n this._getNodesMoveLimits(fNodesToDrag, [], fDraggedNodes)\n );\n\n return new FSummaryNodeMoveDragHandler(\n this._injector,\n commonLimits, fDragHandlers, this._getDraggedNodesBoundingRect(fNodesToDrag)\n );\n }\n\n private _getDraggedNodes(nodeWithDisabledSelection?: FNodeBase): FNodeBase[] {\n const result = this._getNodesFromSelection();\n if (nodeWithDisabledSelection) {\n result.push(nodeWithDisabledSelection);\n }\n return result;\n }\n\n private _getNodesFromSelection(): FNodeBase[] {\n return this._fDraggableDataContext.selectedItems\n .map((x) => this._findNode(x.hostElement))\n .filter((x): x is FNodeBase => !!x);\n }\n\n private _findNode(hostElement: HTMLElement | SVGElement): FNodeBase | undefined {\n return this._fComponentsStore.fNodes\n .find(n => n.isContains(hostElement));\n }\n\n private _getNodesToDragWithCommonLimits(fDraggedNodes: FNodeBase[]): FNodeBase[] {\n return fDraggedNodes.reduce((result: FNodeBase[], x: FNodeBase) => {\n result.push(x);\n return result.concat(this._getChildrenNodes(x.fId));\n }, []);\n }\n\n private _getNodesMoveLimits(fNodes: FNodeBase[], fParentNodes: FNodeBase[], fDraggedNodes: FNodeBase[]): INodeMoveLimitsAndPosition[] {\n return fDraggedNodes.map((x) => {\n const fParentNodes = this._fMediator.execute<FNodeBase[]>(new GetParentNodesRequest(x));\n return { position: x.position, ...this._getNodeMoveLimits(x, fParentNodes, fDraggedNodes) };\n });\n }\n\n private _getNodeMoveLimits(fNode: FNodeBase, fParentNodes: FNodeBase[], fDraggedNodes: FNodeBase[]): INodeMoveLimits {\n return this._fMediator.execute<IMinMaxPoint>(\n new CalculateNodeMoveLimitsRequest(fNode, this._isParentNodeInArray(fParentNodes, fDraggedNodes))\n );\n }\n\n private _isParentNodeInArray(fParentNodes: FNodeBase[], fDraggedNodes: FNodeBase[]): boolean {\n return this._fMediator.execute<boolean>(new IsArrayHasParentNodeRequest(fParentNodes, fDraggedNodes))\n }\n\n private _getChildrenNodes(fId: string): FNodeBase[] {\n return this._fMediator.execute<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private _calculateCommonLimits(limits: INodeMoveLimitsAndPosition[]): IMinMaxPoint {\n return this._fMediator.execute<IMinMaxPoint>(\n new CalculateCommonNodeMoveLimitsRequest(limits)\n );\n }\n\n private _getAllOutputIds(fNodes: FNodeBase[]): string[] {\n return flatMap(fNodes, (fNode) => this._getNodeOutputIds(fNode));\n }\n\n private _getNodeOutputIds(fNode: FNodeBase): string[] {\n return this._fComponentsStore.fOutputs.filter((x) => fNode.fId === x.fNodeId)\n .map((x) => x.fId);\n }\n\n private _getAllInputIds(fNodes: FNodeBase[]): string[] {\n return flatMap(fNodes, (fNode) => this._getNodeInputIds(fNode));\n }\n\n private _getNodeInputIds(fNode: FNodeBase): string[] {\n return this._fComponentsStore.fInputs.filter((x) => fNode.fId === x.fNodeId)\n .map((x) => x.fId);\n }\n\n private _mapToNodeDragHandlers(items: FNodeBase[]): FNodeMoveDragHandler[] {\n return items.map((x) => new FNodeMoveDragHandler(x));\n }\n\n private _setConnectionsHandlersToNodes(\n handlers: FNodeMoveDragHandler[], outputIds: string[], inputIds: string[]\n ): void {\n const fConnectionHandlers: BaseConnectionDragHandler[] = [];\n handlers.forEach((fNodeHandler) => {\n this._fMediator.execute(new PutOutputConnectionHandlersToArrayRequest(fNodeHandler, inputIds, fConnectionHandlers));\n this._fMediator.execute(new PutInputConnectionHandlersToArrayRequest(fNodeHandler, outputIds, fConnectionHandlers));\n });\n }\n\n private _getDraggedNodesBoundingRect(fNodes: FNodeBase[]): IRect {\n return RectExtensions.union(fNodes.map((x) => {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.hostElement));\n })) || RectExtensions.initialize();\n }\n}\n","import { CreateMoveNodesDragModelFromSelectionExecution } from './create-move-nodes-drag-model-from-selection.execution';\nimport { CalculateNodeMoveLimitsExecution } from './domain/calculate-node-move-limits';\nimport { PutInputConnectionHandlersToArrayExecution } from './domain/put-input-connection-handlers-to-array';\nimport { PutOutputConnectionHandlersToArrayExecution } from './domain/put-output-connection-handlers-to-array';\nimport { CalculateCommonNodeMoveLimitsExecution } from './domain/calculate-common-node-move-limits';\n\nexport const CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS = [\n\n CalculateCommonNodeMoveLimitsExecution,\n\n CalculateNodeMoveLimitsExecution,\n\n PutInputConnectionHandlersToArrayExecution,\n\n PutOutputConnectionHandlersToArrayExecution,\n\n CreateMoveNodesDragModelFromSelectionExecution,\n];\n","import { IRect } from '@foblex/2d';\nimport { FNodeBase } from '../../../f-node';\n\nexport class LineAlignmentPreparationRequest {\n static readonly fToken = Symbol('LineAlignmentPreparationRequest');\n\n constructor(\n public fNodes: FNodeBase[],\n public commonRect: IRect\n ) {\n }\n}\n","import { findClosestAlignment, IMinMaxPoint, IPoint, IRect, ISize, ITransformModel, RectExtensions } from '@foblex/2d';\nimport { IFDragHandler } from '../index';\nimport { FComponentsStore } from '../../f-storage';\nimport { ILineAlignmentResult, LineService } from '../../f-line-alignment';\nimport { Injector } from '@angular/core';\n\nexport class FLineAlignmentDragHandler implements IFDragHandler {\n\n public readonly fEventType = 'line-alignment';\n\n private readonly _fComponentsStore: FComponentsStore;\n\n private _debounceTimer: any = null;\n\n private readonly _transform: ITransformModel;\n\n constructor(\n _injector: Injector,\n private _lineService: LineService,\n private _size: ISize,\n private _draggedNodeRect: IRect,\n private _rects: IRect[],\n private _restrictions: IMinMaxPoint,\n ) {\n this._fComponentsStore = _injector.get(FComponentsStore);\n this._transform = this._fComponentsStore.fCanvas?.transform!;\n }\n\n public onPointerMove(difference: IPoint): void {\n const restrictedDifference = this._getDifference(difference);\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n }\n\n this._debounceTimer = setTimeout(() => this._drawIntersectingLines(restrictedDifference), 15);\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 private _getDifference(difference: IPoint): IPoint {\n return {\n x: Math.min(Math.max(difference.x, this._restrictions.min.x), this._restrictions.max.x),\n y: Math.min(Math.max(difference.y, this._restrictions.min.y), this._restrictions.max.y)\n }\n }\n\n public findNearestCoordinate(difference: IPoint): ILineAlignmentResult {\n const rect = RectExtensions.addPoint(this._draggedNodeRect, difference);\n return findClosestAlignment(this._rects, rect, this._fComponentsStore.fLineAlignment!.fAlignThreshold());\n }\n\n public onPointerUp(): void {\n this._lineService.hideVerticalLine();\n this._lineService.hideHorizontalLine();\n\n if (this._debounceTimer) {\n clearTimeout(this._debounceTimer);\n this._debounceTimer = null;\n }\n }\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 { Directive, InjectionToken, InputSignalWithTransform } from '@angular/core';\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;\n\n public abstract fAlignThreshold: InputSignalWithTransform<number, unknown>;\n}\n","import { Component, ElementRef, inject, input, numberAttribute, OnDestroy, OnInit } from '@angular/core';\nimport { F_LINE_ALIGNMENT, FLineAlignmentBase } from './f-line-alignment-base';\nimport {\n RemoveLineAlignmentFromStoreRequest,\n AddLineAlignmentToStoreRequest,\n} from '../domain';\nimport { FMediator } from '@foblex/mediator';\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\n extends FLineAlignmentBase implements OnInit, OnDestroy {\n\n public override fAlignThreshold = input<number, unknown>(10, { transform: numberAttribute });\n\n private readonly _fMediator = inject(FMediator);\n private readonly _elementReference = inject(ElementRef);\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddLineAlignmentToStoreRequest(this));\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveLineAlignmentFromStoreRequest());\n }\n}\n","import { FLineAlignmentComponent } from './f-line-alignment.component';\n\nexport const F_LINE_ALIGNMENT_PROVIDERS = [\n FLineAlignmentComponent\n];\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { LineAlignmentPreparationRequest } from './line-alignment-preparation.request';\nimport { IMinMaxPoint, IRect, ISize } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetFlowHostElementRequest } from '../../../domain';\nimport { GetNormalizedElementRectRequest } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext, FSummaryNodeMoveDragHandler } from '../../index';\nimport { FLineAlignmentDragHandler } from '../f-line-alignment.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { LineService } from '../../../f-line-alignment';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(LineAlignmentPreparationRequest)\nexport class LineAlignmentPreparationExecution implements IExecution<LineAlignmentPreparationRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _fBrowser = inject(BrowserService);\n private readonly _injector = inject(Injector);\n\n private _lineService: LineService | undefined;\n\n public handle(request: LineAlignmentPreparationRequest): void {\n this._addLineAlignmentDragHandler(request.fNodes, request.commonRect);\n }\n\n private _addLineAlignmentDragHandler(fNodes: FNodeBase[], commonRect: IRect): void {\n this._fDraggableDataContext.draggableItems.push(\n new FLineAlignmentDragHandler(\n this._injector,\n this._lineService || this._createLineService(),\n this._getFlowHostSize(),\n commonRect,\n this._getStaticNodeRects(fNodes),\n this._getCommonRestrictions()\n )\n );\n }\n\n private _getFlowHostSize(): ISize {\n return this._fMediator.execute<HTMLElement>(new GetFlowHostElementRequest())\n .getBoundingClientRect();\n }\n\n private _createLineService(): LineService {\n this._lineService = new LineService(\n this._fBrowser,\n this._fComponentsStore.fLineAlignment!.hostElement\n );\n return this._lineService;\n }\n\n private _getStaticNodeRects(fNodes: FNodeBase[]): IRect[] {\n return this._getStaticNodes(fNodes).map((x) => {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.hostElement));\n })\n }\n\n private _getStaticNodes(fNodes: FNodeBase[]): FNodeBase[] {\n return this._fComponentsStore.fNodes\n .filter((x) => !fNodes.includes(x));\n }\n\n private _getCommonRestrictions(): IMinMaxPoint {\n return this._fDraggableDataContext.draggableItems\n .filter((x) => x instanceof FSummaryNodeMoveDragHandler)[0].limits;\n }\n}\n","import { FEventTrigger } from '../../../domain';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeMovePreparationRequest {\n static readonly fToken = Symbol('FNodeMovePreparationRequest');\n\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FNodeMovePreparationRequest } from './f-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 { FNodeBase } from '../../../f-node';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from '../create-move-nodes-drag-model-from-selection';\nimport { isValidEventTrigger, SelectAndUpdateNodeLayerRequest } from '../../../domain';\nimport { isClosestElementHasClass } from '@foblex/utils';\nimport { LineAlignmentPreparationRequest } from '../line-alignment-preparation';\nimport { FSummaryNodeMoveDragHandler } from '../f-summary-node-move.drag-handler';\n\n@Injectable()\n@FExecutionRegister(FNodeMovePreparationRequest)\nexport class FNodeMovePreparationExecution implements IExecution<FNodeMovePreparationRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private _fNode: FNodeBase | undefined;\n\n public handle(request: FNodeMovePreparationRequest): void {\n if(!this._isValid(request) || !this._isValidTrigger(request)) {\n return;\n }\n\n const summaryDragHandler = this._calculateDraggedItems(this._fNode!);\n\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost).div(this._transform.scale);\n this._fDraggableDataContext.draggableItems = [summaryDragHandler];\n\n if(this._fComponentsStore.fLineAlignment) {\n this._fMediator.execute<void>(\n new LineAlignmentPreparationRequest(\n summaryDragHandler.fHandlers.map((x) => x.fNode), summaryDragHandler.commonRect\n )\n );\n }\n }\n\n private _isValid(request: FNodeMovePreparationRequest): boolean {\n return this._fDraggableDataContext.isEmpty()\n && this._isDragHandleElement(request.event.targetElement)\n && !!this._getNode(request.event.targetElement);\n }\n\n private _isDragHandleElement(element: HTMLElement): boolean {\n return isClosestElementHasClass(element, '.f-drag-handle');\n }\n\n private _getNode(element: HTMLElement): FNodeBase | undefined {\n this._fNode = this._fComponentsStore.fNodes\n .find(x => x.isContains(element) && !x.fDraggingDisabled);\n return this._fNode;\n }\n\n private _isValidTrigger(request: FNodeMovePreparationRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n\n //We drag nodes from selection model\n private _calculateDraggedItems(fNode: FNodeBase): FSummaryNodeMoveDragHandler {\n let result: FSummaryNodeMoveDragHandler;\n if (!fNode.fSelectionDisabled) {\n // Need to select node before drag\n this._fMediator.execute(new SelectAndUpdateNodeLayerRequest(fNode));\n\n result = this._dragModelFromSelection();\n } else {\n // User can drag node that can't be selected\n result = this._dragModelFromSelection(fNode);\n }\n return result;\n }\n\n private _dragModelFromSelection(nodeWithDisabledSelection?: FNodeBase): FSummaryNodeMoveDragHandler {\n return this._fMediator.execute(\n new CreateMoveNodesDragModelFromSelectionRequest(nodeWithDisabledSelection)\n );\n }\n}\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeMoveFinalizeRequest {\n static readonly fToken = Symbol('FNodeMoveFinalizeRequest');\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import {IPoint} from '@foblex/2d';\n\nexport class FMoveNodesEvent {\n\n constructor(\n public fNodes: { id: string; position: IPoint }[],\n ) {\n }\n}\n","import {inject, Injectable} from '@angular/core';\nimport {FNodeMoveFinalizeRequest} from './f-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';\nimport {IFDragHandler} from '../../f-drag-handler';\nimport {FNodeDropToGroupDragHandler} from '../../f-drop-to-group';\nimport {ILineAlignmentResult, INearestCoordinateResult} from '../../../f-line-alignment';\nimport {FLineAlignmentDragHandler} from '../f-line-alignment.drag-handler';\nimport {FSummaryNodeMoveDragHandler} from '../f-summary-node-move.drag-handler';\nimport {FNodeBase} from '../../../f-node';\nimport {FMoveNodesEvent} from \"../f-move-nodes.event\";\n\n@Injectable()\n@FExecutionRegister(FNodeMoveFinalizeRequest)\nexport class FNodeMoveFinalizeExecution implements IExecution<FNodeMoveFinalizeRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n public handle(request: FNodeMoveFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n const difference = this._getDifferenceWithLineAlignment(\n this._getDifferenceBetweenPreparationAndFinalize(request.event.getPosition())\n );\n\n const firstNodeOrGroup: FSummaryNodeMoveDragHandler = this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof FSummaryNodeMoveDragHandler)!;\n\n this._finalizeMove(firstNodeOrGroup.calculateRestrictedDifference(difference));\n\n this._applyConnectionUnderDroppedNode();\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some((x) => x instanceof FSummaryNodeMoveDragHandler);\n }\n\n private _finalizeMove(difference: IPoint): void {\n this._getItems().forEach((x) => {\n x.onPointerMove({...difference});\n x.onPointerUp?.();\n });\n\n if (this._getItems().length) {\n const event = this._getItems()[0].fData.fNodeIds.map((id: string) => {\n return {\n id,\n position: this._fComponentsStore.fNodes.find(x => x.fId === id)!.position,\n }\n });\n this._fComponentsStore.fDraggable?.fMoveNodes.emit(new FMoveNodesEvent(event));\n }\n }\n\n private _getItems(): IFDragHandler[] {\n return this._fDraggableDataContext.draggableItems\n .filter((x) => !(x instanceof FNodeDropToGroupDragHandler));\n }\n\n private _getDifferenceBetweenPreparationAndFinalize(position: IPoint): Point {\n return Point.fromPoint(position).elementTransform(this._fHost)\n .div(this._fDraggableDataContext.onPointerDownScale)\n .sub(this._fDraggableDataContext.onPointerDownPosition);\n }\n\n private _getDifferenceWithLineAlignment(difference: IPoint): IPoint {\n\n return this._applyLineAlignmentDifference(\n difference,\n this._getLineAlignmentDifference(difference)\n );\n }\n\n private _getLineAlignmentDifference(difference: IPoint): ILineAlignmentResult | undefined {\n return this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof FLineAlignmentDragHandler)\n ?.findNearestCoordinate(difference);\n }\n\n private _applyLineAlignmentDifference(difference: IPoint, intersection: ILineAlignmentResult | undefined): IPoint {\n if (intersection) {\n difference.x = this._isIntersectValue(intersection.xResult) ? (difference.x - intersection.xResult.distance!) : difference.x;\n difference.y = this._isIntersectValue(intersection.yResult) ? (difference.y - intersection.yResult.distance!) : difference.y;\n }\n return difference;\n }\n\n private _isIntersectValue(result: INearestCoordinateResult): boolean {\n return result.value !== undefined && result.value !== null;\n }\n\n private _applyConnectionUnderDroppedNode(): void {\n if (this._isDraggedJustOneNode() && this._fComponentsStore.fDraggable?.fEmitOnNodeIntersect) {\n\n const fNode = this._getFirstNodeOrGroup();\n setTimeout(() => this._fMediator.execute(new IsConnectionUnderNodeRequest(fNode)));\n }\n }\n\n private _isDraggedJustOneNode(): boolean {\n return (this._fDraggableDataContext.draggableItems[0] as FSummaryNodeMoveDragHandler).fHandlers.length === 1;\n }\n\n private _getFirstNodeOrGroup(): FNodeBase {\n return (this._fDraggableDataContext.draggableItems[0] as FSummaryNodeMoveDragHandler).fHandlers[0].fNode;\n }\n}\n","import { CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS } from './create-move-nodes-drag-model-from-selection';\nimport { FNodeMoveFinalizeExecution } from './move-finalize';\nimport { FNodeMovePreparationExecution } from './move-preparation';\nimport { LineAlignmentPreparationExecution } from './line-alignment-preparation';\n\nexport const NODE_PROVIDERS = [\n\n ...CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS,\n\n LineAlignmentPreparationExecution,\n\n FNodeMoveFinalizeExecution,\n\n FNodeMovePreparationExecution,\n];\n","import { IPoint } from '@foblex/2d';\n\nexport class FDropToGroupEvent {\n\n constructor(\n public fTargetNode: string,\n public fNodes: string[],\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FNodeDropToGroupFinalizeRequest } from './f-node-drop-to-group-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeDropToGroupDragHandler } from '../f-node-drop-to-group.drag-handler';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FSummaryNodeMoveDragHandler } from '../../f-node-move';\nimport { FDropToGroupEvent } from '../f-drop-to-group.event';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\n@Injectable()\n@FExecutionRegister(FNodeDropToGroupFinalizeRequest)\nexport class FNodeDropToGroupFinalizeExecution\n implements IExecution<FNodeDropToGroupFinalizeRequest, void> {\n\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: FNodeDropToGroupFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n const item = this._getDragHandleItem();\n if(item.fNodeWithRect) {\n this._emitDroppedChildrenEvent(item.fNodeWithRect.node.fId, request.event);\n }\n item.onPointerUp?.();\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems\n .some((x) => x instanceof FNodeDropToGroupDragHandler);\n }\n\n private _emitDroppedChildrenEvent(fTargetId: string, event: IPointerEvent): void {\n this._fComponentsStore.fDraggable?.fDropToGroup.emit(\n new FDropToGroupEvent(fTargetId, this._getDraggedNodeIds(), event.getPosition())\n );\n }\n\n private _getDragHandleItem(): FNodeDropToGroupDragHandler {\n const result = this._findDragHandleItem();\n if(!result) {\n throw new Error('NodeDragToParentDragHandler not found');\n }\n return result;\n }\n\n private _findDragHandleItem(): FNodeDropToGroupDragHandler | undefined {\n return this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof FNodeDropToGroupDragHandler);\n }\n\n private _getDraggedNodeIds(): string[] {\n return this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof FSummaryNodeMoveDragHandler)?.fHandlers\n .map((x) => x.fNode.fId) || [];\n }\n}\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeDropToGroupPreparationRequest {\n static readonly fToken = Symbol('FNodeDropToGroupPreparationRequest');\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { FExternalItemBase } from '../../f-external-item-base';\n\nexport class FExternalItemCreatePlaceholderRequest {\n static readonly fToken = Symbol('FExternalItemCreatePlaceholderRequest');\n\n constructor(\n public fExternalItem: FExternalItemBase,\n ) {\n }\n}\n","import { FExternalItemCreatePlaceholderRequest } from './f-external-item-create-placeholder.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { EmbeddedViewRef, inject, Injectable, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { deepCloneNode, getOrCreateRootNodeForViewRef } from '@foblex/utils';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(FExternalItemCreatePlaceholderRequest)\nexport class FExternalItemCreatePlaceholderExecution\n implements IExecution<FExternalItemCreatePlaceholderRequest, HTMLElement | SVGElement> {\n\n private readonly _fBrowser = inject(BrowserService);\n private readonly _containerRef = inject(ViewContainerRef);\n\n public handle(request: FExternalItemCreatePlaceholderRequest): HTMLElement | SVGElement {\n const { hostElement, fPlaceholder } = request.fExternalItem;\n\n const result = fPlaceholder ?\n this._fromTemplate(fPlaceholder) :\n this._fromHost(hostElement as HTMLElement);\n\n result.classList.add('f-external-item-placeholder');\n result.style.pointerEvents = 'none';\n\n return result;\n }\n\n private _fromTemplate(template: TemplateRef<any>): HTMLElement {\n return getOrCreateRootNodeForViewRef(this._createViewRef(template), this._fBrowser.document);\n }\n\n private _fromHost(element: HTMLElement): HTMLElement {\n return deepCloneNode(element);\n }\n\n private _createViewRef(template: TemplateRef<any>): EmbeddedViewRef<any> {\n const result = this._containerRef.createEmbeddedView(template);\n result.detectChanges();\n return result;\n }\n}\n","import { FExternalItemBase } from '../../f-external-item-base';\n\nexport class FExternalItemCreatePreviewRequest {\n static readonly fToken = Symbol('FExternalItemCreatePreviewRequest');\n\n constructor(\n public fExternalItem: FExternalItemBase,\n ) {\n }\n}\n","import { FExternalItemCreatePreviewRequest } from './f-external-item-create-preview.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { EmbeddedViewRef, inject, Injectable, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { deepCloneNode, disableDragInteractions, extendStyles, getOrCreateRootNodeForViewRef } from '@foblex/utils';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(FExternalItemCreatePreviewRequest)\nexport class FExternalItemCreatePreviewExecution\n implements IExecution<FExternalItemCreatePreviewRequest, HTMLElement | SVGElement> {\n\n private readonly _fBrowser = inject(BrowserService);\n private readonly _containerRef = inject(ViewContainerRef);\n\n public handle(request: FExternalItemCreatePreviewRequest): HTMLElement | SVGElement {\n const { hostElement, fPreview } = request.fExternalItem;\n\n const result = fPreview ?\n this._fromTemplate(fPreview) :\n this._fromHost(hostElement as HTMLElement);\n\n this._setPreviewStyles(result);\n disableDragInteractions(result);\n result.classList.add('f-external-item-preview');\n\n return result;\n }\n\n private _fromTemplate(template: TemplateRef<any>): HTMLElement {\n return getOrCreateRootNodeForViewRef(this._createViewRef(template), this._fBrowser.document);\n }\n\n private _fromHost(element: HTMLElement): HTMLElement {\n return deepCloneNode(element);\n }\n\n private _createViewRef(template: TemplateRef<any>): EmbeddedViewRef<any> {\n const result = this._containerRef.createEmbeddedView(template);\n result.detectChanges();\n return result;\n }\n\n private _setPreviewStyles(element: HTMLElement): void {\n extendStyles(\n element.style,\n {\n 'pointer-events': 'none',\n 'margin': 'showPopover' in element ? '0 auto 0 0' : '0',\n 'position': 'fixed',\n 'top': '0',\n 'left': '0',\n 'z-index': '1000',\n },\n new Set([ 'position', ]),\n );\n }\n}\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FExternalItemFinalizeRequest {\n static readonly fToken = Symbol('FExternalItemFinalizeRequest');\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import {IPoint, IRect, ITransformModel, Point, RectExtensions} from '@foblex/2d';\nimport {\n FExternalItemBase,\n FExternalItemCreatePlaceholderRequest,\n FExternalItemCreatePreviewRequest,\n IFExternalItemDragResult\n} from '../../f-external-item';\nimport {FDragHandlerResult, IFDragHandler, PointBoundsLimiter} from '../../f-draggable';\nimport {BrowserService} from '@foblex/platform';\nimport {FMediator} from '@foblex/mediator';\nimport {Injector} from '@angular/core';\nimport {FComponentsStore} from \"../../f-storage\";\nimport {GetNormalizedElementRectRequest} from \"../../domain\";\nimport {infinityMinMax} from \"../../utils\";\n\nexport class FExternalItemDragHandler implements IFDragHandler {\n\n public fEventType = 'external-item';\n public fData: any;\n\n private readonly _fResult: FDragHandlerResult<IFExternalItemDragResult>;\n private readonly _fMediator: FMediator;\n private readonly _fBrowser: BrowserService;\n private readonly _fComponentStore: FComponentsStore;\n\n private _preview: HTMLElement | SVGElement | undefined;\n private _placeholder: HTMLElement | SVGElement | undefined;\n private _onPointerDownRect: IRect = RectExtensions.initialize();\n private readonly _fBoundsLimiter: PointBoundsLimiter;\n\n private get _fItemHost(): HTMLElement | SVGElement {\n return this._fExternalItem.hostElement;\n }\n\n private get _body(): Element {\n return this._fBrowser.document.fullscreenElement ?? this._fBrowser.document.body;\n }\n\n private get _transform(): ITransformModel {\n return this._fComponentStore.fCanvas!.transform;\n }\n\n private readonly _fItemHostDisplay: string | undefined;\n\n constructor(\n _injector: Injector,\n private _fExternalItem: FExternalItemBase,\n ) {\n this.fData = {fData: _fExternalItem.fData};\n this._fResult = _injector.get(FDragHandlerResult);\n this._fMediator = _injector.get(FMediator);\n this._fBrowser = _injector.get(BrowserService);\n this._fComponentStore = _injector.get(FComponentsStore);\n\n this._fBoundsLimiter = new PointBoundsLimiter(\n _injector, this._getStartPoint(), infinityMinMax()\n );\n\n this._fItemHostDisplay = this._fItemHost.style.display;\n }\n\n private _getStartPoint(): IPoint {\n return this._fMediator.execute<IRect>(\n new GetNormalizedElementRectRequest(this._fExternalItem.hostElement)\n );\n }\n\n public prepareDragSequence(): void {\n this._onPointerDownRect = this._getExternalItemRect();\n\n this._createAndAppendPreview();\n this._createAndAppendPlaceholder();\n\n this._setFResultData();\n }\n\n private _createAndAppendPreview(): void {\n this._preview = this._fMediator.execute<HTMLElement>(\n new FExternalItemCreatePreviewRequest(this._fExternalItem)\n );\n if (this._fExternalItem.fPreviewMatchSize) {\n this._matchElementSize(this._preview, this._onPointerDownRect);\n }\n this._preview!.style.transform = setTransform(this._onPointerDownRect);\n this._body.appendChild(this._preview);\n }\n\n private _createAndAppendPlaceholder(): void {\n this._placeholder = this._fMediator.execute<HTMLElement>(\n new FExternalItemCreatePlaceholderRequest(this._fExternalItem)\n );\n this._body.appendChild(this._fItemHost.parentElement!.replaceChild(this._placeholder!, this._fItemHost));\n this._fItemHost.style.display = 'none';\n }\n\n private _matchElementSize(target: HTMLElement, sourceRect: IRect): void {\n target.style.width = `${sourceRect.width}px`;\n target.style.height = `${sourceRect.height}px`;\n }\n\n private _setFResultData(): void {\n this._fResult.setData({\n preview: this._preview,\n fExternalItem: this._fExternalItem,\n });\n }\n\n private _getExternalItemRect(): IRect {\n const rect = this._fExternalItem.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 onPointerMove(difference: IPoint): void {\n const adjustCellSize = this._fComponentStore.fDraggable?.fCellSizeWhileDragging ?? false;\n const differenceWithRestrictions = Point.fromPoint(this._fBoundsLimiter.limit(difference, adjustCellSize))\n .mult(this._transform.scale);\n\n const position = Point.fromPoint(this._onPointerDownRect).add(differenceWithRestrictions);\n this._preview!.style.transform = setTransform(position);\n }\n\n public onPointerUp(): void {\n this._body.removeChild(this._preview!);\n\n this._placeholder!.parentElement!.replaceChild(this._fItemHost, this._placeholder!);\n this._fItemHost.style.display = this._fItemHostDisplay ?? 'block';\n }\n}\n\nfunction setTransform({x, y}: IPoint): string {\n return `translate3d(${Math.round(x)}px, ${Math.round(y)}px, 0)`;\n}\n\n","import {IPoint, IRect} from '@foblex/2d';\n\nexport class FCreateNodeEvent<TData = any> {\n\n constructor(\n public rect: IRect,\n public data: TData,\n public fTargetNode?: string,\n public fDropPosition?: IPoint,\n ) {\n }\n}\n","import {EventEmitter, inject, Injectable} from '@angular/core';\nimport {FExternalItemFinalizeRequest} from './f-external-item-finalize.request';\nimport {IPoint, IRect} from '@foblex/2d';\nimport {FExecutionRegister, FMediator, IExecution} from '@foblex/mediator';\nimport {FComponentsStore} from '../../../f-storage';\nimport {FExternalItemDragHandler} from '../f-external-item.drag-handler';\nimport {FCreateNodeEvent} from '../f-create-node.event';\nimport {GetNormalizedElementRectRequest} from '../../../domain';\nimport {\n FDraggableDataContext,\n FDragHandlerResult,\n FNodeDropToGroupDragHandler\n} from '../../../f-draggable';\nimport {BrowserService} from '@foblex/platform';\nimport {IFExternalItemDragResult} from '../i-f-external-item-drag-result';\n\n@Injectable()\n@FExecutionRegister(FExternalItemFinalizeRequest)\nexport class FExternalItemFinalizeExecution implements IExecution<FExternalItemFinalizeRequest, void> {\n\n private readonly _fResult: FDragHandlerResult<IFExternalItemDragResult> = inject(FDragHandlerResult);\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _fBrowser = inject(BrowserService);\n\n private get _fHost(): 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 _fDragHandler(): FExternalItemDragHandler {\n return this._fDraggableDataContext.draggableItems[0] as FExternalItemDragHandler;\n }\n\n public handle(request: FExternalItemFinalizeRequest): void {\n if (!this._isValid()) {\n return\n }\n\n const destinationNodeOrGroupId = this._getDestinationNodeOrGroupId();\n\n this._emitEvent(\n this._getElementsFromPoint(request.event.getPosition()),\n destinationNodeOrGroupId, request.event.getPosition()\n );\n\n this._fDragHandler.onPointerUp();\n this._fDraggableDataContext.draggableItems = [];\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FExternalItemDragHandler\n );\n }\n\n private _getDestinationNodeOrGroupId(): string | undefined {\n const dropToGroupHandler = this._getDropToGroupHandler();\n let result = dropToGroupHandler.fNodeWithRect?.node.fId;\n dropToGroupHandler.onPointerUp?.();\n return result;\n }\n\n private _getDropToGroupHandler(): FNodeDropToGroupDragHandler {\n const result = this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof FNodeDropToGroupDragHandler)\n if (!result) {\n throw new Error('NodeDragToParentDragHandler not found');\n }\n return result;\n }\n\n private _getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this._fBrowser.document.elementsFromPoint(position.x, position.y)\n .filter(x => !x.closest('.f-external-item')\n && !x.closest('.f-external-item-preview')) as HTMLElement[];\n }\n\n private _emitEvent(elements: HTMLElement[], destinationNodeOrGroupId: string | undefined, eventPosition: IPoint): void {\n if (this.isPointerInCanvasRect(elements)) {\n this._fCreateNode.emit(\n new FCreateNodeEvent(\n this._getPreviewRect(), this._fResult.getData().fExternalItem.fData,\n destinationNodeOrGroupId, destinationNodeOrGroupId ? eventPosition : undefined\n )\n );\n }\n }\n\n private isPointerInCanvasRect(elements: HTMLElement[]): boolean {\n return elements.length ? this._fHost.contains(elements[0]) : false;\n }\n\n private _getPreviewRect(): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(this._fResult.getData().preview));\n }\n}\n","import { FEventTrigger } from '../../../domain';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FExternalItemPreparationRequest {\n static readonly fToken = Symbol('FExternalItemPreparationRequest');\n\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { FExternalItemPreparationRequest } from './f-external-item-preparation.request';\nimport {ITransformModel, Point} from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExternalItemBase, FExternalItemService, getExternalItem, isExternalItem } from '../../../f-external-item';\nimport { FExternalItemDragHandler } from '../f-external-item.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { isValidEventTrigger } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(FExternalItemPreparationRequest)\nexport class FExternalItemPreparationExecution implements IExecution<FExternalItemPreparationRequest, void> {\n\n private readonly _fExternalItemService = inject(FExternalItemService);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _injector = inject(Injector);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: FExternalItemPreparationRequest): void {\n if (!this._isValid(request) || !this._isValidTrigger(request)) {\n return;\n }\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost).div(this._transform.scale);\n this._fDraggableDataContext.draggableItems = [\n new FExternalItemDragHandler(\n this._injector,\n this._getExternalItem(request.event.targetElement)!,\n )\n ];\n }\n\n private _isValid(request: FExternalItemPreparationRequest): boolean {\n return this._isValidExternalItem(request.event.targetElement, this._getExternalItem(request.event.targetElement));\n }\n\n private _isValidExternalItem(element: HTMLElement, fExternalItem?: FExternalItemBase): boolean {\n return isExternalItem(element) && !!fExternalItem && !fExternalItem.fDisabled;\n }\n\n private _getExternalItem(targetElement: HTMLElement): FExternalItemBase<any> | undefined {\n return this._fExternalItemService.getItem(getExternalItem(targetElement));\n }\n\n private _isValidTrigger(request: FExternalItemPreparationRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n}\n","export class PreventDefaultIsExternalItemRequest {\n static readonly fToken = Symbol('PreventDefaultIsExternalItemRequest');\n\n constructor(\n public event: Event\n ) {\n }\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 { PreventDefaultIsExternalItemRequest } from './prevent-default-is-external-item.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { isExternalItem } from '../../is-external-item';\n\n@Injectable()\n@FExecutionRegister(PreventDefaultIsExternalItemRequest)\nexport class PreventDefaultIsExternalItemExecution implements IExecution<PreventDefaultIsExternalItemRequest, void> {\n\n public handle(request: PreventDefaultIsExternalItemRequest): void {\n if (this._isTargetItemExternal(request.event)) {\n request.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","import { FExternalItemPreparationExecution } from './preparation';\nimport { FExternalItemFinalizeExecution } from './finalize';\nimport { PreventDefaultIsExternalItemExecution } from './prevent-default-is-external-item';\nimport { FExternalItemCreatePreviewExecution } from './create-preview';\nimport { FExternalItemCreatePlaceholderExecution } from './create-placeholder';\n\nexport const F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS = [\n\n FExternalItemCreatePlaceholderExecution,\n\n FExternalItemCreatePreviewExecution,\n\n FExternalItemFinalizeExecution,\n\n FExternalItemPreparationExecution,\n\n PreventDefaultIsExternalItemExecution,\n];\n","import { Directive, TemplateRef } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\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 public abstract fPreview: TemplateRef<any> | undefined;\n\n public abstract fPreviewMatchSize: boolean;\n\n public abstract fPlaceholder: TemplateRef<any> | undefined;\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 { InjectionToken } from '@angular/core';\nimport { FExternalItemBase } from './f-external-item-base';\n\nexport const F_EXTERNAL_ITEM = new InjectionToken<FExternalItemBase>('F_EXTERNAL_ITEM');\n","import {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n Input,\n OnDestroy,\n OnInit,\n TemplateRef\n} from '@angular/core';\nimport { FExternalItemBase } from './f-external-item-base';\nimport { FExternalItemService } from './f-external-item.service';\nimport { F_EXTERNAL_ITEM } from './f-external-item-token';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fExternalItem]\",\n standalone: true,\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 private readonly _elementReference = inject(ElementRef);\n private readonly _fExternalItemService = inject(FExternalItemService);\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({ transform: booleanAttribute })\n public override fDisabled: boolean = false;\n\n @Input()\n public override fPreview: TemplateRef<any> | undefined;\n\n @Input({ transform: booleanAttribute })\n public override fPreviewMatchSize: boolean = true;\n\n @Input()\n public override fPlaceholder: TemplateRef<any> | undefined;\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 {\n Directive,\n inject,\n OnDestroy,\n OnInit, TemplateRef,\n} from '@angular/core';\nimport { F_EXTERNAL_ITEM } from './f-external-item-token';\n\n@Directive({\n selector: \"ng-template[fExternalItemPlaceholder]\",\n standalone: true,\n host: {\n class: \"f-component f-external-item-placeholder\",\n }\n})\nexport class FExternalItemPlaceholderDirective<T = any> implements OnInit, OnDestroy {\n\n private readonly _fExternalItem = inject(F_EXTERNAL_ITEM);\n private readonly _templateRef = inject<TemplateRef<T>>(TemplateRef);\n\n public ngOnInit(): void {\n this._fExternalItem.fPlaceholder = this._templateRef;\n }\n\n public ngOnDestroy(): void {\n this._fExternalItem.fPlaceholder = undefined;\n }\n}\n","import {\n Directive,\n inject,\n OnDestroy,\n OnInit, TemplateRef,\n} from '@angular/core';\nimport { F_EXTERNAL_ITEM } from './f-external-item-token';\n\n@Directive({\n selector: \"ng-template[fExternalItemPreview]\",\n standalone: true,\n host: {\n class: \"f-component f-external-item-preview\",\n },\n})\nexport class FExternalItemPreviewDirective<T = any> implements OnInit, OnDestroy {\n\n private readonly _fExternalItem = inject(F_EXTERNAL_ITEM);\n private readonly _templateRef = inject<TemplateRef<T>>(TemplateRef);\n\n public ngOnInit(): void {\n this._fExternalItem.fPreview = this._templateRef;\n }\n\n public ngOnDestroy(): void {\n this._fExternalItem.fPreview = undefined;\n }\n}\n","import { FExternalItemDirective } from './f-external-item.directive';\n\nexport const F_EXTERNAL_ITEM_PROVIDERS = [\n FExternalItemDirective\n];\n","import {inject, Injectable, Injector} from '@angular/core';\nimport {FNodeDropToGroupPreparationRequest} from './f-node-drop-to-group-preparation.request';\nimport {FExecutionRegister, FMediator, IExecution} from '@foblex/mediator';\nimport {FComponentsStore} from '../../../f-storage';\nimport {INodeWithRect} from '../../domain';\nimport {IPoint, IRect, ITransformModel, PointExtensions, RectExtensions} from '@foblex/2d';\nimport {GetNormalizedElementRectRequest, GetParentNodesRequest} from '../../../domain';\nimport {FNodeBase} from '../../../f-node';\nimport {FDraggableDataContext} from '../../f-draggable-data-context';\nimport {FNodeDropToGroupDragHandler} from '../f-node-drop-to-group.drag-handler';\nimport {FSummaryNodeMoveDragHandler} from '../../f-node-move';\nimport {FExternalItemDragHandler} from \"../../../f-external-item\";\n\n@Injectable()\n@FExecutionRegister(FNodeDropToGroupPreparationRequest)\nexport class FNodeDropToGroupPreparationExecution\n implements IExecution<FNodeDropToGroupPreparationRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _injector = inject(Injector);\n\n private get _fNodes(): FNodeBase[] {\n return this._fComponentsStore.fNodes;\n }\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fCanvasPosition(): IPoint {\n return PointExtensions.sum(this._transform.position, this._transform.scaledPosition)\n }\n\n public handle(request: FNodeDropToGroupPreparationRequest): void {\n if (!this._isValid()) {\n return;\n }\n const fNode = this._fComponentsStore\n .fNodes.find(n => n.isContains(request.event.targetElement));\n if (!fNode && !this._isExternalItemDragHandler()) {\n throw new Error('Node not found');\n }\n\n this._fDraggableDataContext.draggableItems.push(\n new FNodeDropToGroupDragHandler(\n this._injector,\n this._getNotDraggedNodesRects()\n )\n );\n }\n\n private _isValid(): boolean {\n return this._isNodeDragHandler() || this._isExternalItemDragHandler();\n }\n\n private _isNodeDragHandler(): boolean {\n return this._fDraggableDataContext.draggableItems\n .some((x) => x instanceof FSummaryNodeMoveDragHandler);\n }\n\n private _isExternalItemDragHandler(): boolean {\n return this._fDraggableDataContext.draggableItems\n .some((x) => x instanceof FExternalItemDragHandler);\n }\n\n private _getNotDraggedNodesRects(): INodeWithRect[] {\n const draggedNodes = this._addParentNodes(this._getNodesBeingDragged());\n return this._getNotDraggedNodes(draggedNodes).map((x) => {\n const rect = this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.hostElement));\n return {\n node: x,\n rect: RectExtensions.initialize(\n rect.x * this._transform.scale + this._fCanvasPosition.x,\n rect.y * this._transform.scale + this._fCanvasPosition.y,\n rect.width * this._transform.scale,\n rect.height * this._transform.scale\n )\n }\n });\n }\n\n private _getNodesBeingDragged(): FNodeBase[] {\n return this._fDraggableDataContext.draggableItems\n .find((x) => x instanceof FSummaryNodeMoveDragHandler)\n ?.fHandlers.map((x) => x.fNode) || [];\n }\n\n private _addParentNodes(fNodes: FNodeBase[]): FNodeBase[] {\n return fNodes.reduce((result: FNodeBase[], x: FNodeBase) => {\n result.push(x, ...this._fMediator.execute<FNodeBase[]>(new GetParentNodesRequest(x)));\n return result;\n }, []);\n }\n\n private _getNotDraggedNodes(draggedNodes: FNodeBase[]): FNodeBase[] {\n return this._fNodes.filter((x) => !draggedNodes.includes(x));\n }\n}\n","import { FNodeDropToGroupPreparationExecution } from './drop-to-group-preparation';\nimport { FNodeDropToGroupFinalizeExecution } from './drop-to-group-finalize';\n\nexport const NODE_DROP_TO_GROUP_PROVIDERS = [\n\n FNodeDropToGroupPreparationExecution,\n\n FNodeDropToGroupFinalizeExecution\n];\n","import { IRect } from '@foblex/2d';\nimport { INodeResizeRestrictions } from '../get-node-resize-restrictions';\n\nexport class ApplyChildResizeRestrictionsRequest {\n static readonly fToken = Symbol('ApplyChildResizeRestrictionsRequest');\n\n constructor(\n public rect: IRect,\n public restrictions: INodeResizeRestrictions\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 CHILD_RESIZE_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._apply(request.rect, request.restrictions.childrenBounds!);\n }\n\n private _apply(rect: IRect, restrictionsRect: IRect): void {\n this._restrictLeft(rect, restrictionsRect);\n this._restrictTop(rect, restrictionsRect);\n this._restrictRight(rect, restrictionsRect);\n this._restrictBottom(rect, restrictionsRect);\n }\n\n private _restrictLeft(rect: IRect, restrictions: IRect): void {\n const delta = rect.x - (restrictions.x - CHILD_RESIZE_OFFSET);\n if (delta > 0) {\n rect.x -= delta;\n rect.width += delta;\n }\n }\n\n private _restrictTop(rect: IRect, restrictions: IRect): void {\n const delta = rect.y - (restrictions.y - CHILD_RESIZE_OFFSET);\n if (delta > 0) {\n rect.y -= delta;\n rect.height += delta;\n }\n }\n\n private _restrictRight(rect: IRect, restrictions: IRect): void {\n const maxRight = restrictions.x + restrictions.width + CHILD_RESIZE_OFFSET;\n if (rect.x + rect.width <= maxRight) {\n rect.width = maxRight - rect.x;\n }\n }\n\n private _restrictBottom(rect: IRect, restrictions: IRect): void {\n const maxBottom = restrictions.y + restrictions.height + CHILD_RESIZE_OFFSET;\n if (rect.y + rect.height <= maxBottom) {\n rect.height = maxBottom - rect.y;\n }\n }\n}\n","import { IRect } from '@foblex/2d';\n\nexport class ApplyParentResizeRestrictionsRequest {\n static readonly fToken = Symbol('ApplyParentResizeRestrictionsRequest');\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 static readonly fToken = Symbol('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 ]: { x: -1, y: 0 },\n\n [ EFResizeHandleType.LEFT_TOP ]: { x: -1, y: -1 },\n\n [ EFResizeHandleType.TOP ]: { x: 0, y: -1 },\n\n [ EFResizeHandleType.RIGHT_TOP ]: { x: 1, y: -1 },\n\n [ EFResizeHandleType.RIGHT ]: { x: 1, y: 0 },\n\n [ EFResizeHandleType.RIGHT_BOTTOM ]: { x: 1, y: 1 },\n\n [ EFResizeHandleType.BOTTOM ]: { x: 0, 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, ISize, 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(\n request.originalRect, request.difference,\n RESIZE_DIRECTIONS[ request.fResizeHandleType ], request.changedRect,\n );\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 static readonly fToken = Symbol('CalculateChangedSizeRequest');\n\n constructor(\n public originalRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedSizeRequest)\nexport class CalculateChangedSizeExecution\n implements IExecution<CalculateChangedSizeRequest, IRect> {\n\n public handle(request: CalculateChangedSizeRequest): IRect {\n return this.change(\n request.originalRect,\n request.difference,\n RESIZE_DIRECTIONS[ request.fResizeHandleType ],\n );\n }\n\n private change(\n rect: IRect, difference: IPoint, direction: IPoint\n ): 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';\n\nexport class GetNormalizedChildrenNodesRectRequest {\n static readonly fToken = Symbol('GetNormalizedChildrenNodesRectRequest');\n\n constructor(\n public fNode: FNodeBase,\n public paddings: [ number, number, number, number ]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedChildrenNodesRectRequest } from './get-normalized-children-nodes-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest, GetNormalizedElementRectRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedChildrenNodesRectRequest)\nexport class GetNormalizedChildrenNodesRectExecution\n implements IExecution<GetNormalizedChildrenNodesRectRequest, IRect | null> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNormalizedChildrenNodesRectRequest): IRect | null {\n const childNodeRect = RectExtensions.union(\n this.getChildrenNodes(request.fNode.fId).map((x) => this.normalizeRect(x))\n );\n return childNodeRect ?\n this.concatRectWithParentPadding(childNodeRect, request.paddings) : null;\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.execute<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private normalizeRect(fNode: FNodeBase): IRect {\n return this.fMediator.execute<IRect>(new GetNormalizedElementRectRequest(fNode.hostElement));\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 static readonly fToken = Symbol('GetNodeResizeRestrictionsRequest');\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetNodeResizeRestrictionsRequest } from './get-node-resize-restrictions.request';\nimport { IRect, SizeExtensions } from '@foblex/2d';\nimport { INodeResizeRestrictions } from './i-node-resize-restrictions';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNormalizedParentNodeRectRequest } from '../../domain';\nimport { GetNormalizedChildrenNodesRectRequest } from '../get-normalized-children-nodes-rect';\nimport { FNodeBase } from '../../../f-node';\nimport { GetNodePaddingRequest } from '../../../domain';\n\n\n@Injectable()\n@FExecutionRegister(GetNodeResizeRestrictionsRequest)\nexport class GetNodeResizeRestrictionsExecution\n implements IExecution<GetNodeResizeRestrictionsRequest, INodeResizeRestrictions> {\n\n private _fMediator = inject(FMediator);\n\n public handle(request: GetNodeResizeRestrictionsRequest): INodeResizeRestrictions {\n const paddings = this._calculateNodePaddings(request.fNode, request.rect);\n\n return {\n parentBounds: this._getNormalizedParentBounds(request.fNode),\n childrenBounds: this._getNormalizedChildrenBounds(request.fNode, paddings),\n minimumSize: SizeExtensions.initialize(paddings[0] + paddings[2], paddings[1] + paddings[3])\n }\n }\n\n private _calculateNodePaddings(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this._fMediator.execute<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n\n private _getNormalizedParentBounds(fNode: FNodeBase): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedParentNodeRectRequest(fNode));\n }\n\n private _getNormalizedChildrenBounds(fNode: FNodeBase, fNodePaddings: [ number, number, number, number ]): IRect | null {\n return this._fMediator.execute<IRect | null>(new GetNormalizedChildrenNodesRectRequest(fNode, fNodePaddings));\n }\n}\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeResizeFinalizeRequest {\n static readonly fToken = Symbol('FNodeResizeFinalizeRequest');\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPoint, IRect, ISize, RectExtensions } from '@foblex/2d';\nimport { IFDragHandler } from '../f-drag-handler';\nimport { EFResizeHandleType, FNodeBase } from '../../f-node';\nimport { FMediator } from '@foblex/mediator';\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';\nimport { GetNormalizedElementRectRequest } from '../../domain';\nimport { Injector } from '@angular/core';\n\nexport class FNodeResizeDragHandler implements IFDragHandler {\n\n public readonly fEventType = 'node-resize';\n public readonly fData: any;\n\n private readonly _fMediator: FMediator;\n\n private _originalRect!: IRect;\n private _resizeRestrictions!: INodeResizeRestrictions;\n\n constructor(\n _injector: Injector,\n private _fNode: FNodeBase,\n private _fResizeHandleType: EFResizeHandleType,\n ) {\n this.fData = {\n fNodeId: _fNode.fId,\n };\n this._fMediator = _injector.get(FMediator);\n }\n\n public prepareDragSequence(): void {\n this._originalRect = this._getOriginalNodeRect();\n this._resizeRestrictions = this._getNodeResizeRestrictions();\n }\n\n private _getOriginalNodeRect(): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(this._fNode.hostElement));\n }\n\n private _getNodeResizeRestrictions(): INodeResizeRestrictions {\n return this._fMediator.execute<INodeResizeRestrictions>(\n new GetNodeResizeRestrictionsRequest(this._fNode, this._originalRect)\n );\n }\n\n public onPointerMove(difference: IPoint): void {\n this._applyResizeChanges(this._calculateChangedRect(difference));\n }\n\n private _calculateChangedRect(difference: IPoint): IRect {\n const changedSize = this._calculateSize(difference);\n return this._calculatePosition(difference, changedSize);\n }\n\n private _calculateSize(difference: IPoint): IRect {\n return this._fMediator.execute<IRect>(\n new CalculateChangedSizeRequest(this._originalRect, difference, this._fResizeHandleType)\n );\n }\n\n private _calculatePosition(difference: IPoint, changedSize: IRect): IRect {\n return this._fMediator.execute<IRect>(\n new CalculateChangedPositionRequest(this._originalRect, changedSize, difference, this._fResizeHandleType)\n );\n }\n\n private _applyResizeChanges(changedRect: IRect): void {\n if (this._resizeRestrictions.childrenBounds) {\n this._applyChildRestrictions(changedRect);\n }\n\n this._applyParentRestrictions(changedRect, this._resizeRestrictions.parentBounds);\n this._updateNodeRendering(changedRect);\n }\n\n private _updateNodeRendering(changedRect: IRect): void {\n this._fNode.updatePosition(changedRect);\n this._fNode.updateSize(changedRect);\n this._fNode.redraw();\n }\n\n private _applyChildRestrictions(changedRect: IRect): void {\n this._fMediator.execute(\n new ApplyChildResizeRestrictionsRequest(changedRect, this._resizeRestrictions)\n );\n }\n\n private _applyParentRestrictions(changedRect: IRect, restrictions: IRect): void {\n this._fMediator.execute(\n new ApplyParentResizeRestrictionsRequest(changedRect, restrictions)\n );\n }\n\n public onPointerUp(): void {\n this._fNode.sizeChange.emit(this._getNewRect());\n }\n\n private _getNewRect(): IRect {\n return RectExtensions.initialize(\n this._fNode.position.x, this._fNode.position.y, this._fNode.size?.width, this._fNode.size?.height\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FNodeResizeFinalizeRequest } from './f-node-resize-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeResizeDragHandler } from '../f-node-resize.drag-handler';\n\n@Injectable()\n@FExecutionRegister(FNodeResizeFinalizeRequest)\nexport class FNodeResizeFinalizeExecution implements IExecution<FNodeResizeFinalizeRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: FNodeResizeFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n this._fDraggableDataContext.draggableItems.forEach((x) => {\n x.onPointerUp?.();\n });\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some((x) =>\n x instanceof FNodeResizeDragHandler\n );\n }\n}\n","import { FEventTrigger } from '../../../domain';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeResizePreparationRequest {\n static readonly fToken = Symbol('FNodeResizePreparationRequest');\n\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { FNodeResizePreparationRequest } from './f-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 isValidEventTrigger,\n SelectAndUpdateNodeLayerRequest,\n} from '../../../domain';\nimport { EFResizeHandleType, FNodeBase } from '../../../f-node';\nimport { FNodeResizeDragHandler } from '../f-node-resize.drag-handler';\nimport { getDataAttrValueFromClosestElementWithClass, isClosestElementHasClass } from '@foblex/utils';\n\n@Injectable()\n@FExecutionRegister(FNodeResizePreparationRequest)\nexport class FNodeResizePreparationExecution implements IExecution<FNodeResizePreparationRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _injector = inject(Injector);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private _fNode: FNodeBase | undefined;\n\n public handle(request: FNodeResizePreparationRequest): void {\n if(!this._isValid(request) || !this._isValidTrigger(request)) {\n return;\n }\n\n this._selectAndUpdateNodeLayer();\n\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost).div(this._transform.scale);\n\n const resizeHandleType = EFResizeHandleType[ this._getHandleType(request.event.targetElement) ];\n this._fDraggableDataContext.draggableItems = [\n new FNodeResizeDragHandler(\n this._injector,\n this._fNode!, resizeHandleType\n )\n ];\n }\n\n private _isValid(request: FNodeResizePreparationRequest): boolean {\n return this._fDraggableDataContext.isEmpty()\n && this._isDragHandleElement(request.event.targetElement)\n && this._isNodeCanBeDragged(this._getNode(request.event.targetElement));\n }\n\n private _isDragHandleElement(element: HTMLElement): boolean {\n return isClosestElementHasClass(element, '.f-resize-handle');\n }\n\n private _isNodeCanBeDragged(fNode?: FNodeBase): boolean {\n return !!fNode && !fNode.fDraggingDisabled;\n }\n\n private _getNode(element: HTMLElement): FNodeBase | undefined {\n this._fNode = this._fComponentsStore\n .fNodes.find(x => x.isContains(element));\n return this._fNode;\n }\n\n private _isValidTrigger(request: FNodeResizePreparationRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n\n private _selectAndUpdateNodeLayer() {\n this._fMediator.execute(\n new SelectAndUpdateNodeLayerRequest(this._fNode!)\n );\n }\n\n private _getHandleType(element: HTMLElement): keyof typeof EFResizeHandleType {\n return getDataAttrValueFromClosestElementWithClass(element, 'fResizeHandleType', '.f-resize-handle');\n }\n}\n","import { FNodeResizeFinalizeExecution } from './resize-finalize';\nimport { FNodeResizePreparationExecution } from './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 FNodeResizeFinalizeExecution,\n\n FNodeResizePreparationExecution,\n];\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeRotateFinalizeRequest {\n static readonly fToken = Symbol('FNodeRotateFinalizeRequest');\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export function calculateDifferenceAfterRotation(\n position: { x: number; y: number },\n rotation: number,\n pivot: { x: number; y: number }\n): { x: number; y: number } {\n\n const { x: newX, y: newY } = calculatePositionAfterRotation(position, rotation, pivot);\n\n const dx = newX - position.x;\n const dy = newY - position.y;\n\n return { x: dx, y: dy };\n}\n\nexport function calculatePositionAfterRotation(\n position: { x: number; y: number },\n rotation: number,\n pivot: { x: number; y: number }\n): { x: number; y: number } {\n const translatedX = position.x - pivot.x;\n const translatedY = position.y - pivot.y;\n\n const theta = rotation * Math.PI / 180;\n\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n\n const rotatedX = translatedX * cosTheta - translatedY * sinTheta;\n const rotatedY = translatedX * sinTheta + translatedY * cosTheta;\n\n const newX = rotatedX + pivot.x;\n const newY = rotatedY + pivot.y;\n\n return { x: newX, y: newY };\n}\n\n","import { IPoint, IRect, ITransformModel, PointExtensions } from '@foblex/2d';\nimport { IFDragHandler } from '../f-drag-handler';\nimport { FNodeBase } from '../../f-node';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { FComponentsStore } from '../../f-storage';\nimport { BaseConnectionDragHandler } from '../f-node-move';\nimport {\n calculateDifferenceAfterRotation,\n} from './calculate-difference-after-rotation';\nimport { GetNormalizedElementRectRequest } from '../../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { Injector } from '@angular/core';\n\nexport class FNodeRotateDragHandler implements IFDragHandler {\n\n private readonly _fComponentsStore: FComponentsStore;\n private readonly _fMediator: FMediator;\n private readonly _fDraggableDataContext: FDraggableDataContext;\n\n public fEventType = 'node-rotate';\n public fData: any;\n\n private _initialRotationToX: number = 0;\n private readonly _startRotation: number = 0;\n\n private _onDownPoint!: IPoint;\n private _fNodeRect!: IRect;\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n _injector: Injector,\n private _fNode: FNodeBase,\n private _fSourceHandlers: {\n connection: BaseConnectionDragHandler,\n connector: IPoint,\n }[],\n private _fTargetHandlers: {\n connection: BaseConnectionDragHandler,\n connector: IPoint,\n }[],\n ) {\n this._startRotation = this._fNode.rotate;\n this.fData = {\n fNodeId: _fNode.fId,\n };\n\n this._fComponentsStore = _injector.get(FComponentsStore);\n this._fMediator = _injector.get(FMediator);\n this._fDraggableDataContext = _injector.get(FDraggableDataContext);\n }\n\n public prepareDragSequence(): void {\n this._fNodeRect = this._getOriginalNodeRect();\n this._onDownPoint = this._calculateDownPoint();\n this._initialRotationToX = this._calculateAngleBetweenVectors(this._onDownPoint) - this._startRotation;\n }\n\n private _getOriginalNodeRect(): IRect {\n return this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(this._fNode!.hostElement));\n }\n\n private _calculateDownPoint(): IPoint {\n return PointExtensions.sub(\n this._fDraggableDataContext.onPointerDownPosition,\n PointExtensions.sum(this._transform.position, this._transform.scaledPosition)\n );\n }\n\n private _calculateAngleBetweenVectors(position: IPoint): number {\n return Math.atan2(\n position.y - this._fNodeRect.gravityCenter.y,\n position.x - this._fNodeRect.gravityCenter.x\n ) * (180 / Math.PI);\n }\n\n public onPointerMove(difference: IPoint): void {\n const position = PointExtensions.sum(this._onDownPoint, difference);\n const rotation = this._calculateAngleBetweenVectors(position) - this._initialRotationToX;\n this._updateNodeRendering(rotation);\n\n this._fSourceHandlers.forEach((x) => {\n x.connection.setSourceDifference(\n this._calculateDifferenceAfterRotation(x.connector, rotation)\n )\n });\n this._fTargetHandlers.forEach((x) => {\n x.connection.setTargetDifference(\n this._calculateDifferenceAfterRotation(x.connector, rotation)\n );\n });\n }\n\n private _updateNodeRendering(rotation: number): void {\n this._fNode.updateRotate(rotation);\n this._fNode.redraw();\n }\n\n private _calculateDifferenceAfterRotation(position: IPoint, rotation: number): IPoint {\n return calculateDifferenceAfterRotation(\n position,\n rotation - this._startRotation,\n this._fNodeRect.gravityCenter\n )\n }\n\n public onPointerUp(): void {\n this._fNode.rotateChange.emit(this._fNode.rotate);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FNodeRotateFinalizeRequest } from './f-node-rotate-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeRotateDragHandler } from '../f-node-rotate.drag-handler';\n\n@Injectable()\n@FExecutionRegister(FNodeRotateFinalizeRequest)\nexport class FNodeRotateFinalizeExecution implements IExecution<FNodeRotateFinalizeRequest, void> {\n\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: FNodeRotateFinalizeRequest): void {\n if (!this._isValid()) {\n return;\n }\n this._fDraggableDataContext.draggableItems.forEach((x) => {\n x.onPointerUp?.();\n });\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some((x) =>\n x instanceof FNodeRotateDragHandler\n );\n }\n}\n","import { FEventTrigger } from '../../../domain';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class FNodeRotatePreparationRequest {\n static readonly fToken = Symbol('FNodeRotatePreparationRequest');\n\n constructor(\n public event: IPointerEvent,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { FNodeRotatePreparationRequest } from './f-node-rotate-preparation.request';\nimport { IPoint, IRect, ITransformModel, Point, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n CalculateInputConnectionsRequest, CalculateOutputConnectionsRequest, GetNormalizedElementRectRequest,\n isValidEventTrigger,\n SelectAndUpdateNodeLayerRequest,\n} from '../../../domain';\nimport { FNodeBase, isRotateHandle } from '../../../f-node';\nimport { FNodeRotateDragHandler } from '../f-node-rotate.drag-handler';\nimport { BaseConnectionDragHandler, SourceConnectionDragHandler, TargetConnectionDragHandler } from '../../f-node-move';\nimport { FConnectionBase } from '../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(FNodeRotatePreparationRequest)\nexport class FNodeRotatePreparationExecution implements IExecution<FNodeRotatePreparationRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n private readonly _injector = inject(Injector);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n private _fNode: FNodeBase | undefined;\n\n public handle(request: FNodeRotatePreparationRequest): void {\n if (!this._isValid(request) || !this._isValidTrigger(request)) {\n return;\n }\n\n this._selectAndUpdateNodeLayer();\n\n this._fDraggableDataContext.onPointerDownScale = this._transform.scale;\n this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this._fHost).div(this._transform.scale);\n\n this._fDraggableDataContext.draggableItems = [\n new FNodeRotateDragHandler(\n this._injector,\n this._fNode!,\n this._calculateOutputConnectionsDragHandlers(),\n this._calculateInputConnectionsDragHandlers(),\n )\n ];\n }\n\n private _isValid(request: FNodeRotatePreparationRequest): boolean {\n return this._fDraggableDataContext.isEmpty()\n && isRotateHandle(request.event.targetElement)\n && this._isNodeCanBeDragged(this._getNode(request.event.targetElement));\n }\n\n private _isNodeCanBeDragged(fNode?: FNodeBase): boolean {\n return !!fNode && !fNode.fDraggingDisabled;\n }\n\n private _getNode(element: HTMLElement): FNodeBase | undefined {\n this._fNode = this._fComponentsStore\n .fNodes.find(x => x.isContains(element));\n return this._fNode;\n }\n\n private _isValidTrigger(request: FNodeRotatePreparationRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n\n private _selectAndUpdateNodeLayer() {\n this._fMediator.execute(\n new SelectAndUpdateNodeLayerRequest(this._fNode!)\n );\n }\n\n private _calculateInputConnectionsDragHandlers(): {\n connection: BaseConnectionDragHandler,\n connector: IPoint,\n }[] {\n return this._fMediator.execute<FConnectionBase[]>(\n new CalculateInputConnectionsRequest(this._fNode!)\n ).map((x: FConnectionBase) => {\n const connector = this._fComponentsStore.fInputs.find((y) => y.fId === x.fInputId)!.hostElement;\n return {\n connection: new TargetConnectionDragHandler(this._injector, x),\n connector: this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(connector)).gravityCenter\n }\n });\n }\n\n private _calculateOutputConnectionsDragHandlers(): {\n connection: BaseConnectionDragHandler,\n connector: IPoint,\n }[] {\n return this._fMediator.execute<FConnectionBase[]>(\n new CalculateOutputConnectionsRequest(this._fNode!)\n ).map((x: FConnectionBase) => {\n const connector = this._fComponentsStore.fOutputs.find((y) => y.fId === x.fOutputId)!.hostElement;\n return {\n connection: new SourceConnectionDragHandler(this._injector, x),\n connector: this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(connector)).gravityCenter\n }\n });\n }\n}\n","import { FNodeRotateFinalizeExecution } from './rotate-finalize';\nimport { FNodeRotatePreparationExecution } from './rotate-preparation';\n\nexport const NODE_ROTATE_PROVIDERS = [\n\n FNodeRotateFinalizeExecution,\n\n FNodeRotatePreparationExecution,\n];\n","import { FEventTrigger } from '../../domain';\nimport {IPointerEvent} from \"../../drag-toolkit\";\n\nexport class FSingleSelectRequest {\n static readonly fToken = Symbol('FSingleSelectRequest');\n\n constructor(\n public event: IPointerEvent,\n public fMultiSelectTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FSingleSelectRequest } from './f-single-select.request';\nimport { isValidEventTrigger, UpdateItemAndChildrenLayersRequest } from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { ISelectable } from '../../mixins';\nimport { FNodeBase } from '../../f-node';\nimport {IPointerEvent} from \"../../drag-toolkit\";\n\n/**\n * Implements the functionality for selecting elements in a graphical interface.\n * This class handles both single and multi-selection, updating the selection state\n * of elements and managing related data.\n *\n * Logic flow:\n * 1. **Validate the selection event**:\n * - The event is considered valid if it occurs within the flow boundaries\n * and there are no active draggable data operations.\n *\n * 2. **Determine the target element to select**:\n * - The target element is determined based on the event’s target.\n * It can be a node, a group of nodes, or a connection.\n * - If no element is found, the current selection state is cleared.\n *\n * 3. **Update element layers**:\n * - If an element is found, its visual layer and the layers of its child elements are updated.\n *\n * 4. **Single or multi-selection**:\n * - If the event meets the criteria for multi-selection (e.g., a modifier key is pressed),\n * multi-selection logic is applied.\n * - Otherwise, single-selection logic is used.\n *\n * 5. **Single-selection logic**:\n * - If the element is not selected and can be selected:\n * - Clear the selection of all other elements.\n * - Mark the current element as selected.\n * - If the element cannot be selected, the current selection is cleared.\n *\n * 6. **Multi-selection logic**:\n * - If the element is already selected, it is removed from the selection.\n * - If the element is not selected and can be selected, it is added to the selection.\n *\n * 7. **Manage selection state**:\n * - Adding or removing an element from the selection triggers the corresponding methods.\n * - Selection state is tracked in the shared context for future use.\n */\n\n@Injectable()\n@FExecutionRegister(FSingleSelectRequest)\nexport class FSingleSelectExecution implements IExecution<FSingleSelectRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: FSingleSelectRequest): void {\n if (!this._isValid(request)) {\n return;\n }\n\n const fItem = this._getItemToSelect(request.event);\n\n setTimeout(() => this._updateItemAndChildrenLayers(fItem));\n\n this._isMultiSelect(request) ? this._multiSelect(fItem) : this._singleSelect(fItem);\n }\n\n private _isValid(request: FSingleSelectRequest): boolean {\n return this._isEventInFlowBounds(request.event) && this._fDraggableDataContext.isEmpty();\n }\n\n private _isEventInFlowBounds(event: IPointerEvent): boolean {\n return this._fComponentsStore.fFlow!.hostElement.contains(event.targetElement);\n }\n\n private _getItemToSelect(event: IPointerEvent): ISelectable | undefined {\n return this._getNodeOrGroup(event.targetElement) || this._getConnection(event.targetElement);\n }\n\n private _getNodeOrGroup(targetElement: HTMLElement): FNodeBase | undefined {\n return this._fComponentsStore.fNodes.find((x) => (x).isContains(targetElement));\n }\n\n private _getConnection(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this._fComponentsStore.fConnections\n .find(c => c.isContains(element) || c.fConnectionCenter?.nativeElement?.contains(element));\n }\n\n private _updateItemAndChildrenLayers(fItem?: ISelectable): void {\n if (fItem) {\n this._fMediator.execute<void>(\n new UpdateItemAndChildrenLayersRequest(fItem, fItem.hostElement.parentElement!)\n );\n }\n }\n\n private _isMultiSelect(request: FSingleSelectRequest): boolean {\n return isValidEventTrigger(request.event.originalEvent, request.fMultiSelectTrigger);\n }\n\n private _singleSelect(fItem?: ISelectable): void {\n if (fItem) {\n if (this._isItemNotSelectedAndSelectable(fItem)) {\n this._clearSelection();\n this._selectItem(fItem);\n } else if (fItem.fSelectionDisabled) {\n this._clearSelection();\n }\n } else {\n this._clearSelection();\n }\n }\n\n private _isItemNotSelectedAndSelectable(item: ISelectable): boolean {\n return !item.isSelected() && !item.fSelectionDisabled;\n }\n\n private _clearSelection(): void {\n this._fDraggableDataContext.selectedItems.forEach((x) => {\n x.unmarkAsSelected();\n this._fDraggableDataContext.markSelectionAsChanged();\n });\n this._fDraggableDataContext.selectedItems = [];\n }\n\n private _multiSelect(fItem?: ISelectable): void {\n if (fItem && !fItem.fSelectionDisabled) {\n fItem.isSelected() ? this._deselectItem(fItem) : this._selectItem(fItem);\n }\n }\n\n private _deselectItem(fItem: ISelectable): void {\n this._removeItemFromSelectedItems(fItem);\n fItem.unmarkAsSelected();\n this._fDraggableDataContext.markSelectionAsChanged();\n }\n\n private _removeItemFromSelectedItems(fItem: ISelectable): void {\n const indexInSelection = this._fDraggableDataContext.selectedItems.indexOf(fItem);\n if (indexInSelection > -1) {\n this._fDraggableDataContext.selectedItems.splice(indexInSelection, 1);\n }\n }\n\n private _selectItem(fItem: ISelectable): void {\n this._fDraggableDataContext.selectedItems.push(fItem);\n fItem.markAsSelected();\n this._fDraggableDataContext.markSelectionAsChanged();\n }\n}\n","import { FSingleSelectExecution } from './f-single-select.execution';\n\nexport const SINGLE_SELECT_PROVIDERS = [\n\n FSingleSelectExecution,\n];\n","export abstract class IPointerEvent {\n\n public get originalEvent(): (MouseEvent | TouchEvent) {\n return this.event;\n }\n\n public get targetElement(): HTMLElement {\n return this.target || this.originalEvent.target as HTMLElement;\n }\n\n protected constructor(private readonly event: (MouseEvent | TouchEvent), private target?: HTMLElement) {\n this.event = event;\n }\n\n public setTarget(target: HTMLElement): void {\n this.target = target;\n }\n\n public abstract isMouseLeftButton(): boolean;\n\n public abstract isMouseRightButton(): boolean;\n\n public preventDefault(): void {\n this.originalEvent.preventDefault();\n }\n\n public abstract getPosition(): { x: number, y: number };\n\n public get isEventInLockedContext(): boolean {\n return this.targetElement.closest('[fLockedContext]') !== null;\n }\n}\n","import { IPointerEvent } from './i-pointer-event';\n\nexport class IMouseEvent extends IPointerEvent {\n\n constructor(event: MouseEvent, target?: HTMLElement) {\n super(event, target);\n }\n\n public isMouseLeftButton(): boolean {\n return (this.originalEvent as MouseEvent).button === 0;\n }\n\n public isMouseRightButton(): boolean {\n return (this.originalEvent as MouseEvent).buttons === 2;\n }\n\n public getPosition(): { x: number, y: number } {\n return { x: (this.originalEvent as MouseEvent).clientX, y: (this.originalEvent as MouseEvent).clientY };\n }\n}\n","import {IPointerEvent} from \"./i-pointer-event\";\n\nexport class IPointerUpEvent extends IPointerEvent {\n\n constructor(event: PointerEvent, target?: HTMLElement) {\n super(event, target);\n }\n\n public isMouseLeftButton(): boolean {\n const evt = this.originalEvent as PointerEvent;\n return evt.pointerType === 'mouse' && evt.button === 0 || evt.pointerType === 'touch';\n }\n\n public isMouseRightButton(): boolean {\n const evt = this.originalEvent as PointerEvent;\n return evt.pointerType === 'mouse' && evt.button === 2 || evt.pointerType === 'touch';\n }\n\n public getPosition(): { x: number, y: number } {\n const evt = this.originalEvent as PointerEvent;\n return { x: evt.clientX, y: evt.clientY };\n }\n\n public getPointerType(): string {\n return (this.originalEvent as PointerEvent).pointerType;\n }\n\n public getPointerId(): number {\n return (this.originalEvent as PointerEvent).pointerId;\n }\n}\n","import { IPointerEvent } from './i-pointer-event';\n\nexport class ITouchDownEvent extends IPointerEvent {\n\n constructor(event: TouchEvent) {\n super(event);\n }\n\n public isMouseLeftButton(): boolean {\n return true;\n }\n\n public isMouseRightButton(): boolean {\n return false;\n }\n\n public getPosition(): { x: number, y: number } {\n const touches = (this.originalEvent as TouchEvent).touches;\n return { x: touches[ 0 ].clientX, y: touches[ 0 ].clientY };\n }\n}\n","import { IPointerEvent } from './i-pointer-event';\n\nexport class ITouchMoveEvent extends IPointerEvent {\n\n constructor(event: TouchEvent, target?: HTMLElement) {\n super(event, target);\n }\n\n public isMouseLeftButton(): boolean {\n return true;\n }\n\n public isMouseRightButton(): boolean {\n return false;\n }\n\n public getPosition(): { x: number, y: number } {\n const touch = (this.originalEvent as TouchEvent).targetTouches[0];\n return { x: touch.clientX, y: touch.clientY };\n }\n}\n","export class EventExtensions {\n\n private static isSupported: boolean;\n\n private static isPassiveEventListenerSupported(): boolean {\n\n if (EventExtensions.isSupported == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', EventExtensions.emptyListener, { passive: true });\n EventExtensions.isSupported = true;\n } catch (e) {\n EventExtensions.isSupported = false;\n }\n }\n\n return EventExtensions.isSupported;\n }\n\n private static passiveEventListener(options: AddEventListenerOptions): AddEventListenerOptions | boolean {\n return EventExtensions.isPassiveEventListenerSupported() ? options : !!options.capture;\n }\n\n public static activeListener(): boolean | AddEventListenerOptions {\n return EventExtensions.passiveEventListener({ passive: false });\n }\n\n public static passiveListener(): boolean | AddEventListenerOptions {\n return EventExtensions.passiveEventListener({ passive: true });\n }\n\n public static emptyListener(): Function {\n return () => {\n };\n }\n}\n","import { ICanRunOutsideAngular } from './i-can-run-outside-angular';\nimport {\n IMouseEvent,\n IPointerEvent,\n IPointerUpEvent,\n ITouchDownEvent,\n ITouchMoveEvent,\n} from './pointer-events';\nimport { EventExtensions } from './event.extensions';\n\nexport const MOUSE_EVENT_IGNORE_TIME = 800;\n\nexport abstract class DragAndDropBase {\n\n public abstract hostElement: HTMLElement;\n\n private document: 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: { x: number, y: number } = { x: 0, y: 0 };\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.document?.addEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.document?.addEventListener('mousemove', this.onMouseMove);\n this.document?.addEventListener('pointerup', this.onPointerUpEvent);\n });\n\n this.mouseListeners = () => {\n this.document?.removeEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.document?.removeEventListener('mousemove', this.onMouseMove);\n this.document?.removeEventListener('pointerup', this.onPointerUpEvent);\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.document?.addEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.document?.addEventListener('touchmove', this.onTouchMove);\n this.document?.addEventListener('pointerup', this.onPointerUpEvent);\n });\n\n this.touchListeners = () => {\n this.document?.removeEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.document?.removeEventListener('touchmove', this.onTouchMove);\n this.document?.removeEventListener('pointerup', this.onPointerUpEvent);\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 onPointerUpEvent = (event: PointerEvent) => {\n if (this.isDragStarted) {\n this.onPointerUp(new IPointerUpEvent(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.document) {\n this.unsubscribe();\n }\n this.document = 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 { Directive, EventEmitter, } from '@angular/core';\nimport { FCreateConnectionEvent, FReassignConnectionEvent } from './f-connection';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FCreateNodeEvent } from '../f-external-item';\nimport { FDragStartedEvent, FNodeIntersectedWithConnections } from './domain';\nimport { FDropToGroupEvent } from './f-drop-to-group';\nimport {DragAndDropBase, ICanRunOutsideAngular} from \"../drag-toolkit\";\nimport {FMoveNodesEvent} from \"./f-node-move\";\n\n@Directive()\nexport abstract class FDraggableBase extends DragAndDropBase {\n\n public abstract fSelectionChange: EventEmitter<FSelectionChangeEvent>;\n\n public abstract fNodeIntersectedWithConnections: EventEmitter<FNodeIntersectedWithConnections>;\n\n public abstract fEmitOnNodeIntersect: boolean;\n\n public abstract fCreateNode: EventEmitter<FCreateNodeEvent>;\n\n public abstract fMoveNodes: EventEmitter<FMoveNodesEvent>;\n\n public abstract fReassignConnection: EventEmitter<FReassignConnectionEvent>;\n\n public abstract fCreateConnection: EventEmitter<FCreateConnectionEvent>;\n\n public abstract fDropToGroup: EventEmitter<FDropToGroupEvent>;\n\n public abstract vCellSize: number;\n\n public abstract hCellSize: number;\n\n public abstract fCellSizeWhileDragging: boolean;\n\n public abstract fDragStarted: EventEmitter<FDragStartedEvent>;\n\n public abstract fDragEnded: EventEmitter<void>;\n\n protected constructor(\n ngZone: ICanRunOutsideAngular | undefined\n ) {\n super(ngZone);\n }\n}\n","import {InjectionToken} from '@angular/core';\nimport {IPointerEvent} from \"../drag-toolkit\";\n\nexport const F_BEFORE_MAIN_PLUGIN = new InjectionToken<IFDragAndDropPlugin>('F_BEFORE_MAIN_PLUGIN');\nexport const F_AFTER_MAIN_PLUGIN = new InjectionToken<IFDragAndDropPlugin>('F_AFTER_MAIN_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, booleanAttribute, ContentChildren,\n Directive,\n ElementRef,\n EventEmitter, inject, Inject,\n Input,\n NgZone, numberAttribute,\n OnDestroy,\n OnInit, Optional, Output, QueryList\n} from \"@angular/core\";\nimport { FDraggableBase } from './f-draggable-base';\nimport {\n FMoveNodesEvent,\n FNodeMoveFinalizeRequest,\n FNodeMovePreparationRequest\n} from './f-node-move';\nimport { FCanvasMoveFinalizeRequest, FCanvasMovePreparationRequest } from './f-canvas';\nimport {\n FCreateConnectionEvent,\n FReassignConnectionEvent,\n FReassignConnectionPreparationRequest,\n FReassignConnectionFinalizeRequest,\n FCreateConnectionPreparationRequest,\n FCreateConnectionFinalizeRequest\n} from './f-connection';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FMediator } from '@foblex/mediator';\nimport {\n AddDndToStoreRequest,\n EmitSelectionChangeEventRequest,\n PrepareDragSequenceRequest,\n RemoveDndFromStoreRequest,\n EndDragSequenceRequest,\n InitializeDragSequenceRequest,\n OnPointerMoveRequest, FEventTrigger, FTriggerEvent, defaultEventTrigger\n} from '../domain';\nimport {\n FExternalItemFinalizeRequest,\n FExternalItemPreparationRequest,\n FCreateNodeEvent,\n PreventDefaultIsExternalItemRequest\n} from '../f-external-item';\nimport { FSingleSelectRequest } from './f-single-select';\nimport { FNodeResizeFinalizeRequest, FNodeResizePreparationRequest } from './f-node-resize';\nimport { F_AFTER_MAIN_PLUGIN, F_BEFORE_MAIN_PLUGIN, IFDragAndDropPlugin } from './i-f-drag-and-drop-plugin';\nimport { BrowserService, EOperationSystem, PlatformService } from '@foblex/platform';\nimport { FDragStartedEvent, FNodeIntersectedWithConnections } from './domain';\nimport { FDragHandlerResult } from './f-drag-handler';\nimport {\n FDropToGroupEvent,\n FNodeDropToGroupFinalizeRequest,\n FNodeDropToGroupPreparationRequest\n} from './f-drop-to-group';\nimport { FNodeRotateFinalizeRequest, FNodeRotatePreparationRequest } from './f-node-rotate';\nimport {ICanRunOutsideAngular, IPointerEvent} from \"../drag-toolkit\";\n// ┌──────────────────────────────┐\n// │ Angular Realm │\n// │ │\n// │ ┌────────────────────────┐ │\n// │ │ FDraggableDirective │ │\n// │ └──────────┬─────────────┘ │\n// │ │ extends │\n// │ ┌──────────▼─────────────┐ │\n// │ │ FDraggableBase │ │\n// │ └──────────┬─────────────┘ │\n// │ │ │\n// │ │ overrides │\n// │ ┌──────────▼─────────────┐ │\n// │ │ DragAndDropBase │ │\n// │ └──────────┬─────────────┘ │\n// │ │ │\n// │ subscribes to │\n// │ │ │\n// │ ┌────▼────┐ │\n// │ │ Document│ │\n// │ └─────────┘ │\n// │ │\n// │ ┌────────────────────────┐ │\n// │ │ FMediator │◄─┬────┐\n// │ └─────┬────────┬─────────┘ │ │\n// │ │ │ │ │\n// │ executes executes │ │\n// │ F*Request F*Event │ │\n// │ │ │ │ │\n// └────────┴────────┴────────────┴────┘\n//\n//\n// ┌──────────────────────────────────────┐\n// │ Drag & Drop Runtime Layer │\n// │ │\n// │ Events from DOM: │\n// │ - mousedown / touchstart │\n// │ - mousemove / touchmove │\n// │ - pointerup │\n// │ │\n// │ ↓ Routed to │\n// │ │\n// │ ┌──────────────────────────────┐ │\n// │ │ DragAndDropBase │ │\n// │ └──────────────────────────────┘ │\n// │ ▲ ▲ │\n// │ │ │ │\n// │ checkDrag onPointerMove │\n// │ Sequence + Finalization │\n// │ To Start │\n// └──────────────────────────────────────┘\n@Directive({\n selector: \"f-flow[fDraggable]\",\n exportAs: 'fDraggable',\n providers: [ FDragHandlerResult ]\n})\nexport class FDraggableDirective extends FDraggableBase implements OnInit, AfterViewInit, OnDestroy {\n\n private _elementReference = inject(ElementRef);\n\n private _fResult = inject(FDragHandlerResult);\n private _fMediator = inject(FMediator);\n private _fPlatform = inject(PlatformService);\n\n @Input({ transform: booleanAttribute, alias: 'fDraggableDisabled' })\n public override disabled: boolean = false;\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n @Input()\n public fMultiSelectTrigger: FEventTrigger = (event: FTriggerEvent) => {\n return (this._fPlatform.getOS() === EOperationSystem.MAC_OS) ? event.metaKey : event.ctrlKey;\n };\n\n @Input()\n public fReassignConnectionTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input()\n public fCreateConnectionTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input()\n public fNodeResizeTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input()\n public fNodeRotateTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input()\n public fNodeMoveTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input()\n public fCanvasMoveTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input()\n public fExternalItemTrigger: FEventTrigger = defaultEventTrigger;\n\n @Output()\n public override fSelectionChange = new EventEmitter<FSelectionChangeEvent>();\n\n @Output()\n public override fNodeIntersectedWithConnections = new EventEmitter<FNodeIntersectedWithConnections>();\n\n @Input({ transform: booleanAttribute })\n public override fEmitOnNodeIntersect: boolean = false;\n\n @Output()\n public override fCreateNode = new EventEmitter<FCreateNodeEvent>();\n\n @Output()\n public override fMoveNodes = new EventEmitter<FMoveNodesEvent>();\n\n @Output()\n public override fReassignConnection = new EventEmitter<FReassignConnectionEvent>();\n\n @Output()\n public override fCreateConnection = new EventEmitter<FCreateConnectionEvent>();\n\n @Output()\n public override fDropToGroup = new EventEmitter<FDropToGroupEvent>();\n\n @Input({ transform: numberAttribute })\n public override vCellSize = 1;\n\n @Input({ transform: numberAttribute })\n public override hCellSize = 1;\n\n @Input({ transform: booleanAttribute })\n public override fCellSizeWhileDragging: boolean = false;\n\n @Output()\n public override fDragStarted = new EventEmitter<FDragStartedEvent>();\n\n @Output()\n public override fDragEnded = new EventEmitter<void>();\n\n @ContentChildren(F_BEFORE_MAIN_PLUGIN, { descendants: true })\n private _beforePlugins!: QueryList<IFDragAndDropPlugin>;\n\n @ContentChildren(F_AFTER_MAIN_PLUGIN, { descendants: true })\n private _afterPlugins!: QueryList<IFDragAndDropPlugin>;\n\n constructor(\n @Inject(NgZone) @Optional() ngZone: ICanRunOutsideAngular,\n private _fBrowser: BrowserService,\n ) {\n super(ngZone);\n }\n\n public ngOnInit(): void {\n this._fMediator.execute<void>(new AddDndToStoreRequest(this));\n }\n\n public ngAfterViewInit(): void {\n super.subscribe(this._fBrowser.document);\n }\n\n public override onPointerDown(event: IPointerEvent): boolean {\n this._fResult.clear();\n\n this._fMediator.execute<void>(new InitializeDragSequenceRequest());\n\n this._beforePlugins.forEach((p) => p.onPointerDown?.(event));\n\n this._fMediator.execute<void>(new FSingleSelectRequest(event, this.fMultiSelectTrigger));\n\n this._fMediator.execute<void>(new FReassignConnectionPreparationRequest(event, this.fReassignConnectionTrigger));\n\n this._fMediator.execute<void>(new FCreateConnectionPreparationRequest(event, this.fCreateConnectionTrigger));\n\n this._afterPlugins.forEach((p) => p.onPointerDown?.(event));\n\n const isMouseLeftOrTouch = event.isMouseLeftButton();\n if (!isMouseLeftOrTouch) {\n this.finalizeDragSequence();\n }\n return isMouseLeftOrTouch;\n }\n\n protected override prepareDragSequence(event: IPointerEvent) {\n\n this._beforePlugins.forEach((p) => p.prepareDragSequence?.(event));\n\n this._fMediator.execute<void>(new FNodeResizePreparationRequest(event, this.fNodeResizeTrigger));\n\n this._fMediator.execute<void>(new FNodeRotatePreparationRequest(event, this.fNodeRotateTrigger));\n\n this._fMediator.execute<void>(new FNodeMovePreparationRequest(event, this.fNodeMoveTrigger));\n\n this._fMediator.execute<void>(new FExternalItemPreparationRequest(event, this.fExternalItemTrigger));\n\n this._fMediator.execute<void>(new FNodeDropToGroupPreparationRequest(event));\n\n this._fMediator.execute<void>(new FCanvasMovePreparationRequest(event, this.fCanvasMoveTrigger));\n\n this._afterPlugins.forEach((p) => p.prepareDragSequence?.(event));\n\n this._fMediator.execute<void>(new PrepareDragSequenceRequest());\n }\n\n protected override onSelect(event: Event): void {\n this._fMediator.execute<void>(new PreventDefaultIsExternalItemRequest(event));\n }\n\n public override onPointerMove(event: IPointerEvent): void {\n this._fMediator.execute<void>(new OnPointerMoveRequest(event));\n }\n\n public override onPointerUp(event: IPointerEvent): void {\n this._beforePlugins.forEach((x) => x.onPointerUp?.(event));\n\n this._fMediator.execute<void>(new FReassignConnectionFinalizeRequest(event));\n\n this._fMediator.execute<void>(new FCreateConnectionFinalizeRequest(event));\n\n this._fMediator.execute<void>(new FNodeResizeFinalizeRequest(event));\n\n this._fMediator.execute<void>(new FNodeRotateFinalizeRequest(event));\n\n this._fMediator.execute<void>(new FNodeMoveFinalizeRequest(event));\n\n this._fMediator.execute<void>(new FExternalItemFinalizeRequest(event));\n\n this._fMediator.execute<void>(new FNodeDropToGroupFinalizeRequest(event));\n\n this._fMediator.execute<void>(new FCanvasMoveFinalizeRequest(event));\n\n this._afterPlugins.forEach((x) => x.onPointerUp?.(event));\n\n this._fMediator.execute<void>(new EndDragSequenceRequest());\n }\n\n protected override finalizeDragSequence(): void {\n this._fMediator.execute<void>(new EmitSelectionChangeEventRequest());\n\n this._fResult.clear();\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute<void>(new RemoveDndFromStoreRequest());\n super.unsubscribe();\n }\n}\n\n","import { ICurrentSelection } from '../domain';\n\nexport class FSelectionChangeEvent implements ICurrentSelection {\n\n constructor(\n public fNodeIds: string[],\n public fGroupIds: string[],\n public fConnectionIds: string[],\n ) {\n }\n}\n","import { FMinimapData } from '../f-minimap-data';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class MinimapDragPreparationRequest {\n static readonly fToken = Symbol('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 static readonly fToken = Symbol('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 { IFDragHandler } 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 IFDragHandler {\n\n public fEventType = 'minimap';\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 prepareDragSequence(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.add('f-scaled-animate');\n }\n\n public onPointerMove(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.execute<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.flowRect, this.canvasPosition, eventPoint, this.minimap\n ));\n }\n\n public onPointerUp(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.remove('f-scaled-animate');\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { 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 if(!this._isValid(request)) {\n return;\n }\n const eventPoint = request.event.getPosition();\n const startCanvasPosition = Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position);\n\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(eventPoint, request.minimap));\n this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(eventPoint).elementTransform(this.flowHost);\n this.fDraggableDataContext.draggableItems = [\n new FMinimapDragHandler(\n this.fComponentsStore, this.fMediator, this.getFlowRect(),\n startCanvasPosition, eventPoint, request.minimap,\n )\n ];\n }\n\n private _isValid(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 private getNewPosition(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n return this.fMediator.execute<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 { MinimapDragPreparationExecution } from './minimap-drag-preparation.execution';\n\nexport const MINIMAP_DRAG_PREPARATION_PROVIDERS = [\n\n MinimapDragPreparationExecution,\n];\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class MinimapDragFinalizeRequest {\n static readonly fToken = Symbol('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';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\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 if(!this._isValid()) {\n return;\n }\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.onPointerUp?.();\n });\n }\n\n private _isValid(): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FMinimapDragHandler\n );\n }\n}\n","import { MinimapDragFinalizeExecution } from './minimap-drag-finalize.execution';\n\nexport const MINIMAP_DRAG_FINALIZE_PROVIDERS = [\n\n MinimapDragFinalizeExecution,\n];\n","export class MinimapDrawNodesRequest {\n static readonly fToken = Symbol('MinimapDrawNodesRequest');\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MinimapDrawNodesRequest } from './minimap-draw-nodes.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { createSVGElement } from '../../../domain';\nimport { FNodeBase, FNodeDirective } from '../../../f-node';\nimport { IRect, RectExtensions, setRectToElement } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { FCanvasBase } from '../../../f-canvas';\nimport { FFlowBase } from '../../../f-flow';\n\n@Injectable()\n@FExecutionRegister(MinimapDrawNodesRequest)\nexport class MinimapDrawNodesExecution implements IExecution<MinimapDrawNodesRequest, SVGRectElement[]> {\n\n private readonly _fBrowser = inject(BrowserService);\n private readonly _fComponentStore = inject(FComponentsStore);\n\n private get _fFlow(): FFlowBase | undefined {\n return this._fComponentStore.fFlow;\n }\n\n private get _fNodes(): FNodeBase[] {\n return this._fComponentStore.fNodes;\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentStore.fCanvas!;\n }\n\n public handle(request: MinimapDrawNodesRequest): SVGRectElement[] {\n return this._createMinimapNodeElements(request);\n }\n\n private _createMinimapNodeElements(request: MinimapDrawNodesRequest): SVGRectElement[] {\n return this._fNodes.map((x) => {\n const element = this._createNodeElement();\n setRectToElement(this._getNodeRect(x), element);\n this._applyClassList(element, x, x instanceof FNodeDirective);\n return element;\n });\n }\n\n private _createNodeElement(): SVGRectElement {\n return createSVGElement('rect', this._fBrowser);\n }\n\n private _getNodeRect(node: FNodeBase): IRect {\n return RectExtensions.div(this._getNodeRectInFlow(node), this._fCanvas.transform.scale);\n }\n\n private _getNodeRectInFlow(node: FNodeBase): IRect {\n return RectExtensions.elementTransform(RectExtensions.fromElement(node.hostElement), this._fFlow!.hostElement);\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 element.classList.add(...this._getClassList(node));\n if (node.isSelected()) {\n element.classList.add('f-selected');\n }\n }\n\n private _getClassList(node: FNodeBase): string[] {\n if (Array.isArray(node.fMinimapClass)) {\n return node.fMinimapClass;\n } else {\n return [node.fMinimapClass];\n }\n }\n}\n","export class MinimapCalculateViewBoxRequest {\n static readonly fToken = Symbol('MinimapCalculateViewBoxRequest');\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MinimapCalculateViewBoxRequest } from './minimap-calculate-view-box.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FCanvasBase } from '../../../f-canvas';\nimport { FFlowBase } from '../../../f-flow';\n\n@Injectable()\n@FExecutionRegister(MinimapCalculateViewBoxRequest)\nexport class MinimapCalculateViewBoxExecution implements IExecution<MinimapCalculateViewBoxRequest, IRect> {\n\n private _fComponentStore = inject(FComponentsStore);\n\n private get _fFlow(): FFlowBase | undefined {\n return this._fComponentStore.fFlow;\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentStore.fCanvas!;\n }\n\n public handle(request: MinimapCalculateViewBoxRequest): IRect {\n if(!this._fFlow || !this._fCanvas) {\n return RectExtensions.initialize();\n }\n return this._getRectForMinimapView();\n }\n\n private _getRectForMinimapView(): IRect {\n const result = this._calculateViewBox();\n result.x = 0;\n result.y = 0;\n return result;\n }\n\n private _calculateViewBox(): IRect {\n return RectExtensions.div(RectExtensions.fromElement(this._fFlow!.hostElement), this._fCanvas.transform.scale);\n }\n}\n","export class MinimapCalculateSvgScaleAndViewBoxRequest {\n static readonly fToken = Symbol('MinimapCalculateSvgScaleAndViewBoxRequest');\n\n constructor(\n public element: SVGSVGElement,\n public minSize: number,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { MinimapCalculateSvgScaleAndViewBoxRequest } from './minimap-calculate-svg-scale-and-view-box.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { adjustRectToMinSize, IRect, ISize, RectExtensions, SizeExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FCanvasBase } from '../../../f-canvas';\nimport { FFlowBase } from '../../../f-flow';\nimport { CalculateNodesBoundingBoxRequest } from '../../../domain';\nimport { IFMinimapScaleAndViewBox } from './i-f-minimap-scale-and-view-box';\n\n@Injectable()\n@FExecutionRegister(MinimapCalculateSvgScaleAndViewBoxRequest)\nexport class MinimapCalculateSvgScaleAndViewBoxExecution\n implements IExecution<MinimapCalculateSvgScaleAndViewBoxRequest, IFMinimapScaleAndViewBox> {\n\n private _fMediator = inject(FMediator);\n\n private _fComponentStore = inject(FComponentsStore);\n\n private get _fFlow(): FFlowBase {\n return this._fComponentStore.fFlow!;\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentStore.fCanvas!;\n }\n\n public handle(request: MinimapCalculateSvgScaleAndViewBoxRequest): IFMinimapScaleAndViewBox {\n if(!this._fFlow) {\n return { scale: 1, viewBox: RectExtensions.initialize(0, 0, 0, 0) };\n }\n\n const nodesRect = this._getScaledNodesBoundingBox(request.minSize);\n const minimapRect = this._getMinimapRect(request.element);\n const scale = this._calculateViewScale(nodesRect, minimapRect);\n\n return {\n scale,\n viewBox: this._calculateViewBox(nodesRect, minimapRect, scale)\n }\n }\n\n private _getScaledNodesBoundingBox(minSize: number): IRect {\n const globalRect = this._calculateNodesBoundingBox();\n const flowRect = this._convertFromGlobalToFlowRect(globalRect);\n const scaledRect = this._convertRectToMinimapScale(flowRect);\n return adjustRectToMinSize(scaledRect, minSize);\n }\n\n private _calculateNodesBoundingBox(): IRect {\n return this._fMediator.execute<IRect | null>(new CalculateNodesBoundingBoxRequest())\n || RectExtensions.initialize(0, 0, 0, 0);\n }\n\n private _convertFromGlobalToFlowRect(rect: IRect): IRect {\n return RectExtensions.elementTransform(rect, this._fFlow!.hostElement)\n }\n\n private _convertRectToMinimapScale(rect: IRect): IRect {\n return RectExtensions.div(rect, this._fCanvas.transform.scale);\n }\n\n private _getMinimapRect(element: SVGSVGElement): IRect {\n return RectExtensions.elementTransform(RectExtensions.fromElement(element), this._fFlow.hostElement);\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","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';\nimport { MinimapDrawNodesExecution } from './minimap-draw-nodes';\nimport { MinimapCalculateViewBoxExecution } from './minimap-calculate-view-box';\nimport { MinimapCalculateSvgScaleAndViewBoxExecution } from './minimap-calculate-svg-scale-and-view-box';\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 MinimapDrawNodesExecution,\n\n MinimapCalculateSvgScaleAndViewBoxExecution,\n\n MinimapCalculateViewBoxExecution,\n];\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class SelectionAreaFinalizeRequest {\n static readonly fToken = Symbol('SelectionAreaFinalizeRequest');\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPoint, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore, NotifyTransformChangedRequest } from '../../f-storage';\nimport { GetCanBeSelectedItemsRequest, ICanBeSelectedElementAndRect } from '../../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext, IFDragHandler } from '../../f-draggable';\nimport { FSelectionAreaBase } from '../f-selection-area-base';\nimport { ISelectable } from '../../mixins';\n\nexport class SelectionAreaDragHandle implements IFDragHandler {\n\n public fEventType: string = 'selection-area';\n\n private _canBeSelected: ICanBeSelectedElementAndRect[] = [];\n private _selectedByMove: ISelectable[] = [];\n\n private get _fCanvasPosition(): IPoint {\n return Point.fromPoint(this._fComponentsStore.fCanvas!.transform.position)\n .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 prepareDragSequence(): void {\n this._canBeSelected = this._fMediator.execute(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 onPointerMove(difference: IPoint): void {\n const currentPoint = Point.fromPoint(difference).add(this._fDraggableDataContext.onPointerDownPosition);\n\n const point = this._getMinimumPoint(this._fDraggableDataContext.onPointerDownPosition, currentPoint);\n\n const width = Math.abs(difference.x);\n const height = Math.abs(difference.y);\n\n const fSelectionAreaRect = RectExtensions.initialize(point.x, point.y, width, height);\n\n this._fSelectionArea.draw(fSelectionAreaRect);\n this._selectedByMove = [];\n this._canBeSelected.forEach((item) => {\n item.element.unmarkAsSelected();\n\n const fItemRect = RectExtensions.addPoint(item.fRect, this._fCanvasPosition);\n\n const isIntersect = RectExtensions.intersectionWithRect(fItemRect, fSelectionAreaRect);\n if (isIntersect) {\n\n item.element.markAsSelected();\n this._selectedByMove.push(item.element);\n }\n });\n this._fMediator.execute<void>(new NotifyTransformChangedRequest());\n }\n\n private _getMinimumPoint(point1: IPoint, point2: IPoint): IPoint {\n return PointExtensions.initialize(\n Math.min(point1.x, point2.x),\n Math.min(point1.y, point2.y)\n );\n }\n\n public onPointerUp(): 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 { inject, Injectable } from '@angular/core';\nimport { SelectionAreaFinalizeRequest } from './selection-area-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaFinalizeRequest)\nexport class SelectionAreaFinalizeExecution implements IExecution<SelectionAreaFinalizeRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: SelectionAreaFinalizeRequest): void {\n if(!this._isValid()) {\n return;\n }\n this._fDraggableDataContext.draggableItems.forEach((x) => {\n x.onPointerUp?.();\n });\n }\n\n private _isValid(): boolean {\n return this._fDraggableDataContext.draggableItems.some((x) =>\n x instanceof SelectionAreaDragHandle\n );\n }\n}\n","import { FSelectionAreaBase } from '../../f-selection-area-base';\nimport { FEventTrigger } from '../../../domain';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class SelectionAreaPreparationRequest {\n static readonly fToken = Symbol('SelectionAreaPreparationRequest');\n\n constructor(\n public event: IPointerEvent,\n public fSelectionArea: FSelectionAreaBase,\n public fTrigger: FEventTrigger\n ) {\n }\n}\n","import { inject, 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';\nimport { isValidEventTrigger } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaPreparationRequest)\nexport class SelectionAreaPreparationExecution implements IExecution<SelectionAreaPreparationRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow!.hostElement;\n }\n\n public handle(request: SelectionAreaPreparationRequest): void {\n if (!this._isValid(request)) {\n return;\n }\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._fHost);\n }\n\n private _isValid(request: SelectionAreaPreparationRequest): boolean {\n return this._fDraggableDataContext.isEmpty()\n && isValidEventTrigger(request.event.originalEvent, request.fTrigger);\n }\n}\n","import { SelectionAreaPreparationExecution } from './selection-area-preparation';\nimport { SelectionAreaFinalizeExecution } from './selection-area-finalize';\n\nexport const F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS = [\n\n SelectionAreaPreparationExecution,\n\n SelectionAreaFinalizeExecution\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, inject, Input, OnInit } from '@angular/core';\nimport { FSelectionAreaBase } from './f-selection-area-base';\nimport { F_BEFORE_MAIN_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { SelectionAreaFinalizeRequest, SelectionAreaPreparationRequest } from './domain';\nimport { FEventTrigger, FTriggerEvent } from '../domain';\nimport {IPointerEvent} from \"../drag-toolkit\";\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_BEFORE_MAIN_PLUGIN, useExisting: FSelectionAreaComponent },\n ],\n})\nexport class FSelectionAreaComponent extends FSelectionAreaBase implements OnInit, IFDragAndDropPlugin {\n\n private _fMediator = inject(FMediator);\n private _elementReference = inject(ElementRef);\n\n @Input()\n public fTrigger: FEventTrigger = (event: FTriggerEvent) => {\n return event.shiftKey;\n };\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\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.execute(new SelectionAreaPreparationRequest(event, this, this.fTrigger));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this._fMediator.execute(new SelectionAreaFinalizeRequest(event));\n }\n}\n","import { FSelectionAreaComponent } from './f-selection-area.component';\n\nexport const F_SELECTION_AREA_PROVIDERS = [\n\n FSelectionAreaComponent\n];\n","import { CANVAS_PROVIDERS } from './f-canvas';\nimport { CONNECTIONS_PROVIDERS } from './f-connection';\nimport { SINGLE_SELECT_PROVIDERS } from './f-single-select';\nimport { NODE_PROVIDERS } from './f-node-move';\nimport { NODE_RESIZE_PROVIDERS } from './f-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';\nimport { F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS } from '../f-selection-area';\nimport { DRAG_AND_DROP_COMMON_PROVIDERS } from './domain';\nimport { NODE_DROP_TO_GROUP_PROVIDERS } from './f-drop-to-group';\nimport { NODE_ROTATE_PROVIDERS } from './f-node-rotate';\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_DROP_TO_GROUP_PROVIDERS,\n\n ...NODE_RESIZE_PROVIDERS,\n\n ...NODE_ROTATE_PROVIDERS,\n\n ...F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS,\n\n ...F_MINIMAP_DRAG_AND_DROP_PROVIDERS\n];\n","export class ClearSelectionRequest {\n static readonly fToken = Symbol('ClearSelectionRequest');\n\n}\n","import { ClearSelectionRequest } from './clear-selection.request';\nimport { inject, 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 private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: ClearSelectionRequest): void {\n this._fDraggableDataContext.selectedItems.forEach((x) => x.unmarkAsSelected());\n this._fDraggableDataContext.selectedItems = [];\n this._fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class GetCanBeSelectedItemsRequest {\n static readonly fToken = Symbol('GetCanBeSelectedItemsRequest');\n}\n","export class GetNormalizedElementRectRequest {\n static readonly fToken = Symbol('GetNormalizedElementRectRequest');\n\n constructor(\n public element: HTMLElement | SVGElement\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GetNormalizedElementRectRequest } from './get-normalized-element-rect-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport {\n IRoundedRect,\n RoundedRect,\n IPoint,\n ISize,\n SizeExtensions,\n ITransformModel,\n RectExtensions, IRect\n} from '@foblex/2d';\nimport {GetNormalizedPointRequest} from \"../get-normalized-point\";\n\n@Injectable()\n@FExecutionRegister(GetNormalizedElementRectRequest)\nexport class GetNormalizedElementRectExecution implements IExecution<GetNormalizedElementRectRequest, IRect> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fMediator = inject(FMediator);\n\n private get _transform(): ITransformModel {\n return this._fComponentsStore.fCanvas!.transform;\n }\n\n public handle(request: GetNormalizedElementRectRequest): IRect {\n const systemRect = this._getElementRoundedRect(request);\n const position = this._normalizePosition(systemRect);\n const unscaledSize = this._unscaleSize(systemRect);\n const unscaledRect = this._getUnscaledRect(position, unscaledSize, systemRect)\n\n const offsetSize = this._getOffsetSize(request.element, unscaledSize);\n return RoundedRect.fromCenter(unscaledRect, offsetSize.width, offsetSize.height);\n }\n\n // BrowserWindow\n // +--------------------------------+\n // | |\n // | Element |\n // | (x: 100, y: 50) |\n // | +--------+ |\n // | | | |\n // | | | |\n // | +--------+ |\n // | |\n // +--------------------------------+\n // This data of the element is relative to the browser window, not the canvas, with all transformations applied.\n private _getElementRoundedRect(request: GetNormalizedElementRectRequest): IRoundedRect {\n return RoundedRect.fromRect(RectExtensions.fromElement(request.element));\n }\n\n private _normalizePosition(rect: IRoundedRect): IPoint {\n return this._fMediator.execute(new GetNormalizedPointRequest(rect));\n }\n\n private _unscaleSize(rect: IRoundedRect): ISize {\n return SizeExtensions.initialize(rect.width / this._transform.scale, rect.height / this._transform.scale);\n }\n\n private _getUnscaledRect(position: IPoint, size: ISize, rect: IRoundedRect): IRoundedRect {\n return new RoundedRect(\n position.x, position.y, size.width, size.height,\n rect.radius1, rect.radius2, rect.radius3, rect.radius4\n )\n }\n\n private _getOffsetSize(element: HTMLElement | SVGElement, size: ISize): ISize {\n return SizeExtensions.offsetFromElement(element) || size\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { IRect, ITransformModel, RectExtensions } from '@foblex/2d';\nimport { ICanBeSelectedElementAndRect } from './i-can-be-selected-element-and-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 { GetNormalizedElementRectRequest } from '../../get-normalized-element-rect';\n\n@Injectable()\n@FExecutionRegister(GetCanBeSelectedItemsRequest)\nexport class GetCanBeSelectedItemsExecution implements IExecution<void, ICanBeSelectedElementAndRect[]> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\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 public handle(): ICanBeSelectedElementAndRect[] {\n return [ ...this.getNodesWithRects(), ...this.getConnectionsWithRects() ].filter((x) => {\n return !this._fDraggableDataContext.selectedItems.includes(x.element);\n });\n }\n\n private getNodesWithRects(): ICanBeSelectedElementAndRect[] {\n return this.fNodes.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n fRect: RectExtensions.mult(\n this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.hostElement)),\n this.transform.scale\n )\n };\n });\n }\n\n private getConnectionsWithRects(): ICanBeSelectedElementAndRect[] {\n return this.fConnections.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n fRect: RectExtensions.mult(\n this._fMediator.execute<IRect>(new GetNormalizedElementRectRequest(x.boundingElement)),\n this.transform.scale\n )\n };\n });\n }\n}\n","export class GetCurrentSelectionRequest {\n static readonly fToken = Symbol('GetCurrentSelectionRequest');\n}\n","import { GetCurrentSelectionRequest } from './get-current-selection.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { ICurrentSelection } from './i-current-selection';\n\n@Injectable()\n@FExecutionRegister(GetCurrentSelectionRequest)\nexport class GetCurrentSelectionExecution implements IExecution<GetCurrentSelectionRequest, ICurrentSelection> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(): ICurrentSelection {\n return {\n fNodeIds: this._getSelectedNodes(),\n fGroupIds: this._getSelectedGroups(),\n fConnectionIds: this._getSelectedConnections()\n }\n }\n\n private _getSelectedNodes(): string[] {\n return this._fDraggableDataContext.selectedItems\n .filter(x => x.hostElement.classList.contains('f-node'))\n .map(x => x.hostElement.dataset[ 'fNodeId' ]!);\n }\n\n private _getSelectedGroups(): string[] {\n return this._fDraggableDataContext.selectedItems\n .filter(x => x.hostElement.classList.contains('f-group'))\n .map(x => x.hostElement.dataset[ 'fGroupId' ]!);\n }\n\n private _getSelectedConnections(): string[] {\n return this._fDraggableDataContext.selectedItems\n .filter(x => !x.hostElement.classList.contains('f-node') && !x.hostElement.classList.contains('f-group'))\n .map(x => x.hostElement.id);\n }\n}\n","export class SelectRequest {\n static readonly fToken = Symbol('SelectRequest');\n constructor(\n public nodes: string[],\n public connections: string[]\n ) {\n }\n}\n","import { SelectRequest } from './select.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectRequest)\nexport class SelectExecution implements IExecution<SelectRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: SelectRequest): void {\n this._fDraggableDataContext.selectedItems.forEach((x) => {\n x.unmarkAsSelected();\n });\n this._fDraggableDataContext.selectedItems = [];\n\n request.nodes.forEach((key) => {\n const node = this._fComponentsStore.fNodes.find((x) => x.fId === key);\n if(node) {\n node.markAsSelected();\n this._fDraggableDataContext.selectedItems.push(node);\n }\n });\n\n request.connections.forEach((key) => {\n const connection = this._fComponentsStore.fConnections.find((x) => x.fId === key);\n if(connection) {\n connection.markAsSelected();\n this._fDraggableDataContext.selectedItems.push(connection);\n }\n });\n\n this._fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class SelectAllRequest {\n static readonly fToken = Symbol('SelectAllRequest');\n}\n","import { SelectAllRequest } from './select-all.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectAllRequest)\nexport class SelectAllExecution implements IExecution<SelectAllRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: SelectAllRequest): void {\n this._fDraggableDataContext.selectedItems.forEach((x) => {\n x.unmarkAsSelected();\n });\n this._fDraggableDataContext.selectedItems = [];\n this._fComponentsStore.fNodes.forEach((x) => {\n x.markAsSelected();\n this._fDraggableDataContext.selectedItems.push(x);\n });\n this._fComponentsStore.fConnections.forEach((x) => {\n x.markAsSelected();\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 static readonly fToken = Symbol('SelectAndUpdateNodeLayerRequest');\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","export class MoveFrontElementsBeforeTargetElementRequest {\n static readonly fToken = Symbol('MoveFrontElementsBeforeTargetElementRequest');\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 { ISelectable } from '../../mixins';\n\nexport class UpdateItemAndChildrenLayersRequest {\n static readonly fToken = Symbol('UpdateItemAndChildrenLayersRequest');\n\n constructor(\n public item: ISelectable,\n public itemContainer: HTMLElement,\n ) {\n }\n}\n","export class GetDeepChildrenNodesAndGroupsRequest {\n static readonly fToken = Symbol('GetDeepChildrenNodesAndGroupsRequest');\n constructor(\n public fId: string\n ) {\n }\n}\n","import {inject, 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 private readonly _fComponentsStore = inject(FComponentsStore);\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 directChildren = this._fComponentsStore.fNodes.filter((x) => x.fParentId === fId);\n return directChildren.reduce((result, x) => {\n return result.concat(this._getChildrenNodes(x.fId, visited));\n }, directChildren);\n }\n}\n","import { UpdateItemAndChildrenLayersRequest } from './update-item-and-children-layers.request';\nimport { inject, 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';\nimport { FCanvasBase } from '../../f-canvas';\n\n@Injectable()\n@FExecutionRegister(UpdateItemAndChildrenLayersRequest)\nexport class UpdateItemAndChildrenLayersExecution implements IExecution<UpdateItemAndChildrenLayersRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentsStore.fCanvas!;\n }\n\n private get _fGroupsContainer(): HTMLElement {\n return this._fCanvas.fGroupsContainer().nativeElement;\n }\n\n private get _fNodesContainer(): HTMLElement {\n return this._fCanvas.fNodesContainer().nativeElement;\n }\n\n private get _fConnectionsContainer(): HTMLElement {\n return this._fCanvas.fConnectionsContainer().nativeElement;\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.execute(\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.execute<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId)).map((x) => x.hostElement);\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { SelectAndUpdateNodeLayerRequest } from './select-and-update-node-layer.request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { UpdateItemAndChildrenLayersRequest } from '../../update-item-and-children-layers';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(SelectAndUpdateNodeLayerRequest)\nexport class SelectAndUpdateNodeLayerExecution implements IHandler<SelectAndUpdateNodeLayerRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n public handle(request: SelectAndUpdateNodeLayerRequest): void {\n this.selectNodeIfNotSelected(request.fNode);\n\n this.fMediator.execute<void>(\n new UpdateItemAndChildrenLayersRequest(request.fNode, request.fNode.hostElement.parentElement as HTMLElement)\n );\n }\n\n private selectNodeIfNotSelected(fNode: FNodeBase) {\n if (!this.fDraggableDataContext.selectedItems.includes(fNode) && !fNode.fSelectionDisabled) {\n this.fDraggableDataContext.selectedItems.push(fNode);\n fNode.markAsSelected();\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","import { ClearSelectionExecution } from './clear-selection';\nimport { GetCurrentSelectionExecution } from './get-current-selection';\nimport { SelectExecution } from './select';\nimport { SelectAllExecution } from './select-all';\nimport { SelectAndUpdateNodeLayerExecution } from './select-and-update-node-layer';\nimport { GetCanBeSelectedItemsExecution } from './get-can-be-selected-items';\n\nexport const F_SELECTION_FEATURES = [\n\n ClearSelectionExecution,\n\n GetCanBeSelectedItemsExecution,\n\n GetCurrentSelectionExecution,\n\n SelectExecution,\n\n SelectAllExecution,\n\n SelectAndUpdateNodeLayerExecution\n];\n","import { EventEmitter, inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { EmitSelectionChangeEventRequest } from './emit-selection-change-event-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext, FSelectionChangeEvent } from '../../../f-draggable';\nimport { GetCurrentSelectionRequest, ICurrentSelection } from '../../f-selection';\nimport { NotifyTransformChangedRequest } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(EmitSelectionChangeEventRequest)\nexport class EmitSelectionChangeEventExecution implements IExecution<EmitSelectionChangeEventRequest, void> {\n\n private _fMediator = inject(FMediator);\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fSelectionChange(): EventEmitter<FSelectionChangeEvent> {\n return this._fComponentsStore.fDraggable!.fSelectionChange;\n }\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: EmitSelectionChangeEventRequest): void {\n if (\n !this._fDraggableDataContext.isSelectedChanged\n ) {\n return;\n }\n\n this._emitSelectionChange(this._getSelection());\n this._fDraggableDataContext.isSelectedChanged = false;\n this._fMediator.execute<void>(new NotifyTransformChangedRequest());\n }\n\n private _getSelection(): ICurrentSelection {\n return this._fMediator.execute<ICurrentSelection>(new GetCurrentSelectionRequest());\n }\n\n private _emitSelectionChange(selection: ICurrentSelection): void {\n this._fSelectionChange.emit(\n new FSelectionChangeEvent(selection.fNodeIds, selection.fGroupIds, selection.fConnectionIds)\n );\n }\n}\n","export class EndDragSequenceRequest {\n static readonly fToken = Symbol('EndDragSequenceRequest');\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { EndDragSequenceRequest } from './end-drag-sequence-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { F_CSS_CLASS } from '../../css-cls';\n\n@Injectable()\n@FExecutionRegister(EndDragSequenceRequest)\nexport class EndDragSequenceExecution implements IExecution<EndDragSequenceRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _hostElement(): HTMLElement {\n return this._fComponentsStore.fDraggable!.hostElement;\n }\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: EndDragSequenceRequest): void {\n this._hostElement.classList.remove(F_CSS_CLASS.DRAG_AND_DROP.DRAGGING);\n\n this._fDraggableDataContext.reset();\n this._emitDragEnded();\n }\n\n private _emitDragEnded(): void {\n this._fComponentsStore.fDraggable?.fDragEnded?.emit();\n }\n}\n","import {IPointerEvent} from \"../../../drag-toolkit\";\n\nexport class OnPointerMoveRequest {\n static readonly fToken = Symbol('OnPointerMoveRequest');\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { OnPointerMoveRequest } from './on-pointer-move-request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { IPoint, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport {IPointerEvent} from \"../../../drag-toolkit\";\n\n@Injectable()\n@FExecutionRegister(OnPointerMoveRequest)\nexport class OnPointerMoveExecution implements IExecution<OnPointerMoveRequest, void> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n private get _hostElement(): HTMLElement {\n return this._fComponentsStore.fDraggable!.hostElement;\n }\n\n private readonly _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: OnPointerMoveRequest): void {\n this._setDifferenceToDraggableItems(\n this._getDifferenceBetweenPointerAndPointerDown(request.event)\n );\n }\n\n private _setDifferenceToDraggableItems(difference: IPoint): void {\n this._fDraggableDataContext.draggableItems.forEach((item) => {\n item.onPointerMove({ ...difference });\n });\n }\n\n private _getDifferenceBetweenPointerAndPointerDown(event: IPointerEvent): IPoint {\n return this._getPointerPositionInCanvas(event)\n .div(this._fDraggableDataContext.onPointerDownScale)\n .sub(this._fDraggableDataContext.onPointerDownPosition);\n }\n\n private _getPointerPositionInCanvas(event: IPointerEvent): Point {\n return Point.fromPoint(event.getPosition()).elementTransform(this._hostElement);\n }\n}\n","export class InitializeDragSequenceRequest {\n static readonly fToken = Symbol('InitializeDragSequenceRequest');\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { InitializeDragSequenceRequest } from './initialize-drag-sequence-request';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(InitializeDragSequenceRequest)\nexport class InitializeDragSequenceExecution implements IExecution<InitializeDragSequenceRequest, void> {\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: InitializeDragSequenceRequest): void {\n this._fDraggableDataContext.reset();\n }\n}\n","export class IsDragStartedRequest {\n static readonly fToken = Symbol('IsDragStartedRequest');\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IsDragStartedRequest } from './is-drag-started-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(IsDragStartedRequest)\nexport class IsDragStartedExecution implements IExecution<IsDragStartedRequest, boolean> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: IsDragStartedRequest): boolean {\n return !!this._fComponentsStore.fDraggable?.isDragStarted;\n }\n}\n","export class PrepareDragSequenceRequest {\n static readonly fToken = Symbol('PrepareDragSequenceRequest');\n\n}\n","export class StartDragSequenceRequest {\n static readonly fToken = Symbol('StartDragSequenceRequest');\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { StartDragSequenceRequest } from './start-drag-sequence-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { EmitSelectionChangeEventRequest } from '../emit-selection-change-event';\nimport { F_CSS_CLASS } from '../../css-cls';\n\n@Injectable()\n@FExecutionRegister(StartDragSequenceRequest)\nexport class StartDragSequenceExecution implements IExecution<StartDragSequenceRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n private get _hostElement(): HTMLElement {\n return this._fComponentsStore.fDraggable!.hostElement;\n }\n\n public handle(request: StartDragSequenceRequest): void {\n if (this._fDraggableDataContext.draggableItems.length > 0) {\n this._hostElement.classList.add(F_CSS_CLASS.DRAG_AND_DROP.DRAGGING);\n this._fMediator.execute<void>(new EmitSelectionChangeEventRequest());\n this._emitDragStarted();\n }\n }\n\n private _emitDragStarted(): void {\n this._fComponentsStore.fDraggable?.fDragStarted?.emit({\n fEventType: this._fDraggableDataContext.draggableItems[ 0 ].fEventType,\n fData: { ...this._fDraggableDataContext.draggableItems[ 0 ].fData }\n });\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { PrepareDragSequenceRequest } from './prepare-drag-sequence-request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { StartDragSequenceRequest } from '../start-drag-sequence';\n\n@Injectable()\n@FExecutionRegister(PrepareDragSequenceRequest)\nexport class PrepareDragSequenceExecution implements IExecution<PrepareDragSequenceRequest, void> {\n\n private _fMediator = inject(FMediator);\n\n private _fDraggableDataContext = inject(FDraggableDataContext);\n\n public handle(request: PrepareDragSequenceRequest): void {\n this._callPrepareDragSequence();\n\n this._fMediator.execute<void>(new StartDragSequenceRequest());\n }\n\n private _callPrepareDragSequence(): void {\n this._fDraggableDataContext.draggableItems.forEach((item) => {\n item.prepareDragSequence?.();\n });\n }\n}\n","export class RemoveDndFromStoreRequest {\n static readonly fToken = Symbol('RemoveDndFromStoreRequest');\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveDndFromStoreRequest } from './remove-dnd-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveDndFromStoreRequest)\nexport class RemoveDndFromStoreExecution implements IExecution<RemoveDndFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveDndFromStoreRequest): void {\n this._fComponentsStore.fDraggable = undefined;\n }\n}\n","import { AddDndToStoreExecution } from './add-dnd-to-store';\nimport { EmitSelectionChangeEventExecution } from './emit-selection-change-event';\nimport { RemoveDndFromStoreExecution } from './remove-dnd-from-store';\nimport { PrepareDragSequenceExecution } from './prepare-drag-sequence';\nimport { EndDragSequenceExecution } from './end-drag-sequence';\nimport { InitializeDragSequenceExecution } from './initialize-drag-sequence';\nimport { OnPointerMoveExecution } from './on-pointer-move';\nimport { IsDragStartedExecution } from './is-drag-started';\nimport { StartDragSequenceExecution } from './start-drag-sequence';\n\nexport const F_DRAGGABLE_FEATURES = [\n\n AddDndToStoreExecution,\n\n EmitSelectionChangeEventExecution,\n\n EndDragSequenceExecution,\n\n OnPointerMoveExecution,\n\n InitializeDragSequenceExecution,\n\n PrepareDragSequenceExecution,\n\n IsDragStartedExecution,\n\n StartDragSequenceExecution,\n\n RemoveDndFromStoreExecution\n];\n","import { FFlowBase } from '../../../f-flow';\n\nexport class AddFlowToStoreRequest {\n static readonly fToken = Symbol('AddFlowToStoreRequest');\n\n constructor(\n public fComponent: FFlowBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddFlowToStoreRequest } from './add-flow-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddFlowToStoreRequest)\nexport class AddFlowToStoreExecution implements IExecution<AddFlowToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddFlowToStoreRequest): void {\n this._fComponentsStore.fFlow = request.fComponent;\n }\n}\n","export class GetFlowRequest {\n static readonly fToken = Symbol('GetFlowRequest');\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetFlowRequest } from './get-flow-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FFlowBase } from '../../../f-flow';\n\n@Injectable()\n@FExecutionRegister(GetFlowRequest)\nexport class GetFlowExecution implements IExecution<GetFlowRequest, FFlowBase> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetFlowRequest): FFlowBase {\n const result = this._fComponentsStore.fFlow;\n if (!result) {\n throw new Error(`Flow not found in store`);\n }\n return result;\n }\n}\n","export class GetFlowHostElementRequest {\n static readonly fToken = Symbol('GetFlowHostElementRequest');\n}\n","import { GetFlowHostElementRequest } from './get-flow-host-element.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetFlowHostElementRequest)\nexport class GetFlowHostElementExecution implements IExecution<GetFlowHostElementRequest, HTMLElement> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(): HTMLElement {\n return this._fComponentsStore.flowHost;\n }\n}\n","export class GetFlowStateConnectionsRequest {\n static readonly fToken = Symbol('GetFlowStateConnectionsRequest');\n}\n","import { inject, 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';\nimport { FConnectionBase } from '../../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateConnectionsRequest)\nexport class GetFlowStateConnectionsExecution implements IExecution<GetFlowStateConnectionsRequest, IFFlowStateConnection[]> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetFlowStateConnectionsRequest): IFFlowStateConnection[] {\n return this._fComponentsStore.fConnections.map(this._mapToConnectionState);\n }\n\n private _mapToConnectionState(x: FConnectionBase): IFFlowStateConnection {\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","import { Type } from '@angular/core';\n\nexport class GetFlowStateNodesRequest {\n static readonly fToken = Symbol('GetFlowStateNodesRequest');\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.fId,\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.fId,\n fConnectableSide: x.fConnectableSide\n }\n });\n }\n}\n","export class GetFlowStateRequest {\n static readonly fToken = Symbol('GetFlowStateRequest');\n}\n","import { GetFlowStateRequest } from './get-flow-state.request';\nimport { inject, 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 private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\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.execute(new GetFlowStateNodesRequest(FNodeDirective)),\n groups: this._fMediator.execute(new GetFlowStateNodesRequest(FGroupDirective)),\n connections: this._fMediator.execute(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 RemoveFlowFromStoreRequest {\n static readonly fToken = Symbol('RemoveFlowFromStoreRequest');\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveFlowFromStoreRequest } from './remove-flow-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveFlowFromStoreRequest)\nexport class RemoveFlowFromStoreExecution implements IExecution<RemoveFlowFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveFlowFromStoreRequest): void {\n this._fComponentsStore.fFlow = undefined;\n }\n}\n","import { GetFlowHostElementExecution } from './get-flow-host-element';\nimport { AddFlowToStoreExecution } from './add-flow-to-store';\nimport { RemoveFlowFromStoreExecution } from './remove-flow-from-store';\nimport { GetFlowExecution } from './get-flow';\nimport { GET_FLOW_STATE_PROVIDERS } from './get-flow-state';\n\nexport const F_FLOW_FEATURES = [\n\n AddFlowToStoreExecution,\n\n GetFlowExecution,\n\n GetFlowHostElementExecution,\n\n ...GET_FLOW_STATE_PROVIDERS,\n\n RemoveFlowFromStoreExecution\n];\n","import { FLineAlignmentBase } from '../../../f-line-alignment';\n\nexport class AddLineAlignmentToStoreRequest {\n static readonly fToken = Symbol('AddLineAlignmentToStoreRequest');\n constructor(\n public fComponent: FLineAlignmentBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddLineAlignmentToStoreRequest } from './add-line-alignment-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddLineAlignmentToStoreRequest)\nexport class AddLineAlignmentToStoreExecution implements IExecution<AddLineAlignmentToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddLineAlignmentToStoreRequest): void {\n this._fComponentsStore.fLineAlignment = request.fComponent;\n }\n}\n","export class RemoveLineAlignmentFromStoreRequest {\n static readonly fToken = Symbol('RemoveLineAlignmentFromStoreRequest');\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveLineAlignmentFromStoreRequest } from './remove-line-alignment-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveLineAlignmentFromStoreRequest)\nexport class RemoveLineAlignmentFromStoreExecution implements IExecution<RemoveLineAlignmentFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveLineAlignmentFromStoreRequest): void {\n this._fComponentsStore.fLineAlignment = undefined;\n }\n}\n","import { AddLineAlignmentToStoreExecution } from './add-line-alignment-to-store';\nimport { RemoveLineAlignmentFromStoreExecution } from './remove-line-alignment-from-store';\n\nexport const F_LINE_ALIGNMENT_FEATURES = [\n\n AddLineAlignmentToStoreExecution,\n\n RemoveLineAlignmentFromStoreExecution\n];\n","import { FNodeBase } from '../../../f-node';\n\nexport class AddNodeToStoreRequest {\n static readonly fToken = Symbol('AddNodeToStoreRequest');\n constructor(\n public fComponent: FNodeBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddNodeToStoreRequest } from './add-node-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(AddNodeToStoreRequest)\nexport class AddNodeToStoreExecution implements IExecution<AddNodeToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddNodeToStoreRequest): void {\n this._fComponentsStore.addComponent(this._fComponentsStore.fNodes, request.fComponent);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class CalculateInputConnectionsRequest {\n static readonly fToken = Symbol('CalculateInputConnectionsRequest');\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { CalculateInputConnectionsRequest } from './calculate-input-connections-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectionBase } from '../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(CalculateInputConnectionsRequest)\nexport class CalculateInputConnectionsExecution implements IExecution<CalculateInputConnectionsRequest, FConnectionBase[]> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: CalculateInputConnectionsRequest): FConnectionBase[] {\n return this._calculateConnections(\n new Set(this._calculateConnectors(request.fNode))\n );\n }\n\n private _calculateConnectors(fNode: FNodeBase): string[] {\n return this._fComponentsStore.fInputs\n .filter((x) => fNode.isContains(x.hostElement))\n .map((x) => x.fId);\n }\n\n private _calculateConnections(ids: Set<string>): FConnectionBase[] {\n return this._fComponentsStore.fConnections\n .filter((x) => ids.has(x.fInputId));\n }\n}\n","export class CalculateNodesBoundingBoxRequest {\n static readonly fToken = Symbol('CalculateNodesBoundingBoxRequest');\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { CalculateNodesBoundingBoxRequest } from './calculate-nodes-bounding-box.request';\nimport { inject, Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(CalculateNodesBoundingBoxRequest)\nexport class CalculateNodesBoundingBoxExecution implements IExecution<CalculateNodesBoundingBoxRequest, IRect | null> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: CalculateNodesBoundingBoxRequest): IRect | null {\n return RectExtensions.union(this._getNodesRects());\n }\n\n private _getNodesRects(): IRect[] {\n return this._fComponentsStore.fNodes.map((x) => {\n return this._getElementRect(x.hostElement);\n });\n }\n\n private _getElementRect(element: HTMLElement | SVGElement): IRect {\n return RectExtensions.fromElement(element)\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class CalculateNodesBoundingBoxNormalizedPositionRequest {\n static readonly fToken = Symbol('CalculateNodesBoundingBoxNormalizedPositionRequest');\n constructor(\n public fNodes?: FNodeBase[],\n ) {\n }\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { CalculateNodesBoundingBoxNormalizedPositionRequest } from './calculate-nodes-bounding-box-normalized-position.request';\nimport { inject, 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(CalculateNodesBoundingBoxNormalizedPositionRequest)\nexport class CalculateNodesBoundingBoxNormalizedPositionExecution implements IExecution<CalculateNodesBoundingBoxNormalizedPositionRequest, IRect | null> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: CalculateNodesBoundingBoxNormalizedPositionRequest): IRect | null {\n return RectExtensions.union(this._getNodesRects(request.fNodes || this._fComponentsStore.fNodes));\n }\n\n private _getNodesRects(fNodes: FNodeBase[]): IRect[] {\n return fNodes.map((x) => {\n return this._getElementRect(x, RectExtensions.fromElement(x.hostElement));\n });\n }\n\n private _getElementRect(fNode: FNodeBase, rect: IRect): IRect {\n return RectExtensions.initialize(fNode.position.x, fNode.position.y, rect.width, rect.height)\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class CalculateOutputConnectionsRequest {\n static readonly fToken = Symbol('CalculateOutputConnectionsRequest');\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { CalculateOutputConnectionsRequest } from './calculate-output-connections-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectionBase } from '../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(CalculateOutputConnectionsRequest)\nexport class CalculateOutputConnectionsExecution implements IExecution<CalculateOutputConnectionsRequest, FConnectionBase[]> {\n\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: CalculateOutputConnectionsRequest): FConnectionBase[] {\n return this._calculateConnections(\n new Set(this._calculateConnectors(request.fNode))\n );\n }\n\n private _calculateConnectors(fNode: FNodeBase): string[] {\n return this._fComponentsStore.fOutputs\n .filter((x) => fNode.isContains(x.hostElement))\n .map((x) => x.fId);\n }\n\n private _calculateConnections(ids: Set<string>): FConnectionBase[] {\n return this._fComponentsStore.fConnections\n .filter((x) => ids.has(x.fOutputId));\n }\n}\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNodePaddingRequest {\n static readonly fToken = Symbol('GetNodePaddingRequest');\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import {inject, 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 private readonly _browser = inject(BrowserService);\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._browser.window.getComputedStyle(node.hostElement);\n return [\n this._browser.toPixels(style.paddingLeft, rect.width, rect.height, style.fontSize),\n this._browser.toPixels(style.paddingTop, rect.width, rect.height, style.fontSize),\n this._browser.toPixels(style.paddingRight, rect.width, rect.height, style.fontSize),\n this._browser.toPixels(style.paddingBottom, rect.width, rect.height, style.fontSize)\n ];\n }\n}\n","export class GetNodesRequest {\n static readonly fToken = Symbol('GetNodesRequest');\n\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetNodesRequest } from './get-nodes-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetNodesRequest)\nexport class GetNodesExecution implements IExecution<GetNodesRequest, FNodeBase[]> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: GetNodesRequest): FNodeBase[] {\n return this._fComponentsStore.fNodes;\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetParentNodesRequest {\n static readonly fToken = Symbol('GetParentNodesRequest');\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { inject, 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 private _fComponentsStore = inject(FComponentsStore);\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 { DestroyRef } from '@angular/core';\nimport { FNodeBase } from '../../../f-node';\n\nexport class UpdateNodeWhenStateOrSizeChangedRequest {\n static readonly fToken = Symbol('UpdateNodeWhenStateOrSizeChangedRequest');\n constructor(\n public fComponent: FNodeBase,\n public destroyRef: DestroyRef,\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { UpdateNodeWhenStateOrSizeChangedRequest } from './update-node-when-state-or-size-changed-request';\nimport { EFConnectableSide, FConnectorBase } from '../../../f-connectors';\nimport { NotifyDataChangedRequest } from '../../../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../../../reactivity';\nimport { FResizeChannel } from '../../../reactivity';\nimport { RectExtensions } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(UpdateNodeWhenStateOrSizeChangedRequest)\nexport class UpdateNodeWhenStateOrSizeChangedExecution\n implements IExecution<UpdateNodeWhenStateOrSizeChangedRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n\n public handle(request: UpdateNodeWhenStateOrSizeChangedRequest): void {\n const { hostElement, connectors, stateChanges } = request.fComponent;\n\n new FChannelHub(\n new FResizeChannel(hostElement),\n stateChanges\n ).pipe(notifyOnStart(), debounceTime(10)).listen(request.destroyRef, () => {\n this._calculateConnectorsConnectableSide(connectors, hostElement);\n this._fMediator.execute<void>(new NotifyDataChangedRequest());\n });\n }\n\n private _calculateConnectorsConnectableSide(fConnectors: FConnectorBase[], fNodeHost: HTMLElement | SVGElement): void {\n fConnectors.forEach((x: FConnectorBase) => {\n x.fConnectableSide = this._calculateConnectorConnectableSide(x, fNodeHost);\n });\n }\n\n private _calculateConnectorConnectableSide(fConnector: FConnectorBase, fNodeHost: HTMLElement | SVGElement): EFConnectableSide {\n let result: EFConnectableSide | undefined;\n\n if (fConnector.userFConnectableSide === EFConnectableSide.AUTO) {\n result = this._getSideByDelta(fConnector.hostElement, fNodeHost);\n } else {\n result = fConnector.userFConnectableSide;\n }\n return result;\n }\n\n private _getSideByDelta(fConnectorHost: HTMLElement | SVGElement, fNodeHost: HTMLElement | SVGElement): EFConnectableSide {\n let result: EFConnectableSide | undefined;\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\n","import { FNodeBase } from '../../../f-node';\n\nexport class RemoveNodeFromStoreRequest {\n static readonly fToken = Symbol('RemoveNodeFromStoreRequest');\n constructor(\n public fComponent: FNodeBase\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveNodeFromStoreRequest } from './remove-node-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(RemoveNodeFromStoreRequest)\nexport class RemoveNodeFromStoreExecution implements IExecution<RemoveNodeFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveNodeFromStoreRequest): void {\n this._fComponentsStore.removeComponent(this._fComponentsStore.fNodes, request.fComponent);\n }\n}\n","import { AddNodeToStoreExecution } from './add-node-to-store';\nimport { RemoveNodeFromStoreExecution } from './remove-node-from-store';\nimport { UpdateNodeWhenStateOrSizeChangedExecution } from './update-node-when-state-or-size-changed';\nimport { GetNodesExecution } from './get-nodes';\nimport { CalculateNodesBoundingBoxExecution } from './calculate-nodes-bounding-box';\nimport {\n CalculateNodesBoundingBoxNormalizedPositionExecution\n} from './calculate-nodes-bounding-box-normalized-position';\nimport { GetNodePaddingExecution } from './get-node-padding';\nimport { GetParentNodesExecution } from './get-parent-nodes';\nimport { CalculateInputConnectionsExecution } from './calculate-input-connections';\nimport { CalculateOutputConnectionsExecution } from './calculate-output-connections';\n\nexport const F_NODE_FEATURES = [\n\n AddNodeToStoreExecution,\n\n CalculateInputConnectionsExecution,\n\n CalculateNodesBoundingBoxExecution,\n\n CalculateNodesBoundingBoxNormalizedPositionExecution,\n\n CalculateOutputConnectionsExecution,\n\n GetNodePaddingExecution,\n\n GetNodesExecution,\n\n GetParentNodesExecution,\n\n UpdateNodeWhenStateOrSizeChangedExecution,\n\n RemoveNodeFromStoreExecution\n];\n","import { FZoomBase } from '../../../f-zoom';\n\nexport class AddZoomToStoreRequest {\n static readonly fToken = Symbol('AddZoomToStoreRequest');\n constructor(\n public fComponent: FZoomBase\n ) {\n }\n}\n","export const F_ZOOM_TAG = 'F_ZOOM';\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { AddZoomToStoreRequest } from './add-zoom-to-store-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { F_ZOOM_TAG } from '../f-zoom-tag';\n\n@Injectable()\n@FExecutionRegister(AddZoomToStoreRequest)\nexport class AddZoomToStoreExecution implements IExecution<AddZoomToStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: AddZoomToStoreRequest): void {\n this._fComponentsStore.fComponents = {\n [F_ZOOM_TAG]: request.fComponent\n };\n }\n}\n","export class RemoveZoomFromStoreRequest {\n static readonly fToken = Symbol('RemoveZoomFromStoreRequest');\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RemoveZoomFromStoreRequest } from './remove-zoom-from-store-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { F_ZOOM_TAG } from '../f-zoom-tag';\n\n@Injectable()\n@FExecutionRegister(RemoveZoomFromStoreRequest)\nexport class RemoveZoomFromStoreExecution implements IExecution<RemoveZoomFromStoreRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n public handle(request: RemoveZoomFromStoreRequest): void {\n this._fComponentsStore.fComponents = {\n [F_ZOOM_TAG]: undefined\n };\n }\n}\n","export class ResetZoomRequest {\n static readonly fToken = Symbol('ResetZoomRequest');\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ResetZoomRequest } from './reset-zoom-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FCanvasBase } from '../../../f-canvas';\n\n@Injectable()\n@FExecutionRegister(ResetZoomRequest)\nexport class ResetZoomExecution implements IExecution<ResetZoomRequest, void> {\n\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentsStore.fCanvas!;\n }\n\n public handle(request: ResetZoomRequest): void {\n this._fCanvas.resetScale();\n this._fCanvas.redraw();\n this._fCanvas.emitCanvasChangeEvent();\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class SetZoomRequest {\n static readonly fToken = Symbol('SetZoomRequest');\n constructor(\n public position: IPoint,\n public step: number,\n public direction: number,\n public animate: boolean = false\n ) {\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { SetZoomRequest } from './set-zoom-request';\nimport { FComponentsStore } from '../../../f-storage';\nimport { F_ZOOM_TAG } from '../f-zoom-tag';\nimport { IPoint, Point } from '@foblex/2d';\nimport { FCanvasBase } from '../../../f-canvas';\nimport { FZoomBase } from '../../../f-zoom';\nimport { IsDragStartedRequest } from '../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SetZoomRequest)\nexport class SetZoomExecution implements IExecution<SetZoomRequest, void> {\n\n private _fMediator = inject(FMediator);\n private _fComponentsStore = inject(FComponentsStore);\n\n private get _fHost(): HTMLElement {\n return this._fComponentsStore.fFlow?.hostElement!;\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentsStore.fCanvas!;\n }\n\n private get _fZoomComponent(): FZoomBase {\n return this._fComponentsStore.fComponents[F_ZOOM_TAG]!;\n }\n\n private get _isDragStarted(): boolean {\n return this._fMediator.execute<boolean>(new IsDragStartedRequest());\n }\n\n public handle(request: SetZoomRequest): void {\n if (this._isDragStarted || !this._fZoomComponent) {\n return;\n }\n\n const result = this._fCanvas.transform.scale + request.step * request.direction;\n\n this._fCanvas.setScale(this._clamp(result), this._castPositionToFlow(request.position));\n request.animate ? this._fCanvas.redrawWithAnimation() : this._fCanvas.redraw();\n this._fCanvas.emitCanvasChangeEvent();\n }\n\n private _clamp(value: number): number {\n return Math.max(this._fZoomComponent.minimum, Math.min(value, this._fZoomComponent.maximum));\n }\n\n private _castPositionToFlow(position: IPoint): IPoint {\n return Point.fromPoint(position).elementTransform(this._fHost);\n }\n}\n","import { AddZoomToStoreExecution } from './add-zoom-to-store';\nimport { RemoveZoomFromStoreExecution } from './remove-zoom-from-store';\nimport { SetZoomExecution } from './set-zoom';\nimport { ResetZoomExecution } from './reset-zoom';\n\nexport const F_ZOOM_FEATURES = [\n\n AddZoomToStoreExecution,\n\n RemoveZoomFromStoreExecution,\n\n ResetZoomExecution,\n\n SetZoomExecution\n];\n","export class SortNodeLayersRequest {\n static readonly fToken = Symbol('SortNodeLayersRequest');\n}\n","import { SortNodeLayersRequest } from './sort-node-layers.request';\nimport { inject, 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';\nimport { FCanvasBase } from '../../../f-canvas';\n\n@Injectable()\n@FExecutionRegister(SortNodeLayersRequest)\nexport class SortNodeLayersExecution implements IExecution<SortNodeLayersRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fBrowser = inject(BrowserService);\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentsStore.fCanvas!;\n }\n\n private get _fGroupsContainer(): HTMLElement {\n return this._fCanvas.fGroupsContainer().nativeElement;\n }\n\n private get _fNodesContainer(): HTMLElement {\n return this._fCanvas.fNodesContainer().nativeElement;\n }\n\n private get _fNodeElements(): HTMLElement[] {\n return Array.from(this._fNodesContainer.children) as HTMLElement[];\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\n .filter((x) => this._fGroupsContainer.contains(x.hostElement));\n }\n\n private _getSortedChildrenNodes(\n parent: FNodeBase,\n ): HTMLElement[] {\n const allElements = this._fNodeElements;\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.execute<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 static readonly fToken = Symbol('SortItemsByParentRequest');\n\n constructor(\n public fItemsContainer: HTMLElement // fGroupsContainer || fNodesContainer\n ) {\n }\n}\n","import { SortItemsByParentRequest } from './sort-items-by-parent.request';\nimport { inject, 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 readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n private readonly _fBrowser = inject(BrowserService);\n\n private _fItemsContainer!: HTMLElement;\n\n private get _fItemElements(): HTMLElement[] {\n return Array.from(this._fItemsContainer.children) as HTMLElement[];\n }\n\n public handle(request: SortItemsByParentRequest): void {\n this._fItemsContainer = request.fItemsContainer;\n this._getItemsOfContainer().forEach((fItem: FNodeBase) => {\n this._moveChildrenItems(this._getSortedChildrenItems(fItem), fItem);\n });\n }\n\n private _getItemsOfContainer(): FNodeBase[] {\n return this._fComponentsStore.fNodes\n .filter((x) => this._fItemsContainer.contains(x.hostElement));\n }\n\n private _getSortedChildrenItems(\n fItem: FNodeBase,\n ): HTMLElement[] {\n const indexInContainer = this._fItemElements.indexOf(fItem.hostElement);\n return this._getChildrenItems(fItem.fId)\n .filter((child: HTMLElement) => this._fItemElements.indexOf(child) < indexInContainer)\n .sort((a, b) => this._fItemElements.indexOf(a) - this._fItemElements.indexOf(b));\n }\n\n private _getChildrenItems(fId: string): HTMLElement[] {\n return this._fMediator.execute<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 static readonly fToken = Symbol('SortItemLayersRequest');\n\n}\n","import { SortItemLayersRequest } from './sort-item-layers.request';\nimport { inject, 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';\nimport { FCanvasBase } from '../../f-canvas';\n\n@Injectable()\n@FExecutionRegister(SortItemLayersRequest)\nexport class SortItemLayersExecution implements IExecution<SortItemLayersRequest, void> {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _fComponentsStore = inject(FComponentsStore);\n\n private get _fCanvas(): FCanvasBase {\n return this._fComponentsStore.fCanvas!;\n }\n\n public handle(request: SortItemLayersRequest): void {\n if(!this._fComponentsStore.fCanvas) {\n return;\n }\n this._fMediator.execute(new SortItemsByParentRequest(this._fCanvas.fGroupsContainer().nativeElement));\n this._fMediator.execute(new SortNodeLayersRequest());\n this._fMediator.execute(new SortItemsByParentRequest(this._fCanvas.fNodesContainer().nativeElement));\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","export type FEventTrigger = (event: FTriggerEvent) => boolean;\n\nexport type FTriggerEvent = MouseEvent | TouchEvent | WheelEvent;\n\nexport function isValidEventTrigger(event: FTriggerEvent, fTrigger: FEventTrigger): boolean {\n return fTrigger(event);\n}\n\nexport function defaultEventTrigger(event: FTriggerEvent): boolean {\n return true;\n}\n","export function isMobile(): boolean {\n // @ts-ignore\n return /android|iPad|iPhone|iPod/i.test(navigator.userAgent || navigator.vendor || window[ 'opera' ])\n}\n","export function Deprecated(newMethodName: string, removalVersion: string = '18.0.0'): MethodDecorator {\n return function (\n target: Object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<any>\n ): TypedPropertyDescriptor<any> | void {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args: any[]) {\n console.warn(\n `Method \"${String(propertyKey)}\" is deprecated. Use \"${newMethodName}\" instead. This method will be removed in version ${removalVersion}.`,\n );\n return originalMethod.apply(this, args);\n };\n return descriptor;\n };\n}\n\n","export function LogExecutionTime(label?: string): MethodDecorator {\n return function (\n target: Object,\n propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<any>\n ): TypedPropertyDescriptor<any> | void {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args: any[]) {\n console.time(label || String(propertyKey));\n const result = originalMethod.apply(this, args);\n\n if (result instanceof Promise) {\n return result.finally(() => console.timeEnd(label || String(propertyKey)));\n }\n\n console.timeEnd(label || String(propertyKey));\n return result;\n };\n\n return descriptor;\n };\n}\n","import {GetNormalizedElementRectExecution} from './get-normalized-element-rect';\nimport {\n MoveFrontElementsBeforeTargetElementExecution,\n UpdateItemAndChildrenLayersExecution\n} from './update-item-and-children-layers';\nimport {GetNormalizedPointExecution} from './get-normalized-point';\nimport {SortItemLayersExecution, SortItemsByParentExecution, SortNodeLayersExecution} from './sort-item-layers';\nimport {GetDeepChildrenNodesAndGroupsExecution} from './get-deep-children-nodes-and-groups';\nimport {GetElementRoundedRectExecution} from './get-element-rounded-rect';\nimport {F_SELECTION_FEATURES} from './f-selection';\nimport {F_BACKGROUND_FEATURES} from './f-background';\nimport {F_CANVAS_FEATURES} from './f-canvas';\nimport {F_CONNECTION_FEATURES} from './f-connection';\nimport {F_CONNECTORS_FEATURES} from './f-connectors';\nimport {F_FLOW_FEATURES} from './f-flow';\nimport {F_DRAGGABLE_FEATURES} from './f-draggable';\nimport {F_NODE_FEATURES} from './f-node';\nimport {F_LINE_ALIGNMENT_FEATURES} from './f-line-alignment';\nimport {F_ZOOM_FEATURES} from './f-zoom';\nimport {GetNormalizedConnectorRectExecution} from \"./get-normalized-connector-rect\";\n\nexport const COMMON_PROVIDERS = [\n\n ...F_CANVAS_FEATURES,\n\n ...F_CONNECTION_FEATURES,\n\n ...F_BACKGROUND_FEATURES,\n\n ...F_CONNECTORS_FEATURES,\n\n ...F_DRAGGABLE_FEATURES,\n\n ...F_FLOW_FEATURES,\n\n ...F_LINE_ALIGNMENT_FEATURES,\n\n ...F_NODE_FEATURES,\n\n GetElementRoundedRectExecution,\n\n ...F_SELECTION_FEATURES,\n\n ...F_ZOOM_FEATURES,\n\n GetDeepChildrenNodesAndGroupsExecution,\n\n GetNormalizedConnectorRectExecution,\n\n GetNormalizedElementRectExecution,\n\n GetNormalizedPointExecution,\n\n SortItemLayersExecution,\n\n SortItemsByParentExecution,\n\n SortNodeLayersExecution,\n\n UpdateItemAndChildrenLayersExecution,\n\n MoveFrontElementsBeforeTargetElementExecution,\n];\n","import {\n ChangeDetectionStrategy,\n Component, DestroyRef,\n ElementRef, inject, input, numberAttribute, OnChanges,\n OnInit, SimpleChanges\n} from \"@angular/core\";\nimport {\n ITransformModel,\n PointExtensions, SizeExtensions, TransformModelExtensions\n} from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { createSVGElement } from '../../domain';\nimport { BrowserService } from '@foblex/platform';\nimport { FChannel, FChannelHub, notifyOnStart } from '../../reactivity';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-rect-pattern\",\n template: ``,\n standalone: true,\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, OnChanges, IFBackgroundPattern {\n\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _elementReference = inject(ElementRef);\n private readonly _fBrowser = inject(BrowserService);\n\n private readonly _stateChanges = new FChannel();\n\n public get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public id = input<string>(`f-pattern-${ uniqueId++ }`);\n public vColor = input<string>('rgba(0,0,0,0.1)');\n public hColor = input<string>('rgba(0,0,0,0.1)');\n public vSize = input<number, unknown>(20, { transform: numberAttribute});\n public hSize = input<number, unknown>(20, { transform: numberAttribute});\n\n private _transform = TransformModelExtensions.default();\n\n private _position = PointExtensions.initialize();\n\n private _size = SizeExtensions.initialize(this.hSize(), this.vSize());\n\n private _pattern!: SVGPatternElement;\n private _vLine!: SVGLineElement;\n private _hLine!: SVGLineElement;\n\n constructor(\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._listenStateChanges();\n }\n\n private _listenStateChanges(): void {\n new FChannelHub(this._stateChanges).pipe(notifyOnStart()).listen(this._destroyRef, () => this._redraw());\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['vSize'] || changes['hSize'] || changes['vColor'] || changes['hColor']) {\n this._refresh();\n }\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 _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 _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._refresh();\n }\n\n private _refresh(): void {\n this._stateChanges.notify();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, DestroyRef,\n ElementRef, inject, input, Input, numberAttribute, OnChanges, OnDestroy,\n OnInit, SimpleChanges\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 { FChannel, FChannelHub, notifyOnStart } from '../../reactivity';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-circle-pattern\",\n template: ``,\n standalone: true,\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, OnChanges, IFBackgroundPattern {\n\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _elementReference = inject(ElementRef);\n private readonly _fBrowser = inject(BrowserService);\n\n private readonly _stateChanges = new FChannel();\n\n public get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public id = input<string>(`f-pattern-${ uniqueId++ }`);\n public color = input<string>('rgba(0,0,0,0.1)');\n public radius = input<number, unknown>(20, { transform: numberAttribute});\n\n private _scaledRadius: number = 20;\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 ) {\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._listenStateChanges();\n }\n\n private _listenStateChanges(): void {\n new FChannelHub(this._stateChanges).pipe(notifyOnStart()).listen(this._destroyRef, () => this._redraw());\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes['radius'] || changes['color']) {\n this._refresh();\n }\n }\n\n private _redraw(): void {\n this._calculatePattern();\n this._redrawPattern();\n this._redrawElement();\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 _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._refresh();\n }\n\n private _refresh(): void {\n this._stateChanges.notify();\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 setTransform(transform: ITransformModel): void;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, contentChild,\n ElementRef, inject, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport { F_BACKGROUND, FBackgroundBase } from './f-background-base';\nimport { ITransformModel } from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN } from './domain';\nimport { FMediator } from '@foblex/mediator';\nimport {\n AddBackgroundToStoreRequest,\n AddPatternToBackgroundRequest,\n RemoveBackgroundFromStoreRequest\n} from '../domain';\n\n@Component({\n selector: \"f-background\",\n template: \"<svg><ng-content></ng-content></svg>\",\n styleUrls: [ \"./f-background.component.scss\" ],\n standalone: true,\n host: {\n 'class': 'f-component f-background'\n },\n providers: [ { provide: F_BACKGROUND, useExisting: FBackgroundComponent } ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FBackgroundComponent\n extends FBackgroundBase implements OnInit, AfterContentInit, OnDestroy {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _elementReference = inject(ElementRef);\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n protected fBackgroundPattern = contentChild(F_BACKGROUND_PATTERN);\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddBackgroundToStoreRequest(this));\n }\n\n public ngAfterContentInit(): void {\n this._fMediator.execute(new AddPatternToBackgroundRequest(this.fBackgroundPattern()));\n }\n\n public setTransform(transform: ITransformModel): void {\n this.fBackgroundPattern()?.setTransform(transform);\n }\n\n public ngOnDestroy() {\n this._fMediator.execute(new RemoveBackgroundFromStoreRequest(this));\n }\n}\n","import { FBackgroundComponent } from './f-background.component';\nimport { FRectPatternComponent } from './f-rect-pattern';\nimport { FCirclePatternComponent } from './f-circle-pattern';\n\nexport const F_BACKGROUND_PROVIDERS = [\n\n FBackgroundComponent,\n\n FRectPatternComponent,\n\n FCirclePatternComponent\n];\n","import { IPoint } from '@foblex/2d';\n\nexport class FCanvasChangeEvent {\n constructor(\n public readonly position: IPoint,\n public readonly scale: number,\n ) {\n }\n}\n","import { PointExtensions, TransformModelExtensions, IPoint } from '@foblex/2d';\nimport { Directive, ElementRef, InjectionToken, OutputEmitterRef, Signal } from '@angular/core';\nimport { FCanvasChangeEvent } from './domain';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_CANVAS = new InjectionToken<FCanvasBase>('F_CANVAS');\n\n@Directive()\nexport abstract class FCanvasBase implements IHasHostElement {\n\n public abstract fCanvasChange: OutputEmitterRef<FCanvasChangeEvent>;\n\n public abstract hostElement: HTMLElement;\n\n public abstract fGroupsContainer: Signal<ElementRef<HTMLElement>>;\n\n public abstract fNodesContainer: Signal<ElementRef<HTMLElement>>;\n\n public abstract fConnectionsContainer: Signal<ElementRef<HTMLElement>>;\n\n public transform = TransformModelExtensions.default();\n\n public abstract redraw(): void;\n\n public abstract redrawWithAnimation(): void;\n\n public getPosition(): IPoint {\n return this.transform.position;\n }\n\n public setPosition(position: IPoint): void {\n this.transform.position = position;\n }\n\n public abstract setScale(scale: number, toPosition: IPoint): void;\n\n public abstract resetScale(): void;\n\n public emitCanvasChangeEvent(): void {\n this.fCanvasChange.emit(\n new FCanvasChangeEvent(PointExtensions.sum(this.transform.position, this.transform.scaledPosition), this.transform.scale)\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, computed, effect,\n ElementRef,\n inject,\n Injector,\n input, numberAttribute,\n OnDestroy,\n OnInit,\n output,\n viewChild,\n} from \"@angular/core\";\nimport {\n FCanvasBase, F_CANVAS\n} from './f-canvas-base';\nimport { IPoint, PointExtensions, TransformModelExtensions } from '@foblex/2d';\nimport {\n FCanvasChangeEvent,\n} from './domain';\nimport { FMediator } from '@foblex/mediator';\nimport {\n AddCanvasToStoreRequest,\n CenterGroupOrNodeRequest,\n FitToFlowRequest, GetFlowRequest,\n InputCanvasPositionRequest,\n InputCanvasScaleRequest, isMobile, RemoveCanvasFromStoreRequest,\n ResetScaleAndCenterRequest, ResetScaleRequest, SetBackgroundTransformRequest, transitionEnd, UpdateScaleRequest,\n} from '../domain';\nimport { NotifyTransformChangedRequest } from '../f-storage';\nimport { Deprecated } from '../domain';\nimport { FFlowBase } from '../f-flow';\n\n@Component({\n selector: 'f-canvas',\n templateUrl: './f-canvas.component.html',\n styleUrls: [ './f-canvas.component.scss' ],\n standalone: true,\n host: {\n 'class': 'f-component f-canvas',\n },\n providers: [\n { provide: F_CANVAS, useExisting: FCanvasComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FCanvasComponent extends FCanvasBase implements OnInit, OnDestroy {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _elementReference = inject(ElementRef);\n private readonly _injector = inject(Injector);\n\n private _flowId: string | undefined;\n\n public override fCanvasChange = output<FCanvasChangeEvent>();\n\n public readonly position = input<IPoint, IPoint | null | undefined>(PointExtensions.initialize(), { transform: PointExtensions.castToPoint });\n public readonly scale = input<number, unknown>(1, { transform: numberAttribute });\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public override fGroupsContainer = viewChild.required<ElementRef<HTMLElement>>('fGroupsContainer');\n public override fNodesContainer = viewChild.required<ElementRef<HTMLElement>>('fNodesContainer');\n public override fConnectionsContainer = viewChild.required<ElementRef<HTMLElement>>('fConnectionsContainer');\n\n public get flowId(): string {\n return this._flowId!;\n }\n\n public ngOnInit(): void {\n this._flowId = this._fMediator.execute<FFlowBase>(new GetFlowRequest()).fId();\n this._fMediator.execute(new AddCanvasToStoreRequest(this));\n this._positionChange();\n this._scaleChange();\n }\n\n private _positionChange(): void {\n effect(() => {\n this._fMediator.execute(new InputCanvasPositionRequest(this.transform, this.position()));\n }, { injector: this._injector });\n }\n\n private _scaleChange(): void {\n effect(() => {\n this._fMediator.execute(new InputCanvasScaleRequest(this.transform, this.scale()));\n }, { injector: this._injector });\n }\n\n public override redraw(): void {\n this._fMediator.execute(new SetBackgroundTransformRequest(this.transform));\n this.hostElement.setAttribute(\"style\", `transform: ${ TransformModelExtensions.toString(this.transform) }`);\n this._fMediator.execute(new NotifyTransformChangedRequest());\n }\n\n public override redrawWithAnimation(): void {\n this._fMediator.execute(new SetBackgroundTransformRequest(this.transform));\n this.hostElement.setAttribute(\"style\", `transition: transform ${ isMobile() ? 80 : 150 }ms ease-in-out; transform: ${ TransformModelExtensions.toString(this.transform) }`);\n transitionEnd(this.hostElement, () => this.redraw());\n }\n\n public centerGroupOrNode(id: string, animated: boolean = true): void {\n setTimeout(() => this._fMediator.execute(new CenterGroupOrNodeRequest(id, animated)));\n }\n\n public fitToScreen(toCenter: IPoint = PointExtensions.initialize(), animated: boolean = true): void {\n setTimeout(() => this._fMediator.execute(new FitToFlowRequest(toCenter, animated)));\n }\n\n public resetScaleAndCenter(animated: boolean = true): void {\n setTimeout(() => this._fMediator.execute(new ResetScaleAndCenterRequest(animated)));\n }\n\n public getScale(): number {\n return this.transform.scale || 1;\n }\n\n /**\n * @deprecated Method \"setZoom\" is deprecated. Use \"setScale\" instead. This method will be removed in version 18.0.0.`,\n */\n @Deprecated('setScale')\n public setZoom(scale: number, toPosition: IPoint = PointExtensions.initialize()): void {\n this.setScale(scale, toPosition);\n }\n\n public override setScale(scale: number, toPosition: IPoint = PointExtensions.initialize()): void {\n this._fMediator.execute(new UpdateScaleRequest(scale, toPosition));\n }\n\n /**\n * @deprecated Method \"resetZoom\" is deprecated. Use \"resetScale\" instead. This method will be removed in version 18.0.0.`,\n */\n @Deprecated('resetScale')\n public resetZoom(): void {\n this.resetScale();\n }\n\n public override resetScale(): void {\n this._fMediator.execute(new ResetScaleRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveCanvasFromStoreRequest());\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 FCanvasComponent,\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, inject, Input, OnInit,\n} from \"@angular/core\";\nimport { setRectToViewBox } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { FMinimapData, IFMinimapScaleAndViewBox, MinimapCalculateSvgScaleAndViewBoxRequest } from './domain';\n\n@Directive({\n selector: 'svg[fMinimapFlow]'\n})\nexport class FMinimapFlowDirective {\n\n @Input()\n public fMinSize: number = 1000;\n\n private _fMediator = inject(FMediator);\n private _elementReference = inject(ElementRef);\n\n public get hostElement(): SVGSVGElement {\n return this._elementReference.nativeElement;\n }\n\n public model: FMinimapData = new FMinimapData(this.hostElement);\n\n public redraw(): void {\n const { scale, viewBox} = this._fMediator.execute<IFMinimapScaleAndViewBox>(\n new MinimapCalculateSvgScaleAndViewBoxRequest(this.hostElement, this.fMinSize)\n );\n this.model = new FMinimapData(this.hostElement, scale, viewBox);\n\n setRectToViewBox(viewBox, this.hostElement);\n }\n}\n","import {\n Directive, ElementRef, inject,\n} from \"@angular/core\";\nimport { FMediator } from '@foblex/mediator';\nimport { MinimapDrawNodesRequest } from './domain';\n\n@Directive({\n selector: 'g[fMinimapCanvas]'\n})\nexport class FMinimapCanvasDirective {\n\n private readonly _fMediator = inject(FMediator);\n private readonly _elementReference = inject(ElementRef);\n\n public get hostElement(): SVGGElement {\n return this._elementReference.nativeElement;\n }\n\n public redraw(): void {\n this._clearCanvas();\n\n this._fMediator.execute<SVGRectElement[]>(new MinimapDrawNodesRequest())\n .forEach((x) => {\n this.hostElement.appendChild(x);\n });\n }\n\n private _clearCanvas(): void {\n this.hostElement.innerHTML = '';\n }\n}\n","import { Directive, ElementRef, inject } from \"@angular/core\";\nimport { IRect, setRectToElement } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { MinimapCalculateViewBoxRequest } 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 private readonly _fMediator = inject(FMediator);\n private readonly _elementReference = inject(ElementRef);\n\n public get hostElement(): SVGGElement {\n return this._elementReference.nativeElement;\n }\n\n public redraw(): void {\n setRectToElement(\n this._fMediator.execute<IRect>(new MinimapCalculateViewBoxRequest()),\n this.hostElement\n );\n }\n}\n","import {\n AfterViewInit, ChangeDetectionStrategy, Component, DestroyRef,\n inject, Input, ViewChild,\n} from \"@angular/core\";\nimport { FMediator } from '@foblex/mediator';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { F_BEFORE_MAIN_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { MinimapDragFinalizeRequest, MinimapDragPreparationRequest } from './domain';\nimport { ListenTransformChangesRequest } from '../f-storage';\nimport { debounceTime, FChannelHub, notifyOnStart } from '../reactivity';\nimport { BrowserService } from '@foblex/platform';\nimport {IPointerEvent} from \"../drag-toolkit\";\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_BEFORE_MAIN_PLUGIN, useExisting: FMinimapComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FMinimapComponent implements AfterViewInit, IFDragAndDropPlugin {\n\n private _destroyRef = inject(DestroyRef);\n private _fMediator = inject(FMediator);\n private _fBrowser = inject(BrowserService);\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 public ngAfterViewInit(): void {\n this._listenTransformChanges();\n }\n\n private _listenTransformChanges(): void {\n this._fMediator.execute<FChannelHub>(new ListenTransformChangesRequest()).pipe(\n notifyOnStart(), debounceTime(2)\n ).listen(this._destroyRef, () => {\n this._redraw()\n });\n }\n\n private _redraw(): void {\n if (!this._fBrowser.isBrowser()) {\n return;\n }\n this.fMinimapFlow.redraw();\n this.fMinimapView.redraw();\n this.fMinimapCanvas.redraw();\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this._fMediator.execute(new MinimapDragPreparationRequest(event, this.fMinimapFlow.model));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this._fMediator.execute(new MinimapDragFinalizeRequest(event));\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 { InjectionToken, InputSignal, OutputEmitterRef } 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 fId: InputSignal<string>;\n\n public abstract hostElement: HTMLElement;\n\n public abstract fLoaded: OutputEmitterRef<string>;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, DestroyRef, ElementRef, inject, input, OnDestroy, OnInit, output\n} from '@angular/core';\nimport { F_FLOW, FFlowBase } from './f-flow-base';\nimport {\n ClearSelectionRequest,\n CalculateNodesBoundingBoxNormalizedPositionRequest,\n GetNormalizedPointRequest,\n GetCurrentSelectionRequest,\n RedrawConnectionsRequest,\n SelectAllRequest,\n SelectRequest,\n IFFlowState,\n GetFlowStateRequest, RemoveFlowFromStoreRequest, AddFlowToStoreRequest, SortItemLayersRequest, ICurrentSelection\n} from '../domain';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport {\n FDraggableDataContext\n} from '../f-draggable';\nimport { FConnectionFactory } from '../f-connection';\nimport {\n NotifyDataChangedRequest,\n F_STORAGE_PROVIDERS,\n ListenCountChangesRequest,\n ListenDataChangesRequest\n} from '../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { COMMON_PROVIDERS } from '../domain';\nimport { F_DRAGGABLE_PROVIDERS } from '../f-draggable';\nimport { FChannelHub } from '../reactivity';\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 standalone: true,\n host: {\n '[attr.id]': 'fId()',\n class: \"f-component f-flow\",\n },\n providers: [\n FMediator,\n ...F_STORAGE_PROVIDERS,\n FDraggableDataContext,\n FConnectionFactory,\n ...COMMON_PROVIDERS,\n ...F_DRAGGABLE_PROVIDERS,\n { provide: F_FLOW, useExisting: FFlowComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FFlowComponent extends FFlowBase implements OnInit, AfterContentInit, OnDestroy {\n\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _fMediator = inject(FMediator);\n private readonly _browserService = inject(BrowserService);\n private readonly _elementReference = inject(ElementRef);\n\n public override fId = input<string>(`f-flow-${ uniqueId++ }`, { alias: 'fFlowId' });\n\n public override get hostElement(): HTMLElement {\n return this._elementReference.nativeElement;\n }\n\n public override fLoaded = output<string>();\n\n private _isLoaded: boolean = false;\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddFlowToStoreRequest(this));\n }\n\n public ngAfterContentInit(): void {\n if (!this._browserService.isBrowser()) {\n return;\n }\n this._listenCountChanges();\n this._listenDataChanges();\n }\n\n private _listenCountChanges(): void {\n this._fMediator.execute<FChannelHub>(\n new ListenCountChangesRequest()\n ).listen(this._destroyRef, () => {\n this._fMediator.execute(new SortItemLayersRequest())\n });\n }\n\n private _listenDataChanges(): void {\n this._fMediator.execute<FChannelHub>(\n new ListenDataChangesRequest()\n ).listen(this._destroyRef, () => {\n this._fMediator.execute(new RedrawConnectionsRequest());\n\n this._emitLoaded();\n });\n }\n\n private _emitLoaded(): void {\n if (!this._isLoaded) {\n this._isLoaded = true;\n this.fLoaded.emit(this.fId());\n }\n }\n\n public redraw(): void {\n this._fMediator.execute(new NotifyDataChangedRequest());\n }\n\n public reset(): void {\n this._isLoaded = false;\n }\n\n public getNodesBoundingBox(): IRect | null {\n return this._fMediator.execute<IRect | null>(new CalculateNodesBoundingBoxNormalizedPositionRequest());\n }\n\n public getSelection(): ICurrentSelection {\n return this._fMediator.execute<ICurrentSelection>(new GetCurrentSelectionRequest());\n }\n\n public getPositionInFlow(position: IPoint): IRect {\n return this._fMediator.execute(new GetNormalizedPointRequest(position));\n }\n\n public getState(): IFFlowState {\n return this._fMediator.execute(new GetFlowStateRequest());\n }\n\n public selectAll(): void {\n this._fMediator.execute<void>(new SelectAllRequest());\n }\n\n public select(nodes: string[], connections: string[]): void {\n this._fMediator.execute<void>(new SelectRequest(nodes, connections));\n }\n\n public clearSelection(): void {\n this._fMediator.execute<void>(new ClearSelectionRequest());\n }\n\n public ngOnDestroy(): void {\n this._fMediator.execute(new RemoveFlowFromStoreRequest());\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","export enum EFZoomDirection {\n\n ZOOM_IN = 1,\n\n ZOOM_OUT = -1,\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const F_ZOOM = new InjectionToken<FZoomBase>('F_ZOOM');\n\nexport abstract class FZoomBase {\n\n public abstract minimum: number;\n\n public abstract maximum: number;\n\n public abstract step: number;\n\n public abstract dblClickStep: number;\n}\n","import {\n AfterViewInit,\n booleanAttribute,\n Directive,\n inject,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2,\n SimpleChanges\n} from \"@angular/core\";\nimport { F_ZOOM, FZoomBase } from './f-zoom-base';\nimport { FMediator } from '@foblex/mediator';\nimport {\n AddZoomToStoreRequest, defaultEventTrigger,\n Deprecated,\n FEventTrigger,\n GetCanvasRequest,\n GetFlowHostElementRequest, isValidEventTrigger,\n RemoveZoomFromStoreRequest,\n ResetZoomRequest,\n SetZoomRequest\n} from '../domain';\nimport { FCanvasBase } from '../f-canvas';\nimport { IPoint, IRect, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { isNode } from '../f-node';\nimport { EFZoomDirection } from './e-f-zoom-direction';\n\n@Directive({\n selector: \"f-canvas[fZoom]\",\n exportAs: 'fComponent',\n standalone: true,\n host: {\n 'class': 'f-zoom f-component'\n },\n providers: [ { provide: F_ZOOM, useExisting: FZoomDirective } ],\n})\nexport class FZoomDirective extends FZoomBase implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n\n private _fMediator = inject(FMediator);\n private _rendered = inject(Renderer2);\n\n private _triggersListener: Function[] = [];\n\n @Input({ alias: 'fZoom', transform: booleanAttribute })\n public isEnabled: boolean = false;\n\n @Input()\n public fWheelTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input()\n public fDblClickTrigger: FEventTrigger = defaultEventTrigger;\n\n @Input({ alias: 'fZoomMinimum', transform: numberAttribute })\n public override minimum: number = 0.1;\n\n @Input({ alias: 'fZoomMaximum', transform: numberAttribute })\n public override maximum: number = 4;\n\n @Input({ alias: 'fZoomStep', transform: numberAttribute })\n public override step: number = 0.1;\n\n @Input({ alias: 'fZoomDblClickStep', transform: numberAttribute })\n public override dblClickStep: number = 0.5;\n\n private get _fHost(): HTMLElement {\n return this._fMediator.execute(new GetFlowHostElementRequest());\n }\n\n private get _fCanvas(): FCanvasBase {\n return this._fMediator.execute(new GetCanvasRequest());\n }\n\n public ngOnInit(): void {\n this._fMediator.execute(new AddZoomToStoreRequest(this));\n }\n\n public ngAfterViewInit(): void {\n this._listenTriggers();\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes[ 'isEnabled' ]) {\n this._listenTriggers();\n }\n }\n\n private _listenTriggers(): void {\n if (!this._fHost) {\n return;\n }\n\n this._disposeListeners();\n if (!this.isEnabled) {\n return;\n }\n\n this._triggersListener.push(this._rendered.listen(this._fHost, 'wheel', this._onWheel));\n this._triggersListener.push(this._rendered.listen(this._fHost, 'dblclick', this._onDoubleClick));\n }\n\n private _onWheel = (event: WheelEvent) => {\n if (!isValidEventTrigger(event, this.fWheelTrigger)) {\n return;\n }\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n this.setZoom(\n PointExtensions.initialize(event.clientX, event.clientY),\n this.step, this._calculateDirection(event.deltaY), false\n );\n }\n\n private _calculateDirection(deltaY: number): number {\n return deltaY > 0 ? EFZoomDirection.ZOOM_OUT : EFZoomDirection.ZOOM_IN;\n }\n\n private _onDoubleClick = (event: MouseEvent) => {\n if (!isValidEventTrigger(event, this.fDblClickTrigger)) {\n return;\n }\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n this.setZoom(\n PointExtensions.initialize(event.clientX, event.clientY),\n this.dblClickStep, EFZoomDirection.ZOOM_IN, true\n );\n }\n\n private _getToCenterPosition(position: IPoint | undefined, rect: IRect): IPoint {\n return PointExtensions.initialize(position?.x || rect.gravityCenter.x, position?.y || rect.gravityCenter.y);\n }\n\n public zoomIn(position?: IPoint): void {\n this._onZoomToCenter(EFZoomDirection.ZOOM_IN, position);\n }\n\n public zoomOut(position?: IPoint): void {\n this._onZoomToCenter(EFZoomDirection.ZOOM_OUT, position);\n }\n\n private _onZoomToCenter(direction: EFZoomDirection, position?: IPoint): void {\n this.setZoom(\n this._getToCenterPosition(position, RectExtensions.fromElement(this._fHost)),\n this.step, direction, false\n );\n }\n\n public setZoom(position: IPoint, step: number, direction: EFZoomDirection, animated: boolean) {\n this._fMediator.execute(\n new SetZoomRequest(position, step, direction, animated)\n );\n }\n\n /**\n * @deprecated Method \"getScale\" is deprecated. Use \"getZoomValue\" instead. This method will be removed in version 18.0.0.`,\n */\n @Deprecated('getZoomValue')\n public getScale(): number {\n return this.getZoomValue();\n }\n\n public getZoomValue(): number {\n return this._fCanvas.transform.scale || 1;\n }\n\n public reset(): void {\n this._fMediator.execute(new ResetZoomRequest());\n }\n\n private _disposeListeners(): void {\n this._triggersListener.forEach((listener) => listener());\n this._triggersListener = [];\n }\n\n public ngOnDestroy(): void {\n this._disposeListeners();\n this._fMediator.execute(new RemoveZoomFromStoreRequest());\n }\n}\n","import { FZoomDirective } from './f-zoom.directive';\n\nexport const F_ZOOM_PROVIDERS = [\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_BACKGROUND_PROVIDERS } from './f-backgroud';\nimport { F_CONNECTORS_PROVIDERS } from './f-connectors';\nimport { FDraggableDirective } from './f-draggable';\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_FLOW_PROVIDERS } from './f-flow';\nimport { F_CANVAS_PROVIDERS } from './f-canvas';\nimport { F_ZOOM_PROVIDERS } from './f-zoom';\nimport { F_EXTERNAL_ITEM_PROVIDERS } from './f-external-item';\n\n@NgModule({\n declarations: [\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_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 ...F_FLOW_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_BACKGROUND_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n\n CommonModule,\n ],\n exports: [\n ...F_FLOW_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_BACKGROUND_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n\n\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_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":["uniqueId","createSVGElement","i2.FComponentsStore","MIXIN_BASE","i1.FConnectionTextPathDirective","i1.FConnectionFactory","i3.FConnectionTextComponent","i4.FConnectionDragHandleEndComponent","i5.FConnectionGradientComponent","i6.FConnectionPathComponent","i7.FConnectionSelectionComponent","i1","i1.FComponentsStore","i2","i3.FDraggableDataContext","i1.FDraggableDataContext","i1.FMinimapCanvasDirective","i2.FMinimapViewDirective","i3.FMinimapFlowDirective","i1.FConnectionTextComponent","i2.FConnectionTextPathDirective","i3.FConnectionDragHandleStartComponent","i8.FConnectionComponent","i9.FConnectionCenterDirective","i10.FConnectionForCreateComponent","i11.FMarkerDirective","i12.FSnapConnectionComponent","i13.FNodeInputDirective","i14.FNodeOutletDirective","i15.FNodeOutputDirective","i16.FLineAlignmentComponent","i17.FMinimapComponent","i18.FMinimapCanvasDirective","i19.FMinimapViewDirective","i20.FMinimapFlowDirective","i21.FGroupDirective","i22.FNodeDirective","i23.FDragHandleDirective","i24.FResizeHandleDirective","i25.FRotateHandleDirective","i26.FSelectionAreaComponent","i27.FFlowComponent","i28.FCanvasComponent","i29.FBackgroundComponent","i30.FRectPatternComponent","i31.FCirclePatternComponent","i32.FZoomDirective","i33.FExternalItemDirective"],"mappings":"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"}
|