@foblex/flow 12.6.2 → 12.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/foblex-flow.umd.js +9556 -0
- package/bundles/foblex-flow.umd.js.map +1 -0
- package/domain/center-group-or-node/center-group-or-node-request.d.ts +5 -0
- package/domain/center-group-or-node/center-group-or-node.execution.d.ts +17 -0
- package/domain/center-group-or-node/index.d.ts +2 -0
- package/domain/clear-selection/clear-selection.execution.d.ts +1 -1
- package/domain/constants.d.ts +1 -0
- package/domain/create-connection-markers/create-connection-markers.execution.d.ts +1 -1
- package/domain/create-rounded-rect-from-element/create-rounded-rect-from-element-request.d.ts +4 -0
- package/domain/create-rounded-rect-from-element/create-rounded-rect-from-element.execution.d.ts +15 -0
- package/domain/create-rounded-rect-from-element/index.d.ts +2 -0
- package/domain/emit-transform-changes/emit-transform-changes.execution.d.ts +1 -1
- package/domain/get-can-be-selected-items/get-can-be-selected-items.execution.d.ts +2 -2
- package/domain/get-can-be-selected-items/i-selectable-with-rect.d.ts +3 -3
- package/domain/get-connection-line/get-connection-line.execution.d.ts +2 -2
- package/domain/get-connection-line/get-connection-line.request.d.ts +4 -4
- package/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.d.ts +1 -1
- package/domain/get-element-rect-in-flow/get-element-rect-in-flow.execution.d.ts +4 -5
- package/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.d.ts +2 -0
- package/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.d.ts +12 -0
- package/domain/get-flow-state/get-flow-state-connections/index.d.ts +2 -0
- package/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.d.ts +5 -0
- package/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.d.ts +14 -0
- package/domain/get-flow-state/get-flow-state-nodes/index.d.ts +2 -0
- package/domain/get-flow-state/get-flow-state.execution.d.ts +14 -0
- package/domain/get-flow-state/get-flow-state.request.d.ts +2 -0
- package/domain/get-flow-state/i-f-flow-state-connection.d.ts +9 -0
- package/domain/get-flow-state/i-f-flow-state-connector.d.ts +5 -0
- package/domain/get-flow-state/i-f-flow-state-node.d.ts +11 -0
- package/domain/get-flow-state/i-f-flow-state.d.ts +10 -0
- package/domain/get-flow-state/index.d.ts +9 -0
- package/domain/get-flow-state/providers.d.ts +4 -0
- package/domain/get-input-rect-in-flow/get-input-rect-in-flow-response.d.ts +1 -1
- package/domain/get-input-rect-in-flow/get-input-rect-in-flow.execution.d.ts +2 -2
- package/domain/get-nodes-rect/get-nodes-rect.execution.d.ts +2 -2
- package/domain/get-output-rect-in-flow/get-output-rect-in-flow-response.d.ts +1 -1
- package/domain/get-output-rect-in-flow/get-output-rect-in-flow.execution.d.ts +2 -2
- package/domain/get-position-in-flow/get-position-in-flow-request.d.ts +1 -1
- package/domain/get-position-in-flow/get-position-in-flow.execution.d.ts +2 -2
- package/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.execution.d.ts +2 -2
- package/domain/get-selection/get-selection.execution.d.ts +1 -1
- package/domain/i-map.d.ts +3 -0
- package/domain/index.d.ts +6 -5
- package/domain/is-connection-under-node/is-connection-under-node.execution.d.ts +2 -2
- package/domain/providers.d.ts +4 -1
- package/domain/redraw-connections/redraw-connections.execution.d.ts +2 -2
- package/domain/select/select.execution.d.ts +1 -1
- package/domain/select-all/select-all.execution.d.ts +1 -1
- package/domain/select-and-update-node-layer/select-and-update-node-layer.execution.d.ts +3 -3
- package/domain/show-connections-after-calculations/index.d.ts +2 -0
- package/domain/show-connections-after-calculations/show-connections-after-calculations-request.d.ts +2 -0
- package/domain/show-connections-after-calculations/show-connections-after-calculations.execution.d.ts +11 -0
- package/domain/sort-item-layers/sort-item-layers.execution.d.ts +2 -2
- package/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.d.ts +2 -2
- package/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.d.ts +2 -2
- package/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.execution.d.ts +1 -1
- package/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.d.ts +1 -1
- package/domain/update-item-and-children-layers/update-item-and-children-layers.execution.d.ts +2 -2
- package/domain/update-item-and-children-layers/update-item-and-children-layers.request.d.ts +3 -3
- package/esm2015/domain/center-group-or-node/center-group-or-node-request.js +7 -0
- package/esm2015/domain/center-group-or-node/center-group-or-node.execution.js +51 -0
- package/esm2015/domain/center-group-or-node/index.js +3 -0
- package/esm2015/domain/clear-selection/clear-selection.execution.js +26 -0
- package/esm2015/domain/constants.js +2 -0
- package/esm2015/domain/create-connection-markers/create-connection-markers-request.js +6 -0
- package/esm2015/domain/create-connection-markers/create-connection-markers.execution.js +56 -0
- package/esm2015/domain/create-rounded-rect-from-element/create-rounded-rect-from-element-request.js +6 -0
- package/esm2015/domain/create-rounded-rect-from-element/create-rounded-rect-from-element.execution.js +39 -0
- package/esm2015/domain/create-rounded-rect-from-element/index.js +3 -0
- package/esm2015/domain/emit-transform-changes/emit-transform-changes.execution.js +24 -0
- package/esm2015/domain/get-can-be-selected-items/get-can-be-selected-items.execution.js +57 -0
- package/esm2015/domain/get-can-be-selected-items/i-selectable-with-rect.js +2 -0
- package/esm2015/domain/get-connection-line/get-connection-line.execution.js +67 -0
- package/esm2015/domain/get-connection-line/get-connection-line.request.js +10 -0
- package/esm2015/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.js +35 -0
- package/esm2015/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.js +6 -0
- package/esm2015/domain/get-element-rect-in-flow/get-element-rect-in-flow-request.js +6 -0
- package/esm2015/domain/get-element-rect-in-flow/get-element-rect-in-flow.execution.js +43 -0
- package/esm2015/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.js +3 -0
- package/esm2015/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.js +33 -0
- package/esm2015/domain/get-flow-state/get-flow-state-connections/index.js +3 -0
- package/esm2015/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.js +6 -0
- package/esm2015/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.js +50 -0
- package/esm2015/domain/get-flow-state/get-flow-state-nodes/index.js +3 -0
- package/esm2015/domain/get-flow-state/get-flow-state.execution.js +39 -0
- package/esm2015/domain/get-flow-state/get-flow-state.request.js +3 -0
- package/esm2015/domain/get-flow-state/i-f-flow-state-connection.js +2 -0
- package/esm2015/domain/get-flow-state/i-f-flow-state-connector.js +2 -0
- package/esm2015/domain/get-flow-state/i-f-flow-state-node.js +2 -0
- package/esm2015/domain/get-flow-state/i-f-flow-state.js +2 -0
- package/esm2015/domain/get-flow-state/index.js +10 -0
- package/esm2015/domain/get-flow-state/providers.js +9 -0
- package/esm2015/domain/get-input-rect-in-flow/get-input-rect-in-flow-request.js +6 -0
- package/esm2015/domain/get-input-rect-in-flow/get-input-rect-in-flow-response.js +7 -0
- package/esm2015/domain/get-input-rect-in-flow/get-input-rect-in-flow.execution.js +33 -0
- package/esm2015/domain/get-nodes-rect/get-nodes-rect.execution.js +31 -0
- package/esm2015/domain/get-output-rect-in-flow/get-output-rect-in-flow-request.js +6 -0
- package/esm2015/domain/get-output-rect-in-flow/get-output-rect-in-flow-response.js +7 -0
- package/esm2015/domain/get-output-rect-in-flow/get-output-rect-in-flow.execution.js +37 -0
- package/esm2015/domain/get-position-in-flow/get-position-in-flow-request.js +6 -0
- package/esm2015/domain/get-position-in-flow/get-position-in-flow.execution.js +32 -0
- package/esm2015/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.execution.js +34 -0
- package/esm2015/domain/get-selection/get-selection.execution.js +35 -0
- package/esm2015/domain/i-map.js +2 -0
- package/esm2015/domain/index.js +30 -0
- package/esm2015/domain/is-connection-under-node/is-connection-under-node.execution.js +76 -0
- package/esm2015/domain/providers.js +56 -0
- package/esm2015/domain/redraw-connections/redraw-connections.execution.js +60 -0
- package/esm2015/domain/select/select.execution.js +44 -0
- package/esm2015/domain/select/select.request.js +7 -0
- package/esm2015/domain/select-all/select-all.execution.js +38 -0
- package/esm2015/domain/select-and-update-node-layer/select-and-update-node-layer.execution.js +35 -0
- package/esm2015/domain/select-and-update-node-layer/select-and-update-node-layer.request.js +6 -0
- package/esm2015/domain/show-connections-after-calculations/index.js +3 -0
- package/esm2015/domain/show-connections-after-calculations/show-connections-after-calculations-request.js +3 -0
- package/esm2015/domain/show-connections-after-calculations/show-connections-after-calculations.execution.js +26 -0
- package/esm2015/domain/sort-item-layers/sort-item-layers.execution.js +30 -0
- package/esm2015/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.js +57 -0
- package/esm2015/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.request.js +7 -0
- package/esm2015/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.js +59 -0
- package/esm2015/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.execution.js +26 -0
- package/esm2015/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.js +30 -0
- package/esm2015/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.js +10 -0
- package/esm2015/domain/update-item-and-children-layers/update-item-and-children-layers.execution.js +94 -0
- package/esm2015/domain/update-item-and-children-layers/update-item-and-children-layers.request.js +7 -0
- package/esm2015/f-backgroud/domain/i-f-background-pattern.js +3 -0
- package/esm2015/f-backgroud/f-background-base.js +11 -0
- package/esm2015/f-backgroud/f-background.component.js +71 -0
- package/esm2015/f-backgroud/f-circle-pattern/f-circle-pattern.component.js +104 -0
- package/esm2015/f-backgroud/f-rect-pattern/f-rect-pattern.component.js +122 -0
- package/esm2015/f-canvas/domain/f-canvas-change.event.js +7 -0
- package/esm2015/f-canvas/f-canvas-base.js +28 -0
- package/esm2015/f-canvas/f-canvas.component.js +120 -0
- package/esm2015/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.js +7 -0
- package/esm2015/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points.handler.js +12 -0
- package/esm2015/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.js +6 -0
- package/esm2015/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.js +35 -0
- package/esm2015/f-connection/common/domain/f-bezier.path-builder.js +37 -0
- package/esm2015/f-connection/common/domain/f-segment.path-builder.js +142 -0
- package/esm2015/f-connection/common/f-connection-base.js +68 -0
- package/esm2015/f-connection/common/f-connection-identifiers.js +22 -0
- package/esm2015/f-connection/common/f-connection-text/f-connection-text-path.directive.js +70 -0
- package/esm2015/f-connection/common/f-connection-text/f-connection-text.component.js +72 -0
- package/esm2015/f-connection/common/f-connection-text/i-connection-text.js +3 -0
- package/esm2015/f-connection/common/f-drag-handle/f-connection-drag-handle.component.js +38 -0
- package/esm2015/f-connection/common/f-gradient/f-connection-gradient.component.js +69 -0
- package/esm2015/f-connection/common/f-gradient/i-connection-gradient.js +3 -0
- package/esm2015/f-connection/common/f-path/f-connection-path.component.js +59 -0
- package/esm2015/f-connection/common/f-path/get-path-marker-id.js +14 -0
- package/esm2015/f-connection/common/f-path/i-connection-path.js +3 -0
- package/esm2015/f-connection/common/f-selection/f-connection-selection.component.js +37 -0
- package/esm2015/f-connection/common/index.js +14 -0
- package/esm2015/f-connection/f-connection/f-connection.component.js +184 -0
- package/esm2015/f-connection/f-connection-builder/f-connection-factory.js +34 -0
- package/esm2015/f-connection/f-connection-builder/i-f-connection-builder-request.js +2 -0
- package/esm2015/f-connection/f-connection-builder/i-f-connection-builder-response.js +2 -0
- package/esm2015/f-connection/f-connection-builder/i-f-connection-builder.js +2 -0
- package/esm2015/f-connection/f-connection-center/f-connection-center.directive.js +13 -0
- package/esm2015/f-connection/f-connection-for-create/f-connection-for-create.component.js +148 -0
- package/esm2015/f-connection/f-marker/f-marker-base.js +11 -0
- package/esm2015/f-connection/f-marker/f-marker.directive.js +58 -0
- package/esm2015/f-connection/f-snap-connection/f-snap-connection.component.js +139 -0
- package/esm2015/f-connection/f-snap-connection/index.js +2 -0
- package/esm2015/f-connection/index.js +9 -0
- package/esm2015/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.js +7 -0
- package/esm2015/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.js +38 -0
- package/esm2015/f-connectors/f-connector-base.js +17 -0
- package/esm2015/f-connectors/f-node-input/f-node-input-base.js +19 -0
- package/esm2015/f-connectors/f-node-input/f-node-input.directive.js +87 -0
- package/esm2015/f-connectors/f-node-outlet/f-node-outlet-base.js +23 -0
- package/esm2015/f-connectors/f-node-outlet/f-node-outlet.directive.js +71 -0
- package/esm2015/f-connectors/f-node-output/f-node-output-base.js +19 -0
- package/esm2015/f-connectors/f-node-output/f-node-output.directive.js +94 -0
- package/esm2015/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.js +24 -0
- package/esm2015/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.request.js +6 -0
- package/esm2015/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.validator.js +25 -0
- package/esm2015/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.js +36 -0
- package/esm2015/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.request.js +6 -0
- package/esm2015/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.js +44 -0
- package/esm2015/f-draggable/canvas/canvas.drag-handler.js +18 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.js +56 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.request.js +6 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.validator.js +25 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.js +45 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.js +7 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.js +53 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.js +6 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.js +39 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.js +6 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.js +34 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.js +43 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.js +6 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.js +32 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection.drag-handler.js +33 -0
- package/esm2015/f-draggable/connections/create-connection/f-create-connection.event.js +8 -0
- package/esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.js +43 -0
- package/esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.request.js +6 -0
- package/esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.js +27 -0
- package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.js +74 -0
- package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.js +7 -0
- package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.js +35 -0
- package/esm2015/f-draggable/connections/reassign-connection/f-reassign-connection.event.js +9 -0
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.js +50 -0
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.request.js +6 -0
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.validator.js +25 -0
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.js +64 -0
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.js +6 -0
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.js +44 -0
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.js +33 -0
- package/esm2015/f-draggable/domain/get-node-padding/get-node-padding.execution.js +33 -0
- package/esm2015/f-draggable/domain/get-node-padding/get-node-padding.request.js +7 -0
- package/esm2015/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.js +29 -0
- package/esm2015/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.request.js +6 -0
- package/esm2015/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.js +48 -0
- package/esm2015/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.request.js +6 -0
- package/esm2015/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.js +36 -0
- package/esm2015/f-draggable/domain/get-parent-nodes/get-parent-nodes.request.js +6 -0
- package/esm2015/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.js +34 -0
- package/esm2015/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.js +7 -0
- package/esm2015/f-draggable/f-draggable-base.js +14 -0
- package/esm2015/f-draggable/f-draggable-data-context.js +26 -0
- package/esm2015/f-draggable/f-draggable.directive.js +165 -0
- package/esm2015/f-draggable/f-selection-change-event.js +7 -0
- package/esm2015/f-draggable/i-draggable-item.js +2 -0
- package/esm2015/f-draggable/i-f-drag-and-drop-plugin.js +3 -0
- package/esm2015/f-draggable/index.js +14 -0
- package/esm2015/f-draggable/node/connection-base-drag-handler.js +41 -0
- package/esm2015/f-draggable/node/connection-source.drag-handler.js +16 -0
- package/esm2015/f-draggable/node/connection-target.drag-handler.js +16 -0
- package/esm2015/f-draggable/node/connection.drag-handler.js +20 -0
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.js +85 -0
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.js +44 -0
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.request.js +7 -0
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/i-node-move-restrictions.js +2 -0
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.js +70 -0
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.request.js +8 -0
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.js +70 -0
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.request.js +8 -0
- package/esm2015/f-draggable/node/node-move-finalize/node-move-finalize.execution.js +54 -0
- package/esm2015/f-draggable/node/node-move-finalize/node-move-finalize.request.js +6 -0
- package/esm2015/f-draggable/node/node-move-finalize/node-move-finalize.validator.js +25 -0
- package/esm2015/f-draggable/node/node-move-preparation/node-move-preparation.execution.js +60 -0
- package/esm2015/f-draggable/node/node-move-preparation/node-move-preparation.request.js +6 -0
- package/esm2015/f-draggable/node/node-move-preparation/node-move-preparation.validator.js +41 -0
- package/esm2015/f-draggable/node/node-resize-by-child.drag-handler.js +13 -0
- package/esm2015/f-draggable/node/node.drag-handler.js +34 -0
- package/esm2015/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.js +49 -0
- package/esm2015/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.js +7 -0
- package/esm2015/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.js +49 -0
- package/esm2015/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.js +7 -0
- package/esm2015/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.js +25 -0
- package/esm2015/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.request.js +9 -0
- package/esm2015/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.js +34 -0
- package/esm2015/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.request.js +8 -0
- package/esm2015/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.js +31 -0
- package/esm2015/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.js +7 -0
- package/esm2015/f-draggable/node-resize/get-node-resize-restrictions/i-node-resize-restrictions.js +2 -0
- package/esm2015/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.js +41 -0
- package/esm2015/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.js +7 -0
- package/esm2015/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.js +27 -0
- package/esm2015/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.request.js +6 -0
- package/esm2015/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.validator.js +25 -0
- package/esm2015/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.js +53 -0
- package/esm2015/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.request.js +6 -0
- package/esm2015/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.js +41 -0
- package/esm2015/f-draggable/node-resize/node-resize.drag-handler.js +48 -0
- package/esm2015/f-draggable/single-select/single-select.execution.js +89 -0
- package/esm2015/f-draggable/single-select/single-select.request.js +6 -0
- package/esm2015/f-draggable/single-select/single-select.validator.js +27 -0
- package/esm2015/f-external-item/domain/external-item-finalize/external-item-finalize.execution.js +57 -0
- package/esm2015/f-external-item/domain/external-item-finalize/external-item-finalize.request.js +6 -0
- package/esm2015/f-external-item/domain/external-item-finalize/external-item-finalize.validator.js +25 -0
- package/esm2015/f-external-item/domain/external-item-preparation/external-item-preparation.execution.js +43 -0
- package/esm2015/f-external-item/domain/external-item-preparation/external-item-preparation.request.js +6 -0
- package/esm2015/f-external-item/domain/external-item-preparation/external-item-preparation.validator.js +29 -0
- package/esm2015/f-external-item/domain/external-item.drag-handler.js +36 -0
- package/esm2015/f-external-item/domain/f-create-node.event.js +7 -0
- package/esm2015/f-external-item/f-external-item-base.js +11 -0
- package/esm2015/f-external-item/f-external-item.directive.js +55 -0
- package/esm2015/f-external-item/f-external-item.service.js +28 -0
- package/esm2015/f-flow/f-flow-base.js +5 -0
- package/esm2015/f-flow/f-flow.component.js +124 -0
- package/esm2015/f-flow.module.js +89 -0
- package/esm2015/f-line-alignment/domain/line-element.js +22 -0
- package/esm2015/f-line-alignment/domain/line-service.js +35 -0
- package/esm2015/f-line-alignment/domain/nearest-coordinate.js +101 -0
- package/esm2015/f-line-alignment/f-line-alignment-base.js +11 -0
- package/esm2015/f-line-alignment/f-line-alignment.component.js +99 -0
- package/esm2015/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.js +42 -0
- package/esm2015/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.js +9 -0
- package/esm2015/f-minimap/domain/check-rect-is-finite.js +8 -0
- package/esm2015/f-minimap/domain/f-minimap-data.js +9 -0
- package/esm2015/f-minimap/domain/f-minimap.drag-handler.js +37 -0
- package/esm2015/f-minimap/domain/index.js +8 -0
- package/esm2015/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.js +27 -0
- package/esm2015/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.js +6 -0
- package/esm2015/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.js +25 -0
- package/esm2015/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.js +49 -0
- package/esm2015/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.js +7 -0
- package/esm2015/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.js +28 -0
- package/esm2015/f-minimap/f-minimap-canvas.directive.js +66 -0
- package/esm2015/f-minimap/f-minimap-flow.directive.js +76 -0
- package/esm2015/f-minimap/f-minimap-view.directive.js +40 -0
- package/esm2015/f-minimap/f-minimap.component.js +76 -0
- package/esm2015/f-node/f-drag-handle/f-drag-handle.directive.js +24 -0
- package/esm2015/f-node/f-group.directive.js +145 -0
- package/esm2015/f-node/f-node-base.js +35 -0
- package/esm2015/f-node/f-node.directive.js +146 -0
- package/esm2015/f-node/f-resize-handle/f-resize-handle.directive.js +43 -0
- package/esm2015/f-node/f-rotate-handle/f-rotate-handle.directive.js +27 -0
- package/esm2015/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.js +27 -0
- package/esm2015/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.js +6 -0
- package/esm2015/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.js +25 -0
- package/esm2015/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.js +38 -0
- package/esm2015/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.js +7 -0
- package/esm2015/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.js +31 -0
- package/esm2015/f-selection-area/domain/selection-area.drag-handle.js +48 -0
- package/esm2015/f-selection-area/f-selection-area-base.js +10 -0
- package/esm2015/f-selection-area/f-selection-area.component.js +57 -0
- package/esm2015/f-storage/f-components-store.js +52 -0
- package/esm2015/f-storage/f-transform-store.js +14 -0
- package/esm2015/f-zoom/f-zoom-base.js +99 -0
- package/esm2015/f-zoom/f-zoom.directive.js +59 -0
- package/esm2015/i-has-host-element.js +2 -0
- package/esm2015/mixins/change-position.js +15 -0
- package/esm2015/mixins/change-selection/change-selection.js +30 -0
- package/esm2015/mixins/change-selection/i-can-change-selection.js +2 -0
- package/esm2015/mixins/change-selection/index.js +3 -0
- package/esm2015/mixins/change-visibility/change-visibility.js +14 -0
- package/esm2015/mixins/change-visibility/i-can-change-visibility.js +2 -0
- package/esm2015/mixins/change-visibility/index.js +3 -0
- package/esm2015/mixins/change-zoom/change-zoom.js +25 -0
- package/esm2015/mixins/change-zoom/i-can-change-zoom.js +2 -0
- package/esm2015/mixins/change-zoom/index.js +3 -0
- package/esm2015/mixins/constructor.js +2 -0
- package/esm2015/mixins/fit-to-parent/fit-to-parent.js +27 -0
- package/esm2015/mixins/fit-to-parent/i-can-fit-to-parent.js +2 -0
- package/esm2015/mixins/fit-to-parent/index.js +3 -0
- package/esm2015/mixins/i-transformable.js +2 -0
- package/esm2015/mixins/index.js +9 -0
- package/esm2015/mixins/one-to-one-centering/i-can-one-to-one-centering.js +2 -0
- package/esm2015/mixins/one-to-one-centering/index.js +3 -0
- package/esm2015/mixins/one-to-one-centering/one-to-one-centering.js +24 -0
- package/esm2015/public-api.js +19 -0
- package/f-backgroud/domain/i-f-background-pattern.d.ts +1 -1
- package/f-backgroud/f-background-base.d.ts +3 -2
- package/f-backgroud/f-background.component.d.ts +2 -2
- package/f-backgroud/f-circle-pattern/f-circle-pattern.component.d.ts +2 -2
- package/f-backgroud/f-rect-pattern/f-rect-pattern.component.d.ts +2 -2
- package/f-canvas/domain/f-canvas-change.event.d.ts +1 -1
- package/f-canvas/f-canvas-base.d.ts +5 -3
- package/f-canvas/f-canvas.component.d.ts +5 -4
- package/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.d.ts +1 -1
- package/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points.handler.d.ts +2 -1
- package/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.d.ts +1 -1
- package/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.d.ts +2 -1
- package/f-connection/common/f-connection-base.d.ts +8 -5
- package/f-connection/common/f-connection-text/f-connection-text-path.directive.d.ts +2 -2
- package/f-connection/common/f-connection-text/f-connection-text.component.d.ts +2 -2
- package/f-connection/common/f-connection-text/i-connection-text.d.ts +2 -1
- package/f-connection/common/f-drag-handle/f-connection-drag-handle.component.d.ts +3 -2
- package/f-connection/common/f-gradient/f-connection-gradient.component.d.ts +2 -2
- package/f-connection/common/f-gradient/i-connection-gradient.d.ts +2 -1
- package/f-connection/common/f-path/f-connection-path.component.d.ts +1 -1
- package/f-connection/common/f-path/i-connection-path.d.ts +1 -1
- package/f-connection/common/f-selection/f-connection-selection.component.d.ts +2 -2
- package/f-connection/common/index.d.ts +0 -1
- package/f-connection/f-connection/f-connection.component.d.ts +1 -1
- package/f-connection/f-connection-builder/i-f-connection-builder-request.d.ts +1 -1
- package/f-connection/f-connection-builder/i-f-connection-builder-response.d.ts +1 -1
- package/f-connection/f-connection-builder/i-f-connection-builder.d.ts +1 -1
- package/f-connection/f-connection-center/f-connection-center.directive.d.ts +1 -1
- package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +1 -1
- package/f-connection/f-marker/f-marker-base.d.ts +2 -2
- package/f-connection/f-marker/f-marker.directive.d.ts +1 -1
- package/f-connection/f-snap-connection/f-snap-connection.component.d.ts +53 -0
- package/f-connection/f-snap-connection/index.d.ts +1 -0
- package/f-connection/index.d.ts +1 -0
- package/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.d.ts +1 -1
- package/f-connectors/f-connector-base.d.ts +1 -1
- package/f-connectors/f-node-input/f-node-input-base.d.ts +1 -1
- package/f-connectors/f-node-input/f-node-input.directive.d.ts +1 -1
- package/f-connectors/f-node-outlet/f-node-outlet-base.d.ts +1 -1
- package/f-connectors/f-node-outlet/f-node-outlet.directive.d.ts +1 -1
- package/f-connectors/f-node-output/f-node-output-base.d.ts +1 -1
- package/f-connectors/f-node-output/f-node-output.directive.d.ts +1 -1
- package/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.d.ts +1 -1
- package/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.request.d.ts +1 -1
- package/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.validator.d.ts +1 -1
- package/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.d.ts +1 -1
- package/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.request.d.ts +1 -1
- package/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.d.ts +1 -2
- package/f-draggable/canvas/canvas.drag-handler.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.d.ts +3 -3
- package/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.request.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.validator.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.d.ts +3 -3
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.d.ts +3 -3
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.d.ts +3 -3
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.d.ts +3 -3
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.d.ts +1 -1
- package/f-draggable/connections/create-connection/create-connection.drag-handler.d.ts +3 -3
- package/f-draggable/connections/create-connection/f-create-connection.event.d.ts +1 -1
- package/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.d.ts +1 -1
- package/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.d.ts +1 -1
- package/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.d.ts +1 -1
- package/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.d.ts +1 -1
- package/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.d.ts +1 -1
- package/f-draggable/connections/providers.d.ts +1 -1
- package/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.d.ts +2 -2
- package/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.request.d.ts +1 -1
- package/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.validator.d.ts +1 -1
- package/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.d.ts +2 -2
- package/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.d.ts +1 -1
- package/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.d.ts +1 -1
- package/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.d.ts +3 -3
- package/f-draggable/domain/get-node-padding/get-node-padding.execution.d.ts +1 -1
- package/f-draggable/domain/get-node-padding/get-node-padding.request.d.ts +1 -1
- package/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.d.ts +2 -2
- package/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.d.ts +3 -3
- package/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.d.ts +1 -1
- package/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.d.ts +2 -2
- package/f-draggable/f-draggable-base.d.ts +4 -40
- package/f-draggable/f-draggable-data-context.d.ts +3 -3
- package/f-draggable/f-draggable.directive.d.ts +4 -5
- package/f-draggable/i-draggable-item.d.ts +1 -1
- package/f-draggable/i-f-drag-and-drop-plugin.d.ts +1 -1
- package/f-draggable/index.d.ts +0 -1
- package/f-draggable/node/connection-base-drag-handler.d.ts +5 -6
- package/f-draggable/node/connection-source.drag-handler.d.ts +3 -3
- package/f-draggable/node/connection-target.drag-handler.d.ts +3 -3
- package/f-draggable/node/connection.drag-handler.d.ts +3 -3
- package/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.d.ts +2 -2
- package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.d.ts +2 -2
- package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/i-node-move-restrictions.d.ts +1 -1
- package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.d.ts +2 -2
- package/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.d.ts +2 -2
- package/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.d.ts +1 -1
- package/f-draggable/node/node-move-finalize/node-move-finalize.execution.d.ts +2 -2
- package/f-draggable/node/node-move-finalize/node-move-finalize.request.d.ts +1 -1
- package/f-draggable/node/node-move-finalize/node-move-finalize.validator.d.ts +1 -1
- package/f-draggable/node/node-move-preparation/node-move-preparation.execution.d.ts +2 -2
- package/f-draggable/node/node-move-preparation/node-move-preparation.request.d.ts +1 -1
- package/f-draggable/node/node-move-preparation/node-move-preparation.validator.d.ts +1 -1
- package/f-draggable/node/node-resize-by-child.drag-handler.d.ts +1 -1
- package/f-draggable/node/node.drag-handler.d.ts +1 -1
- package/f-draggable/node/providers.d.ts +1 -1
- package/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.d.ts +1 -1
- package/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.d.ts +1 -1
- package/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.d.ts +1 -1
- package/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.d.ts +1 -1
- package/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.d.ts +2 -2
- package/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.request.d.ts +1 -1
- package/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.d.ts +2 -2
- package/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.request.d.ts +1 -1
- package/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.d.ts +2 -2
- package/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.d.ts +1 -1
- package/f-draggable/node-resize/get-node-resize-restrictions/i-node-resize-restrictions.d.ts +1 -1
- package/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.d.ts +3 -3
- package/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.d.ts +1 -1
- package/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.d.ts +1 -1
- package/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.request.d.ts +1 -1
- package/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.validator.d.ts +1 -1
- package/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.d.ts +2 -2
- package/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.request.d.ts +1 -1
- package/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.d.ts +1 -1
- package/f-draggable/node-resize/node-resize.drag-handler.d.ts +3 -3
- package/f-draggable/providers.d.ts +1 -1
- package/f-draggable/single-select/single-select.execution.d.ts +2 -2
- package/f-draggable/single-select/single-select.request.d.ts +1 -1
- package/f-draggable/single-select/single-select.validator.d.ts +1 -1
- package/f-external-item/domain/external-item-finalize/external-item-finalize.execution.d.ts +2 -2
- package/f-external-item/domain/external-item-finalize/external-item-finalize.request.d.ts +1 -1
- package/f-external-item/domain/external-item-finalize/external-item-finalize.validator.d.ts +1 -1
- package/f-external-item/domain/external-item-preparation/external-item-preparation.execution.d.ts +1 -1
- package/f-external-item/domain/external-item-preparation/external-item-preparation.request.d.ts +1 -1
- package/f-external-item/domain/external-item-preparation/external-item-preparation.validator.d.ts +1 -1
- package/f-external-item/domain/external-item.drag-handler.d.ts +1 -1
- package/f-external-item/domain/f-create-node.event.d.ts +1 -1
- package/f-external-item/f-external-item-base.d.ts +2 -2
- package/f-external-item/f-external-item.directive.d.ts +1 -1
- package/f-flow/f-flow-base.d.ts +1 -1
- package/f-flow/f-flow.component.d.ts +6 -4
- package/f-line-alignment/domain/line-service.d.ts +1 -1
- package/f-line-alignment/domain/nearest-coordinate.d.ts +1 -1
- package/f-line-alignment/f-line-alignment-base.d.ts +3 -2
- package/f-line-alignment/f-line-alignment.component.d.ts +4 -4
- package/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.d.ts +2 -2
- package/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.d.ts +1 -1
- package/f-minimap/domain/check-rect-is-finite.d.ts +2 -0
- package/f-minimap/domain/f-minimap-data.d.ts +1 -1
- package/f-minimap/domain/f-minimap.drag-handler.d.ts +3 -3
- package/f-minimap/domain/index.d.ts +1 -0
- package/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.d.ts +1 -1
- package/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.d.ts +1 -1
- package/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.d.ts +1 -1
- package/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.d.ts +2 -2
- package/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.d.ts +1 -1
- package/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.d.ts +1 -1
- package/f-minimap/domain/providers.d.ts +1 -1
- package/f-minimap/f-minimap-canvas.directive.d.ts +1 -1
- package/f-minimap/f-minimap-flow.directive.d.ts +3 -3
- package/f-minimap/f-minimap-view.directive.d.ts +1 -1
- package/f-minimap/f-minimap.component.d.ts +4 -4
- package/f-node/f-drag-handle/f-drag-handle.directive.d.ts +2 -2
- package/f-node/f-group.directive.d.ts +5 -6
- package/f-node/f-node-base.d.ts +10 -7
- package/f-node/f-node.directive.d.ts +5 -6
- package/f-node/f-resize-handle/f-resize-handle.directive.d.ts +2 -2
- package/f-node/f-rotate-handle/f-rotate-handle.directive.d.ts +1 -1
- package/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.d.ts +1 -1
- package/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.d.ts +1 -1
- package/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.d.ts +1 -1
- package/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.d.ts +2 -2
- package/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.d.ts +1 -1
- package/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.d.ts +1 -1
- package/f-selection-area/domain/selection-area.drag-handle.d.ts +3 -3
- package/f-selection-area/f-selection-area-base.d.ts +3 -2
- package/f-selection-area/f-selection-area.component.d.ts +5 -4
- package/f-storage/f-components-store.d.ts +1 -1
- package/f-zoom/f-zoom-base.d.ts +1 -1
- package/f-zoom/f-zoom.directive.d.ts +1 -1
- package/fesm2015/foblex-flow.js +7766 -0
- package/fesm2015/foblex-flow.js.map +1 -0
- package/i-has-host-element.d.ts +3 -0
- package/mixins/change-position.d.ts +10 -0
- package/mixins/change-selection/change-selection.d.ts +7 -0
- package/mixins/change-selection/i-can-change-selection.d.ts +10 -0
- package/mixins/change-selection/index.d.ts +2 -0
- package/mixins/change-visibility/change-visibility.d.ts +6 -0
- package/mixins/change-visibility/i-can-change-visibility.d.ts +5 -0
- package/mixins/change-visibility/index.d.ts +2 -0
- package/mixins/change-zoom/change-zoom.d.ts +6 -0
- package/mixins/change-zoom/i-can-change-zoom.d.ts +6 -0
- package/mixins/change-zoom/index.d.ts +2 -0
- package/mixins/constructor.d.ts +2 -0
- package/mixins/fit-to-parent/fit-to-parent.d.ts +6 -0
- package/mixins/fit-to-parent/i-can-fit-to-parent.d.ts +4 -0
- package/mixins/fit-to-parent/index.d.ts +2 -0
- package/mixins/i-transformable.d.ts +4 -0
- package/mixins/index.d.ts +8 -0
- package/mixins/one-to-one-centering/i-can-one-to-one-centering.d.ts +4 -0
- package/mixins/one-to-one-centering/index.d.ts +2 -0
- package/mixins/one-to-one-centering/one-to-one-centering.d.ts +6 -0
- package/package.json +12 -17
- package/public-api.d.ts +2 -1
- package/domain/cast-to-enum.d.ts +0 -1
- package/domain/deep-clone-node.d.ts +0 -1
- package/domain/get-value-from-data-attr.d.ts +0 -1
- package/domain/intersections/e-f-connector-shape.d.ts +0 -3
- package/domain/intersections/f-connector-shape.extensions.d.ts +0 -11
- package/domain/intersections/i-connector-shape.d.ts +0 -6
- package/domain/intersections/index.d.ts +0 -5
- package/domain/intersections/intersection-finder.d.ts +0 -67
- package/domain/intersections/rounded-rect/i-rounded-rect.d.ts +0 -8
- package/domain/intersections/rounded-rect/index.d.ts +0 -2
- package/domain/intersections/rounded-rect/rounded-rect.d.ts +0 -23
- package/domain/is-element-with-class.d.ts +0 -1
- package/esm2022/domain/cast-to-enum.mjs +0 -12
- package/esm2022/domain/clear-selection/clear-selection.execution.mjs +0 -27
- package/esm2022/domain/create-connection-markers/create-connection-markers-request.mjs +0 -7
- package/esm2022/domain/create-connection-markers/create-connection-markers.execution.mjs +0 -62
- package/esm2022/domain/deep-clone-node.mjs +0 -47
- package/esm2022/domain/emit-transform-changes/emit-transform-changes.execution.mjs +0 -25
- package/esm2022/domain/get-can-be-selected-items/get-can-be-selected-items.execution.mjs +0 -60
- package/esm2022/domain/get-can-be-selected-items/i-selectable-with-rect.mjs +0 -2
- package/esm2022/domain/get-connection-line/get-connection-line.execution.mjs +0 -66
- package/esm2022/domain/get-connection-line/get-connection-line.request.mjs +0 -15
- package/esm2022/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.mjs +0 -36
- package/esm2022/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.mjs +0 -7
- package/esm2022/domain/get-element-rect-in-flow/get-element-rect-in-flow-request.mjs +0 -7
- package/esm2022/domain/get-element-rect-in-flow/get-element-rect-in-flow.execution.mjs +0 -45
- package/esm2022/domain/get-input-rect-in-flow/get-input-rect-in-flow-request.mjs +0 -7
- package/esm2022/domain/get-input-rect-in-flow/get-input-rect-in-flow-response.mjs +0 -9
- package/esm2022/domain/get-input-rect-in-flow/get-input-rect-in-flow.execution.mjs +0 -35
- package/esm2022/domain/get-nodes-rect/get-nodes-rect.execution.mjs +0 -32
- package/esm2022/domain/get-output-rect-in-flow/get-output-rect-in-flow-request.mjs +0 -7
- package/esm2022/domain/get-output-rect-in-flow/get-output-rect-in-flow-response.mjs +0 -9
- package/esm2022/domain/get-output-rect-in-flow/get-output-rect-in-flow.execution.mjs +0 -39
- package/esm2022/domain/get-position-in-flow/get-position-in-flow-request.mjs +0 -7
- package/esm2022/domain/get-position-in-flow/get-position-in-flow.execution.mjs +0 -33
- package/esm2022/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.execution.mjs +0 -35
- package/esm2022/domain/get-selection/get-selection.execution.mjs +0 -36
- package/esm2022/domain/get-value-from-data-attr.mjs +0 -7
- package/esm2022/domain/index.mjs +0 -29
- package/esm2022/domain/intersections/e-f-connector-shape.mjs +0 -5
- package/esm2022/domain/intersections/f-connector-shape.extensions.mjs +0 -46
- package/esm2022/domain/intersections/i-connector-shape.mjs +0 -2
- package/esm2022/domain/intersections/index.mjs +0 -6
- package/esm2022/domain/intersections/intersection-finder.mjs +0 -156
- package/esm2022/domain/intersections/rounded-rect/i-rounded-rect.mjs +0 -2
- package/esm2022/domain/intersections/rounded-rect/index.mjs +0 -3
- package/esm2022/domain/intersections/rounded-rect/rounded-rect.mjs +0 -54
- package/esm2022/domain/is-connection-under-node/is-connection-under-node.execution.mjs +0 -79
- package/esm2022/domain/is-element-with-class.mjs +0 -8
- package/esm2022/domain/providers.mjs +0 -48
- package/esm2022/domain/redraw-connections/redraw-connections.execution.mjs +0 -62
- package/esm2022/domain/select/select.execution.mjs +0 -46
- package/esm2022/domain/select/select.request.mjs +0 -9
- package/esm2022/domain/select-all/select-all.execution.mjs +0 -40
- package/esm2022/domain/select-and-update-node-layer/select-and-update-node-layer.execution.mjs +0 -37
- package/esm2022/domain/select-and-update-node-layer/select-and-update-node-layer.request.mjs +0 -7
- package/esm2022/domain/sort-item-layers/sort-item-layers.execution.mjs +0 -32
- package/esm2022/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.mjs +0 -61
- package/esm2022/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.request.mjs +0 -8
- package/esm2022/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.mjs +0 -62
- package/esm2022/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.execution.mjs +0 -28
- package/esm2022/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.mjs +0 -30
- package/esm2022/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.mjs +0 -14
- package/esm2022/domain/update-item-and-children-layers/update-item-and-children-layers.execution.mjs +0 -96
- package/esm2022/domain/update-item-and-children-layers/update-item-and-children-layers.request.mjs +0 -9
- package/esm2022/f-backgroud/domain/i-f-background-pattern.mjs +0 -3
- package/esm2022/f-backgroud/f-background-base.mjs +0 -11
- package/esm2022/f-backgroud/f-background.component.mjs +0 -66
- package/esm2022/f-backgroud/f-circle-pattern/f-circle-pattern.component.mjs +0 -107
- package/esm2022/f-backgroud/f-rect-pattern/f-rect-pattern.component.mjs +0 -126
- package/esm2022/f-canvas/domain/f-canvas-change.event.mjs +0 -9
- package/esm2022/f-canvas/f-canvas-base.mjs +0 -28
- package/esm2022/f-canvas/f-canvas.component.mjs +0 -107
- package/esm2022/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.mjs +0 -9
- package/esm2022/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points.handler.mjs +0 -12
- package/esm2022/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.mjs +0 -7
- package/esm2022/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.mjs +0 -35
- package/esm2022/f-connection/common/domain/f-bezier.path-builder.mjs +0 -37
- package/esm2022/f-connection/common/domain/f-segment.path-builder.mjs +0 -142
- package/esm2022/f-connection/common/f-connection-base.mjs +0 -62
- package/esm2022/f-connection/common/f-connection-identifiers.mjs +0 -27
- package/esm2022/f-connection/common/f-connection-text/f-connection-text-path.directive.mjs +0 -73
- package/esm2022/f-connection/common/f-connection-text/f-connection-text.component.mjs +0 -69
- package/esm2022/f-connection/common/f-connection-text/i-connection-text.mjs +0 -3
- package/esm2022/f-connection/common/f-drag-handle/f-connection-drag-handle.component.mjs +0 -39
- package/esm2022/f-connection/common/f-gradient/f-connection-gradient.component.mjs +0 -65
- package/esm2022/f-connection/common/f-gradient/i-connection-gradient.mjs +0 -3
- package/esm2022/f-connection/common/f-path/f-connection-path.component.mjs +0 -61
- package/esm2022/f-connection/common/f-path/get-path-marker-id.mjs +0 -19
- package/esm2022/f-connection/common/f-path/i-connection-path.mjs +0 -3
- package/esm2022/f-connection/common/f-selection/f-connection-selection.component.mjs +0 -39
- package/esm2022/f-connection/common/index.mjs +0 -15
- package/esm2022/f-connection/common/mixins/change-connection-selection.mixin.mjs +0 -25
- package/esm2022/f-connection/common/mixins/change-connection-visibility.mixin.mjs +0 -14
- package/esm2022/f-connection/common/mixins/index.mjs +0 -3
- package/esm2022/f-connection/f-connection/f-connection.component.mjs +0 -187
- package/esm2022/f-connection/f-connection-builder/f-connection-factory.mjs +0 -34
- package/esm2022/f-connection/f-connection-builder/i-f-connection-builder-request.mjs +0 -2
- package/esm2022/f-connection/f-connection-builder/i-f-connection-builder-response.mjs +0 -2
- package/esm2022/f-connection/f-connection-builder/i-f-connection-builder.mjs +0 -2
- package/esm2022/f-connection/f-connection-center/f-connection-center.directive.mjs +0 -13
- package/esm2022/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +0 -155
- package/esm2022/f-connection/f-marker/f-marker-base.mjs +0 -11
- package/esm2022/f-connection/f-marker/f-marker.directive.mjs +0 -60
- package/esm2022/f-connection/index.mjs +0 -8
- package/esm2022/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.mjs +0 -9
- package/esm2022/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.mjs +0 -38
- package/esm2022/f-connectors/f-connector-base.mjs +0 -15
- package/esm2022/f-connectors/f-node-input/f-node-input-base.mjs +0 -16
- package/esm2022/f-connectors/f-node-input/f-node-input.directive.mjs +0 -91
- package/esm2022/f-connectors/f-node-outlet/f-node-outlet-base.mjs +0 -20
- package/esm2022/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +0 -74
- package/esm2022/f-connectors/f-node-output/f-node-output-base.mjs +0 -16
- package/esm2022/f-connectors/f-node-output/f-node-output.directive.mjs +0 -98
- package/esm2022/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.mjs +0 -25
- package/esm2022/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.request.mjs +0 -7
- package/esm2022/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.validator.mjs +0 -26
- package/esm2022/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.mjs +0 -38
- package/esm2022/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.request.mjs +0 -7
- package/esm2022/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.mjs +0 -50
- package/esm2022/f-draggable/canvas/canvas.drag-handler.mjs +0 -19
- package/esm2022/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.mjs +0 -58
- package/esm2022/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.request.mjs +0 -7
- package/esm2022/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.validator.mjs +0 -26
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.mjs +0 -48
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.mjs +0 -9
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.mjs +0 -55
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.mjs +0 -7
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.mjs +0 -41
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.mjs +0 -7
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.mjs +0 -35
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.mjs +0 -45
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.mjs +0 -7
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.mjs +0 -34
- package/esm2022/f-draggable/connections/create-connection/create-connection.drag-handler.mjs +0 -36
- package/esm2022/f-draggable/connections/create-connection/f-create-connection.event.mjs +0 -11
- package/esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.mjs +0 -44
- package/esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.request.mjs +0 -7
- package/esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.mjs +0 -28
- package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.mjs +0 -76
- package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.mjs +0 -9
- package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.mjs +0 -36
- package/esm2022/f-draggable/connections/reassign-connection/f-reassign-connection.event.mjs +0 -13
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.mjs +0 -53
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.request.mjs +0 -7
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.validator.mjs +0 -26
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.mjs +0 -68
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.mjs +0 -7
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.mjs +0 -47
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.mjs +0 -35
- package/esm2022/f-draggable/domain/get-node-padding/get-node-padding.execution.mjs +0 -34
- package/esm2022/f-draggable/domain/get-node-padding/get-node-padding.request.mjs +0 -9
- package/esm2022/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.mjs +0 -30
- package/esm2022/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.request.mjs +0 -7
- package/esm2022/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.mjs +0 -50
- package/esm2022/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.request.mjs +0 -7
- package/esm2022/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.mjs +0 -37
- package/esm2022/f-draggable/domain/get-parent-nodes/get-parent-nodes.request.mjs +0 -7
- package/esm2022/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.mjs +0 -35
- package/esm2022/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.mjs +0 -9
- package/esm2022/f-draggable/f-draggable-base.mjs +0 -169
- package/esm2022/f-draggable/f-draggable-data-context.mjs +0 -25
- package/esm2022/f-draggable/f-draggable.directive.mjs +0 -171
- package/esm2022/f-draggable/f-selection-change-event.mjs +0 -9
- package/esm2022/f-draggable/i-can-run-outside-angular.mjs +0 -2
- package/esm2022/f-draggable/i-draggable-item.mjs +0 -2
- package/esm2022/f-draggable/i-f-drag-and-drop-plugin.mjs +0 -3
- package/esm2022/f-draggable/index.mjs +0 -15
- package/esm2022/f-draggable/node/connection-base-drag-handler.mjs +0 -42
- package/esm2022/f-draggable/node/connection-source.drag-handler.mjs +0 -18
- package/esm2022/f-draggable/node/connection-target.drag-handler.mjs +0 -18
- package/esm2022/f-draggable/node/connection.drag-handler.mjs +0 -22
- package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.mjs +0 -87
- package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.mjs +0 -45
- package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.request.mjs +0 -9
- package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/i-node-move-restrictions.mjs +0 -2
- package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.mjs +0 -72
- package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.request.mjs +0 -11
- package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.mjs +0 -72
- package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.request.mjs +0 -11
- package/esm2022/f-draggable/node/node-move-finalize/node-move-finalize.execution.mjs +0 -54
- package/esm2022/f-draggable/node/node-move-finalize/node-move-finalize.request.mjs +0 -7
- package/esm2022/f-draggable/node/node-move-finalize/node-move-finalize.validator.mjs +0 -26
- package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.execution.mjs +0 -62
- package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.request.mjs +0 -7
- package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.validator.mjs +0 -43
- package/esm2022/f-draggable/node/node-resize-by-child.drag-handler.mjs +0 -13
- package/esm2022/f-draggable/node/node.drag-handler.mjs +0 -37
- package/esm2022/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.mjs +0 -49
- package/esm2022/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.mjs +0 -9
- package/esm2022/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.mjs +0 -49
- package/esm2022/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.mjs +0 -9
- package/esm2022/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.mjs +0 -25
- package/esm2022/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.request.mjs +0 -13
- package/esm2022/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.mjs +0 -34
- package/esm2022/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.request.mjs +0 -11
- package/esm2022/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.mjs +0 -32
- package/esm2022/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.mjs +0 -9
- package/esm2022/f-draggable/node-resize/get-node-resize-restrictions/i-node-resize-restrictions.mjs +0 -2
- package/esm2022/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.mjs +0 -42
- package/esm2022/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.mjs +0 -9
- package/esm2022/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.mjs +0 -27
- package/esm2022/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.request.mjs +0 -7
- package/esm2022/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.validator.mjs +0 -26
- package/esm2022/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.mjs +0 -55
- package/esm2022/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.request.mjs +0 -7
- package/esm2022/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.mjs +0 -43
- package/esm2022/f-draggable/node-resize/node-resize.drag-handler.mjs +0 -53
- package/esm2022/f-draggable/single-select/single-select.execution.mjs +0 -93
- package/esm2022/f-draggable/single-select/single-select.request.mjs +0 -7
- package/esm2022/f-draggable/single-select/single-select.validator.mjs +0 -29
- package/esm2022/f-external-item/domain/external-item-finalize/external-item-finalize.execution.mjs +0 -61
- package/esm2022/f-external-item/domain/external-item-finalize/external-item-finalize.request.mjs +0 -7
- package/esm2022/f-external-item/domain/external-item-finalize/external-item-finalize.validator.mjs +0 -26
- package/esm2022/f-external-item/domain/external-item-preparation/external-item-preparation.execution.mjs +0 -47
- package/esm2022/f-external-item/domain/external-item-preparation/external-item-preparation.request.mjs +0 -7
- package/esm2022/f-external-item/domain/external-item-preparation/external-item-preparation.validator.mjs +0 -30
- package/esm2022/f-external-item/domain/external-item.drag-handler.mjs +0 -39
- package/esm2022/f-external-item/domain/f-create-node.event.mjs +0 -9
- package/esm2022/f-external-item/f-external-item-base.mjs +0 -11
- package/esm2022/f-external-item/f-external-item.directive.mjs +0 -58
- package/esm2022/f-external-item/f-external-item.service.mjs +0 -26
- package/esm2022/f-flow/f-flow-base.mjs +0 -5
- package/esm2022/f-flow/f-flow.component.mjs +0 -118
- package/esm2022/f-flow.module.mjs +0 -87
- package/esm2022/f-line-alignment/domain/line-element.mjs +0 -24
- package/esm2022/f-line-alignment/domain/line-service.mjs +0 -38
- package/esm2022/f-line-alignment/domain/nearest-coordinate.mjs +0 -104
- package/esm2022/f-line-alignment/f-line-alignment-base.mjs +0 -11
- package/esm2022/f-line-alignment/f-line-alignment.component.mjs +0 -97
- package/esm2022/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.mjs +0 -43
- package/esm2022/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.mjs +0 -13
- package/esm2022/f-minimap/domain/f-minimap-data.mjs +0 -12
- package/esm2022/f-minimap/domain/f-minimap.drag-handler.mjs +0 -41
- package/esm2022/f-minimap/domain/index.mjs +0 -7
- package/esm2022/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.mjs +0 -27
- package/esm2022/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.mjs +0 -7
- package/esm2022/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.mjs +0 -26
- package/esm2022/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.mjs +0 -52
- package/esm2022/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.mjs +0 -9
- package/esm2022/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.mjs +0 -30
- package/esm2022/f-minimap/f-minimap-canvas.directive.mjs +0 -67
- package/esm2022/f-minimap/f-minimap-flow.directive.mjs +0 -79
- package/esm2022/f-minimap/f-minimap-view.directive.mjs +0 -40
- package/esm2022/f-minimap/f-minimap.component.mjs +0 -72
- package/esm2022/f-node/f-drag-handle/f-drag-handle.directive.mjs +0 -25
- package/esm2022/f-node/f-group.directive.mjs +0 -153
- package/esm2022/f-node/f-node-base.mjs +0 -37
- package/esm2022/f-node/f-node.directive.mjs +0 -154
- package/esm2022/f-node/f-resize-handle/f-resize-handle.directive.mjs +0 -44
- package/esm2022/f-node/f-rotate-handle/f-rotate-handle.directive.mjs +0 -28
- package/esm2022/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.mjs +0 -27
- package/esm2022/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.mjs +0 -7
- package/esm2022/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.mjs +0 -26
- package/esm2022/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.mjs +0 -41
- package/esm2022/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.mjs +0 -9
- package/esm2022/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.mjs +0 -32
- package/esm2022/f-selection-area/domain/selection-area.drag-handle.mjs +0 -52
- package/esm2022/f-selection-area/f-selection-area-base.mjs +0 -10
- package/esm2022/f-selection-area/f-selection-area.component.mjs +0 -53
- package/esm2022/f-storage/f-components-store.mjs +0 -53
- package/esm2022/f-storage/f-transform-store.mjs +0 -12
- package/esm2022/f-zoom/f-zoom-base.mjs +0 -97
- package/esm2022/f-zoom/f-zoom.directive.mjs +0 -59
- package/esm2022/infrastructure/f-mediator/f-execution-register.mjs +0 -7
- package/esm2022/infrastructure/f-mediator/f-flow-mediator.mjs +0 -30
- package/esm2022/infrastructure/f-mediator/f-validator-register.mjs +0 -7
- package/esm2022/infrastructure/f-mediator/index.mjs +0 -4
- package/esm2022/infrastructure/index.mjs +0 -3
- package/esm2022/infrastructure/pipeline/i-execution.mjs +0 -2
- package/esm2022/infrastructure/pipeline/i-validator.mjs +0 -2
- package/esm2022/infrastructure/pipeline/index.mjs +0 -4
- package/esm2022/infrastructure/pipeline/pipeline.mjs +0 -21
- package/esm2022/public-api.mjs +0 -18
- package/f-connection/common/mixins/change-connection-selection.mixin.d.ts +0 -13
- package/f-connection/common/mixins/change-connection-visibility.mixin.d.ts +0 -9
- package/f-connection/common/mixins/index.d.ts +0 -2
- package/f-draggable/i-can-run-outside-angular.d.ts +0 -3
- package/fesm2022/foblex-flow.mjs +0 -8163
- package/fesm2022/foblex-flow.mjs.map +0 -1
- package/infrastructure/f-mediator/f-execution-register.d.ts +0 -5
- package/infrastructure/f-mediator/f-flow-mediator.d.ts +0 -12
- package/infrastructure/f-mediator/f-validator-register.d.ts +0 -5
- package/infrastructure/f-mediator/index.d.ts +0 -3
- package/infrastructure/index.d.ts +0 -2
- package/infrastructure/pipeline/i-execution.d.ts +0 -3
- package/infrastructure/pipeline/i-validator.d.ts +0 -3
- package/infrastructure/pipeline/index.d.ts +0 -3
- package/infrastructure/pipeline/pipeline.d.ts +0 -11
- /package/{esm2022/domain/clear-selection/clear-selection.request.mjs → esm2015/domain/clear-selection/clear-selection.request.js} +0 -0
- /package/{esm2022/domain/clear-selection/index.mjs → esm2015/domain/clear-selection/index.js} +0 -0
- /package/{esm2022/domain/create-connection-markers/index.mjs → esm2015/domain/create-connection-markers/index.js} +0 -0
- /package/{esm2022/domain/create-dom-element.mjs → esm2015/domain/create-dom-element.js} +0 -0
- /package/{esm2022/domain/emit-transform-changes/emit-transform-changes.request.mjs → esm2015/domain/emit-transform-changes/emit-transform-changes.request.js} +0 -0
- /package/{esm2022/domain/emit-transform-changes/index.mjs → esm2015/domain/emit-transform-changes/index.js} +0 -0
- /package/{esm2022/domain/get-can-be-selected-items/get-can-be-selected-items-request.mjs → esm2015/domain/get-can-be-selected-items/get-can-be-selected-items-request.js} +0 -0
- /package/{esm2022/domain/get-can-be-selected-items/index.mjs → esm2015/domain/get-can-be-selected-items/index.js} +0 -0
- /package/{esm2022/domain/get-connection-line/index.mjs → esm2015/domain/get-connection-line/index.js} +0 -0
- /package/{esm2022/domain/get-deep-children-nodes-and-groups/index.mjs → esm2015/domain/get-deep-children-nodes-and-groups/index.js} +0 -0
- /package/{esm2022/domain/get-element-rect-in-flow/index.mjs → esm2015/domain/get-element-rect-in-flow/index.js} +0 -0
- /package/{esm2022/domain/get-input-rect-in-flow/index.mjs → esm2015/domain/get-input-rect-in-flow/index.js} +0 -0
- /package/{esm2022/domain/get-nodes-rect/get-nodes-rect.request.mjs → esm2015/domain/get-nodes-rect/get-nodes-rect.request.js} +0 -0
- /package/{esm2022/domain/get-nodes-rect/index.mjs → esm2015/domain/get-nodes-rect/index.js} +0 -0
- /package/{esm2022/domain/get-output-rect-in-flow/index.mjs → esm2015/domain/get-output-rect-in-flow/index.js} +0 -0
- /package/{esm2022/domain/get-position-in-flow/index.mjs → esm2015/domain/get-position-in-flow/index.js} +0 -0
- /package/{esm2022/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.request.mjs → esm2015/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.request.js} +0 -0
- /package/{esm2022/domain/get-scaled-node-rects-with-flow-position/index.mjs → esm2015/domain/get-scaled-node-rects-with-flow-position/index.js} +0 -0
- /package/{esm2022/domain/get-selection/get-selection.request.mjs → esm2015/domain/get-selection/get-selection.request.js} +0 -0
- /package/{esm2022/domain/get-selection/index.mjs → esm2015/domain/get-selection/index.js} +0 -0
- /package/{esm2022/domain/is-connection-under-node/index.mjs → esm2015/domain/is-connection-under-node/index.js} +0 -0
- /package/{esm2022/domain/is-connection-under-node/is-connection-under-node.request.mjs → esm2015/domain/is-connection-under-node/is-connection-under-node.request.js} +0 -0
- /package/{esm2022/domain/redraw-connections/index.mjs → esm2015/domain/redraw-connections/index.js} +0 -0
- /package/{esm2022/domain/redraw-connections/redraw-connections-request.mjs → esm2015/domain/redraw-connections/redraw-connections-request.js} +0 -0
- /package/{esm2022/domain/select/index.mjs → esm2015/domain/select/index.js} +0 -0
- /package/{esm2022/domain/select-all/index.mjs → esm2015/domain/select-all/index.js} +0 -0
- /package/{esm2022/domain/select-all/select-all.request.mjs → esm2015/domain/select-all/select-all.request.js} +0 -0
- /package/{esm2022/domain/select-and-update-node-layer/index.mjs → esm2015/domain/select-and-update-node-layer/index.js} +0 -0
- /package/{esm2022/domain/sort-item-layers/index.mjs → esm2015/domain/sort-item-layers/index.js} +0 -0
- /package/{esm2022/domain/sort-item-layers/sort-item-layers.request.mjs → esm2015/domain/sort-item-layers/sort-item-layers.request.js} +0 -0
- /package/{esm2022/domain/sort-item-layers/sort-items-by-parent/index.mjs → esm2015/domain/sort-item-layers/sort-items-by-parent/index.js} +0 -0
- /package/{esm2022/domain/sort-item-layers/sort-node-layers-by-groups/index.mjs → esm2015/domain/sort-item-layers/sort-node-layers-by-groups/index.js} +0 -0
- /package/{esm2022/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.request.mjs → esm2015/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.request.js} +0 -0
- /package/{esm2022/domain/subscribe-on-transform-changes/index.mjs → esm2015/domain/subscribe-on-transform-changes/index.js} +0 -0
- /package/{esm2022/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.request.mjs → esm2015/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.request.js} +0 -0
- /package/{esm2022/domain/update-item-and-children-layers/index.mjs → esm2015/domain/update-item-and-children-layers/index.js} +0 -0
- /package/{esm2022/domain/update-item-and-children-layers/move-front-elements-before-target-element/index.mjs → esm2015/domain/update-item-and-children-layers/move-front-elements-before-target-element/index.js} +0 -0
- /package/{esm2022/errors/conflict-error.mjs → esm2015/errors/conflict-error.js} +0 -0
- /package/{esm2022/errors/create-error-class.mjs → esm2015/errors/create-error-class.js} +0 -0
- /package/{esm2022/errors/errors.mjs → esm2015/errors/errors.js} +0 -0
- /package/{esm2022/errors/index.mjs → esm2015/errors/index.js} +0 -0
- /package/{esm2022/errors/not-found-error.mjs → esm2015/errors/not-found-error.js} +0 -0
- /package/{esm2022/f-backgroud/domain/index.mjs → esm2015/f-backgroud/domain/index.js} +0 -0
- /package/{esm2022/f-backgroud/f-circle-pattern/index.mjs → esm2015/f-backgroud/f-circle-pattern/index.js} +0 -0
- /package/{esm2022/f-backgroud/f-rect-pattern/index.mjs → esm2015/f-backgroud/f-rect-pattern/index.js} +0 -0
- /package/{esm2022/f-backgroud/index.mjs → esm2015/f-backgroud/index.js} +0 -0
- /package/{esm2022/f-backgroud/providers.mjs → esm2015/f-backgroud/providers.js} +0 -0
- /package/{esm2022/f-canvas/domain/index.mjs → esm2015/f-canvas/domain/index.js} +0 -0
- /package/{esm2022/f-canvas/index.mjs → esm2015/f-canvas/index.js} +0 -0
- /package/{esm2022/f-canvas/providers.mjs → esm2015/f-canvas/providers.js} +0 -0
- /package/{esm2022/f-connection/common/domain/calculate-center-between-points/index.mjs → esm2015/f-connection/common/domain/calculate-center-between-points/index.js} +0 -0
- /package/{esm2022/f-connection/common/domain/calculate-connection-center/index.mjs → esm2015/f-connection/common/domain/calculate-connection-center/index.js} +0 -0
- /package/{esm2022/f-connection/common/domain/f-straight.path-builder.mjs → esm2015/f-connection/common/domain/f-straight.path-builder.js} +0 -0
- /package/{esm2022/f-connection/common/domain/index.mjs → esm2015/f-connection/common/domain/index.js} +0 -0
- /package/{esm2022/f-connection/common/e-f-connection-behavior.mjs → esm2015/f-connection/common/e-f-connection-behavior.js} +0 -0
- /package/{esm2022/f-connection/common/e-f-connection-type.mjs → esm2015/f-connection/common/e-f-connection-type.js} +0 -0
- /package/{esm2022/f-connection/common/f-connection-text/index.mjs → esm2015/f-connection/common/f-connection-text/index.js} +0 -0
- /package/{esm2022/f-connection/common/f-connection.injection-token.mjs → esm2015/f-connection/common/f-connection.injection-token.js} +0 -0
- /package/{esm2022/f-connection/common/f-drag-handle/index.mjs → esm2015/f-connection/common/f-drag-handle/index.js} +0 -0
- /package/{esm2022/f-connection/common/f-gradient/index.mjs → esm2015/f-connection/common/f-gradient/index.js} +0 -0
- /package/{esm2022/f-connection/common/f-path/index.mjs → esm2015/f-connection/common/f-path/index.js} +0 -0
- /package/{esm2022/f-connection/common/f-selection/index.mjs → esm2015/f-connection/common/f-selection/index.js} +0 -0
- /package/{esm2022/f-connection/common/i-has-connection-color.mjs → esm2015/f-connection/common/i-has-connection-color.js} +0 -0
- /package/{esm2022/f-connection/common/i-has-connection-from-to.mjs → esm2015/f-connection/common/i-has-connection-from-to.js} +0 -0
- /package/{esm2022/f-connection/common/i-has-connection-text.mjs → esm2015/f-connection/common/i-has-connection-text.js} +0 -0
- /package/{esm2022/f-connection/f-connection/index.mjs → esm2015/f-connection/f-connection/index.js} +0 -0
- /package/{esm2022/f-connection/f-connection-builder/f-connection-builders.mjs → esm2015/f-connection/f-connection-builder/f-connection-builders.js} +0 -0
- /package/{esm2022/f-connection/f-connection-builder/i-f-connection-factory-request.mjs → esm2015/f-connection/f-connection-builder/i-f-connection-factory-request.js} +0 -0
- /package/{esm2022/f-connection/f-connection-builder/index.mjs → esm2015/f-connection/f-connection-builder/index.js} +0 -0
- /package/{esm2022/f-connection/f-connection-center/index.mjs → esm2015/f-connection/f-connection-center/index.js} +0 -0
- /package/{esm2022/f-connection/f-connection-for-create/index.mjs → esm2015/f-connection/f-connection-for-create/index.js} +0 -0
- /package/{esm2022/f-connection/f-marker/e-f-marker-type.mjs → esm2015/f-connection/f-marker/e-f-marker-type.js} +0 -0
- /package/{esm2022/f-connection/f-marker/index.mjs → esm2015/f-connection/f-marker/index.js} +0 -0
- /package/{esm2022/f-connection/providers.mjs → esm2015/f-connection/providers.js} +0 -0
- /package/{esm2022/f-connectors/domain/calculate-connector-connectable-side/index.mjs → esm2015/f-connectors/domain/calculate-connector-connectable-side/index.js} +0 -0
- /package/{esm2022/f-connectors/domain/index.mjs → esm2015/f-connectors/domain/index.js} +0 -0
- /package/{esm2022/f-connectors/e-f-connectable-side.mjs → esm2015/f-connectors/e-f-connectable-side.js} +0 -0
- /package/{esm2022/f-connectors/f-node-input/index.mjs → esm2015/f-connectors/f-node-input/index.js} +0 -0
- /package/{esm2022/f-connectors/f-node-input/is-node-input.mjs → esm2015/f-connectors/f-node-input/is-node-input.js} +0 -0
- /package/{esm2022/f-connectors/f-node-outlet/index.mjs → esm2015/f-connectors/f-node-outlet/index.js} +0 -0
- /package/{esm2022/f-connectors/f-node-outlet/is-node-outlet.mjs → esm2015/f-connectors/f-node-outlet/is-node-outlet.js} +0 -0
- /package/{esm2022/f-connectors/f-node-output/index.mjs → esm2015/f-connectors/f-node-output/index.js} +0 -0
- /package/{esm2022/f-connectors/f-node-output/is-node-output.mjs → esm2015/f-connectors/f-node-output/is-node-output.js} +0 -0
- /package/{esm2022/f-connectors/index.mjs → esm2015/f-connectors/index.js} +0 -0
- /package/{esm2022/f-connectors/providers.mjs → esm2015/f-connectors/providers.js} +0 -0
- /package/{esm2022/f-draggable/canvas/canvas-move-finalize/index.mjs → esm2015/f-draggable/canvas/canvas-move-finalize/index.js} +0 -0
- /package/{esm2022/f-draggable/canvas/canvas-move-finalize/providers.mjs → esm2015/f-draggable/canvas/canvas-move-finalize/providers.js} +0 -0
- /package/{esm2022/f-draggable/canvas/canvas-move-preparation/index.mjs → esm2015/f-draggable/canvas/canvas-move-preparation/index.js} +0 -0
- /package/{esm2022/f-draggable/canvas/canvas-move-preparation/providers.mjs → esm2015/f-draggable/canvas/canvas-move-preparation/providers.js} +0 -0
- /package/{esm2022/f-draggable/canvas/index.mjs → esm2015/f-draggable/canvas/index.js} +0 -0
- /package/{esm2022/f-draggable/canvas/providers.mjs → esm2015/f-draggable/canvas/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-finalize/index.mjs → esm2015/f-draggable/connections/create-connection/create-connection-finalize/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-finalize/providers.mjs → esm2015/f-draggable/connections/create-connection/create-connection-finalize/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/index.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/providers.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/index.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/providers.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/index.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/providers.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/index.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/providers.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/index.mjs → esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/providers.mjs → esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/index.mjs → esm2015/f-draggable/connections/create-connection/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/get-input-under-pointer/index.mjs → esm2015/f-draggable/connections/get-input-under-pointer/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/get-input-under-pointer/providers.mjs → esm2015/f-draggable/connections/get-input-under-pointer/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/index.mjs → esm2015/f-draggable/connections/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/providers.mjs → esm2015/f-draggable/connections/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/reassign-connection/index.mjs → esm2015/f-draggable/connections/reassign-connection/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/index.mjs → esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/providers.mjs → esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/index.mjs → esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/providers.mjs → esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/providers.js} +0 -0
- /package/{esm2022/f-draggable/domain/get-node-padding/index.mjs → esm2015/f-draggable/domain/get-node-padding/index.js} +0 -0
- /package/{esm2022/f-draggable/domain/get-normalized-node-rect/index.mjs → esm2015/f-draggable/domain/get-normalized-node-rect/index.js} +0 -0
- /package/{esm2022/f-draggable/domain/get-normalized-parent-node-rect/index.mjs → esm2015/f-draggable/domain/get-normalized-parent-node-rect/index.js} +0 -0
- /package/{esm2022/f-draggable/domain/get-parent-nodes/index.mjs → esm2015/f-draggable/domain/get-parent-nodes/index.js} +0 -0
- /package/{esm2022/f-draggable/domain/index.mjs → esm2015/f-draggable/domain/index.js} +0 -0
- /package/{esm2022/f-draggable/domain/is-array-has-parent-node/index.mjs → esm2015/f-draggable/domain/is-array-has-parent-node/index.js} +0 -0
- /package/{esm2022/f-draggable/domain/providers.mjs → esm2015/f-draggable/domain/providers.js} +0 -0
- /package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.js} +0 -0
- /package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/index.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/index.js} +0 -0
- /package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/index.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/index.js} +0 -0
- /package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/index.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/index.js} +0 -0
- /package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/i-node-with-distance-restrictions.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/i-node-with-distance-restrictions.js} +0 -0
- /package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/index.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/index.js} +0 -0
- /package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.js} +0 -0
- /package/{esm2022/f-draggable/node/index.mjs → esm2015/f-draggable/node/index.js} +0 -0
- /package/{esm2022/f-draggable/node/node-move-finalize/index.mjs → esm2015/f-draggable/node/node-move-finalize/index.js} +0 -0
- /package/{esm2022/f-draggable/node/node-move-finalize/providers.mjs → esm2015/f-draggable/node/node-move-finalize/providers.js} +0 -0
- /package/{esm2022/f-draggable/node/node-move-preparation/index.mjs → esm2015/f-draggable/node/node-move-preparation/index.js} +0 -0
- /package/{esm2022/f-draggable/node/node-move-preparation/providers.mjs → esm2015/f-draggable/node/node-move-preparation/providers.js} +0 -0
- /package/{esm2022/f-draggable/node/providers.mjs → esm2015/f-draggable/node/providers.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/apply-child-resize-restrictions/index.mjs → esm2015/f-draggable/node-resize/apply-child-resize-restrictions/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/apply-parent-resize-restrictions/index.mjs → esm2015/f-draggable/node-resize/apply-parent-resize-restrictions/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/calculate-changed-position/index.mjs → esm2015/f-draggable/node-resize/calculate-changed-position/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/calculate-changed-size/index.mjs → esm2015/f-draggable/node-resize/calculate-changed-size/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/get-node-resize-restrictions/index.mjs → esm2015/f-draggable/node-resize/get-node-resize-restrictions/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/get-normalized-children-nodes-rect/index.mjs → esm2015/f-draggable/node-resize/get-normalized-children-nodes-rect/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/index.mjs → esm2015/f-draggable/node-resize/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/node-resize-finalize/index.mjs → esm2015/f-draggable/node-resize/node-resize-finalize/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/node-resize-finalize/providers.mjs → esm2015/f-draggable/node-resize/node-resize-finalize/providers.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/node-resize-preparation/index.mjs → esm2015/f-draggable/node-resize/node-resize-preparation/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/node-resize-preparation/providers.mjs → esm2015/f-draggable/node-resize/node-resize-preparation/providers.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/providers.mjs → esm2015/f-draggable/node-resize/providers.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/resize-direction.mjs → esm2015/f-draggable/node-resize/resize-direction.js} +0 -0
- /package/{esm2022/f-draggable/providers.mjs → esm2015/f-draggable/providers.js} +0 -0
- /package/{esm2022/f-draggable/single-select/index.mjs → esm2015/f-draggable/single-select/index.js} +0 -0
- /package/{esm2022/f-draggable/single-select/providers.mjs → esm2015/f-draggable/single-select/providers.js} +0 -0
- /package/{esm2022/f-external-item/domain/external-item-finalize/index.mjs → esm2015/f-external-item/domain/external-item-finalize/index.js} +0 -0
- /package/{esm2022/f-external-item/domain/external-item-finalize/providers.mjs → esm2015/f-external-item/domain/external-item-finalize/providers.js} +0 -0
- /package/{esm2022/f-external-item/domain/external-item-preparation/index.mjs → esm2015/f-external-item/domain/external-item-preparation/index.js} +0 -0
- /package/{esm2022/f-external-item/domain/external-item-preparation/providers.mjs → esm2015/f-external-item/domain/external-item-preparation/providers.js} +0 -0
- /package/{esm2022/f-external-item/domain/index.mjs → esm2015/f-external-item/domain/index.js} +0 -0
- /package/{esm2022/f-external-item/domain/providers.mjs → esm2015/f-external-item/domain/providers.js} +0 -0
- /package/{esm2022/f-external-item/index.mjs → esm2015/f-external-item/index.js} +0 -0
- /package/{esm2022/f-external-item/is-external-item.mjs → esm2015/f-external-item/is-external-item.js} +0 -0
- /package/{esm2022/f-external-item/providers.mjs → esm2015/f-external-item/providers.js} +0 -0
- /package/{esm2022/f-flow/index.mjs → esm2015/f-flow/index.js} +0 -0
- /package/{esm2022/f-flow/providers.mjs → esm2015/f-flow/providers.js} +0 -0
- /package/{esm2022/f-line-alignment/domain/i-line-alignment-rect.mjs → esm2015/f-line-alignment/domain/i-line-alignment-rect.js} +0 -0
- /package/{esm2022/f-line-alignment/domain/i-line-alignment-result.mjs → esm2015/f-line-alignment/domain/i-line-alignment-result.js} +0 -0
- /package/{esm2022/f-line-alignment/domain/i-nearest-coordinate-result.mjs → esm2015/f-line-alignment/domain/i-nearest-coordinate-result.js} +0 -0
- /package/{esm2022/f-line-alignment/domain/index.mjs → esm2015/f-line-alignment/domain/index.js} +0 -0
- /package/{esm2022/f-line-alignment/index.mjs → esm2015/f-line-alignment/index.js} +0 -0
- /package/{esm2022/f-line-alignment/providers.mjs → esm2015/f-line-alignment/providers.js} +0 -0
- /package/{esm2022/f-minimap/domain/calculate-flow-point-from-minimap-point/index.mjs → esm2015/f-minimap/domain/calculate-flow-point-from-minimap-point/index.js} +0 -0
- /package/{esm2022/f-minimap/domain/minimap-drag-finalize/index.mjs → esm2015/f-minimap/domain/minimap-drag-finalize/index.js} +0 -0
- /package/{esm2022/f-minimap/domain/minimap-drag-finalize/providers.mjs → esm2015/f-minimap/domain/minimap-drag-finalize/providers.js} +0 -0
- /package/{esm2022/f-minimap/domain/minimap-drag-preparation/index.mjs → esm2015/f-minimap/domain/minimap-drag-preparation/index.js} +0 -0
- /package/{esm2022/f-minimap/domain/minimap-drag-preparation/providers.mjs → esm2015/f-minimap/domain/minimap-drag-preparation/providers.js} +0 -0
- /package/{esm2022/f-minimap/domain/providers.mjs → esm2015/f-minimap/domain/providers.js} +0 -0
- /package/{esm2022/f-minimap/index.mjs → esm2015/f-minimap/index.js} +0 -0
- /package/{esm2022/f-minimap/providers.mjs → esm2015/f-minimap/providers.js} +0 -0
- /package/{esm2022/f-node/domain/index.mjs → esm2015/f-node/domain/index.js} +0 -0
- /package/{esm2022/f-node/domain/is-group.mjs → esm2015/f-node/domain/is-group.js} +0 -0
- /package/{esm2022/f-node/domain/is-node.mjs → esm2015/f-node/domain/is-node.js} +0 -0
- /package/{esm2022/f-node/f-drag-handle/index.mjs → esm2015/f-node/f-drag-handle/index.js} +0 -0
- /package/{esm2022/f-node/f-resize-handle/e-f-resize-handle-type.mjs → esm2015/f-node/f-resize-handle/e-f-resize-handle-type.js} +0 -0
- /package/{esm2022/f-node/f-resize-handle/index.mjs → esm2015/f-node/f-resize-handle/index.js} +0 -0
- /package/{esm2022/f-node/f-resize-observer.mjs → esm2015/f-node/f-resize-observer.js} +0 -0
- /package/{esm2022/f-node/f-rotate-handle/index.mjs → esm2015/f-node/f-rotate-handle/index.js} +0 -0
- /package/{esm2022/f-node/index.mjs → esm2015/f-node/index.js} +0 -0
- /package/{esm2022/f-node/providers.mjs → esm2015/f-node/providers.js} +0 -0
- /package/{esm2022/f-selection-area/domain/index.mjs → esm2015/f-selection-area/domain/index.js} +0 -0
- /package/{esm2022/f-selection-area/domain/providers.mjs → esm2015/f-selection-area/domain/providers.js} +0 -0
- /package/{esm2022/f-selection-area/domain/selection-area-finalize/index.mjs → esm2015/f-selection-area/domain/selection-area-finalize/index.js} +0 -0
- /package/{esm2022/f-selection-area/domain/selection-area-finalize/providers.mjs → esm2015/f-selection-area/domain/selection-area-finalize/providers.js} +0 -0
- /package/{esm2022/f-selection-area/domain/selection-area-preparation/index.mjs → esm2015/f-selection-area/domain/selection-area-preparation/index.js} +0 -0
- /package/{esm2022/f-selection-area/domain/selection-area-preparation/providers.mjs → esm2015/f-selection-area/domain/selection-area-preparation/providers.js} +0 -0
- /package/{esm2022/f-selection-area/index.mjs → esm2015/f-selection-area/index.js} +0 -0
- /package/{esm2022/f-selection-area/providers.mjs → esm2015/f-selection-area/providers.js} +0 -0
- /package/{esm2022/f-storage/index.mjs → esm2015/f-storage/index.js} +0 -0
- /package/{esm2022/f-zoom/index.mjs → esm2015/f-zoom/index.js} +0 -0
- /package/{esm2022/f-zoom/providers.mjs → esm2015/f-zoom/providers.js} +0 -0
- /package/{esm2022/foblex-flow.mjs → esm2015/foblex-flow.js} +0 -0
- /package/{esm2022/i-has-state-changes.mjs → esm2015/i-has-state-changes.js} +0 -0
- /package/{index.d.ts → foblex-flow.d.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
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/clear-selection/clear-selection.request.ts","../../../projects/f-flow/src/infrastructure/pipeline/pipeline.ts","../../../projects/f-flow/src/infrastructure/f-mediator/f-flow-mediator.ts","../../../projects/f-flow/src/infrastructure/f-mediator/f-execution-register.ts","../../../projects/f-flow/src/infrastructure/f-mediator/f-validator-register.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-draggable-data-context.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas.drag-handler.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.request.ts","../../../projects/f-flow/src/f-storage/f-components-store.ts","../../../projects/f-flow/src/f-storage/f-transform-store.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/canvas/providers.ts","../../../projects/f-flow/src/f-connectors/e-f-connectable-side.ts","../../../projects/f-flow/src/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.ts","../../../projects/f-flow/src/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.ts","../../../projects/f-flow/src/f-connectors/f-connector-base.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input-base.ts","../../../projects/f-flow/src/f-connectors/f-node-input/is-node-input.ts","../../../projects/f-flow/src/f-node/domain/is-group.ts","../../../projects/f-flow/src/f-node/domain/is-node.ts","../../../projects/f-flow/src/f-node/f-drag-handle/f-drag-handle.directive.ts","../../../projects/f-flow/src/f-node/f-resize-handle/e-f-resize-handle-type.ts","../../../projects/f-flow/src/f-node/f-resize-handle/f-resize-handle.directive.ts","../../../projects/f-flow/src/f-node/f-rotate-handle/f-rotate-handle.directive.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points.handler.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.ts","../../../projects/f-flow/src/f-connection/common/domain/f-bezier.path-builder.ts","../../../projects/f-flow/src/f-connection/common/domain/f-segment.path-builder.ts","../../../projects/f-flow/src/f-connection/common/domain/f-straight.path-builder.ts","../../../projects/f-flow/src/f-connection/common/f-connection-identifiers.ts","../../../projects/f-flow/src/f-connection/common/f-connection.injection-token.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text-path.directive.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/i-connection-text.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text.component.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text.component.html","../../../projects/f-flow/src/f-connection/common/f-drag-handle/f-connection-drag-handle.component.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/i-connection-gradient.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/f-connection-gradient.component.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/f-connection-gradient.component.html","../../../projects/f-flow/src/f-connection/common/f-path/i-connection-path.ts","../../../projects/f-flow/src/f-connection/common/f-path/get-path-marker-id.ts","../../../projects/f-flow/src/f-connection/common/f-path/f-connection-path.component.ts","../../../projects/f-flow/src/f-connection/common/f-selection/f-connection-selection.component.ts","../../../projects/f-flow/src/f-connection/common/mixins/change-connection-selection.mixin.ts","../../../projects/f-flow/src/f-connection/common/mixins/change-connection-visibility.mixin.ts","../../../projects/f-flow/src/f-connection/f-connection-builder/f-connection-builders.ts","../../../projects/f-flow/src/f-connection/f-connection-builder/f-connection-factory.ts","../../../projects/f-flow/src/f-connection/common/f-connection-base.ts","../../../projects/f-flow/src/f-connection/common/e-f-connection-behavior.ts","../../../projects/f-flow/src/f-connection/common/e-f-connection-type.ts","../../../projects/f-flow/src/f-connection/f-connection-center/f-connection-center.directive.ts","../../../projects/f-flow/src/f-connection/f-connection-for-create/f-connection-for-create.component.ts","../../../projects/f-flow/src/f-connection/f-connection-for-create/f-connection-for-create.component.html","../../../projects/f-flow/src/f-connection/f-connection/f-connection.component.ts","../../../projects/f-flow/src/f-connection/f-connection/f-connection.component.html","../../../projects/f-flow/src/f-connection/f-marker/e-f-marker-type.ts","../../../projects/f-flow/src/f-connection/f-marker/f-marker-base.ts","../../../projects/f-flow/src/f-connection/f-marker/f-marker.directive.ts","../../../projects/f-flow/src/f-connection/providers.ts","../../../projects/f-flow/src/f-node/f-node-base.ts","../../../projects/f-flow/src/f-node/f-resize-observer.ts","../../../projects/f-flow/src/f-node/f-group.directive.ts","../../../projects/f-flow/src/f-node/f-node.directive.ts","../../../projects/f-flow/src/f-node/providers.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input.directive.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/f-node-outlet-base.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/is-node-outlet.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/f-node-outlet.directive.ts","../../../projects/f-flow/src/f-connectors/f-node-output/f-node-output-base.ts","../../../projects/f-flow/src/f-connectors/f-node-output/is-node-output.ts","../../../projects/f-flow/src/f-connectors/f-node-output/f-node-output.directive.ts","../../../projects/f-flow/src/f-connectors/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.request.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.ts","../../../projects/f-flow/src/errors/create-error-class.ts","../../../projects/f-flow/src/errors/not-found-error.ts","../../../projects/f-flow/src/errors/conflict-error.ts","../../../projects/f-flow/src/errors/errors.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/f-create-connection.event.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.request.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/f-reassign-connection.event.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/connections/providers.ts","../../../projects/f-flow/src/f-draggable/domain/get-node-padding/get-node-padding.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-node-padding/get-node-padding.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-parent-nodes/get-parent-nodes.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.ts","../../../projects/f-flow/src/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.ts","../../../projects/f-flow/src/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.ts","../../../projects/f-flow/src/f-draggable/domain/providers.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.request.ts","../../../projects/f-flow/src/f-draggable/node/connection-base-drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection-target.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.request.ts","../../../projects/f-flow/src/f-draggable/node/connection-source.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.ts","../../../projects/f-flow/src/f-draggable/node/node.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/node-resize-by-child.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.request.ts","../../../projects/f-flow/src/domain/is-connection-under-node/is-connection-under-node.request.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/node/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/resize-direction.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/providers.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.request.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.execution.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.validator.ts","../../../projects/f-flow/src/f-draggable/single-select/providers.ts","../../../projects/f-flow/src/f-draggable/f-draggable-base.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.request.ts","../../../projects/f-flow/src/f-external-item/domain/f-create-node.event.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.execution.ts","../../../projects/f-flow/src/f-external-item/domain/external-item.drag-handler.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.validator.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/providers.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.request.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.execution.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.validator.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/providers.ts","../../../projects/f-flow/src/f-external-item/domain/providers.ts","../../../projects/f-flow/src/f-external-item/f-external-item-base.ts","../../../projects/f-flow/src/f-external-item/is-external-item.ts","../../../projects/f-flow/src/f-external-item/f-external-item.service.ts","../../../projects/f-flow/src/f-external-item/f-external-item.directive.ts","../../../projects/f-flow/src/f-external-item/providers.ts","../../../projects/f-flow/src/f-draggable/i-f-drag-and-drop-plugin.ts","../../../projects/f-flow/src/f-draggable/f-draggable.directive.ts","../../../projects/f-flow/src/f-draggable/f-selection-change-event.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.ts","../../../projects/f-flow/src/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.ts","../../../projects/f-flow/src/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap.drag-handler.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/providers.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/providers.ts","../../../projects/f-flow/src/f-minimap/domain/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.ts","../../../projects/f-flow/src/domain/get-can-be-selected-items/get-can-be-selected-items-request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area.drag-handle.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/providers.ts","../../../projects/f-flow/src/f-draggable/providers.ts","../../../projects/f-flow/src/domain/clear-selection/clear-selection.execution.ts","../../../projects/f-flow/src/domain/create-connection-markers/create-connection-markers-request.ts","../../../projects/f-flow/src/domain/create-connection-markers/create-connection-markers.execution.ts","../../../projects/f-flow/src/domain/emit-transform-changes/emit-transform-changes.request.ts","../../../projects/f-flow/src/domain/emit-transform-changes/emit-transform-changes.execution.ts","../../../projects/f-flow/src/domain/get-element-rect-in-flow/get-element-rect-in-flow-request.ts","../../../projects/f-flow/src/domain/intersections/e-f-connector-shape.ts","../../../projects/f-flow/src/domain/intersections/rounded-rect/rounded-rect.ts","../../../projects/f-flow/src/domain/intersections/f-connector-shape.extensions.ts","../../../projects/f-flow/src/domain/intersections/intersection-finder.ts","../../../projects/f-flow/src/domain/get-element-rect-in-flow/get-element-rect-in-flow.execution.ts","../../../projects/f-flow/src/domain/get-can-be-selected-items/get-can-be-selected-items.execution.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.ts","../../../projects/f-flow/src/domain/get-connection-line/get-connection-line.request.ts","../../../projects/f-flow/src/domain/get-connection-line/get-connection-line.execution.ts","../../../projects/f-flow/src/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.request.ts","../../../projects/f-flow/src/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.execution.ts","../../../projects/f-flow/src/domain/get-input-rect-in-flow/get-input-rect-in-flow-request.ts","../../../projects/f-flow/src/domain/get-input-rect-in-flow/get-input-rect-in-flow-response.ts","../../../projects/f-flow/src/domain/get-input-rect-in-flow/get-input-rect-in-flow.execution.ts","../../../projects/f-flow/src/domain/get-nodes-rect/get-nodes-rect.request.ts","../../../projects/f-flow/src/domain/get-nodes-rect/get-nodes-rect.execution.ts","../../../projects/f-flow/src/domain/get-output-rect-in-flow/get-output-rect-in-flow-request.ts","../../../projects/f-flow/src/domain/get-output-rect-in-flow/get-output-rect-in-flow-response.ts","../../../projects/f-flow/src/domain/get-output-rect-in-flow/get-output-rect-in-flow.execution.ts","../../../projects/f-flow/src/domain/get-position-in-flow/get-position-in-flow-request.ts","../../../projects/f-flow/src/domain/get-position-in-flow/get-position-in-flow.execution.ts","../../../projects/f-flow/src/domain/get-selection/get-selection.request.ts","../../../projects/f-flow/src/domain/get-selection/get-selection.execution.ts","../../../projects/f-flow/src/domain/is-connection-under-node/is-connection-under-node.execution.ts","../../../projects/f-flow/src/domain/redraw-connections/redraw-connections-request.ts","../../../projects/f-flow/src/domain/redraw-connections/redraw-connections.execution.ts","../../../projects/f-flow/src/domain/select/select.request.ts","../../../projects/f-flow/src/domain/select/select.execution.ts","../../../projects/f-flow/src/domain/select-all/select-all.request.ts","../../../projects/f-flow/src/domain/select-all/select-all.execution.ts","../../../projects/f-flow/src/domain/select-and-update-node-layer/select-and-update-node-layer.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.execution.ts","../../../projects/f-flow/src/domain/select-and-update-node-layer/select-and-update-node-layer.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-item-layers.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-item-layers.execution.ts","../../../projects/f-flow/src/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.request.ts","../../../projects/f-flow/src/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.execution.ts","../../../projects/f-flow/src/domain/cast-to-enum.ts","../../../projects/f-flow/src/domain/create-dom-element.ts","../../../projects/f-flow/src/domain/deep-clone-node.ts","../../../projects/f-flow/src/domain/get-value-from-data-attr.ts","../../../projects/f-flow/src/domain/is-element-with-class.ts","../../../projects/f-flow/src/domain/providers.ts","../../../projects/f-flow/src/f-backgroud/f-rect-pattern/f-rect-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-circle-pattern/f-circle-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-background-base.ts","../../../projects/f-flow/src/f-backgroud/f-background.component.ts","../../../projects/f-flow/src/f-backgroud/f-background.component.html","../../../projects/f-flow/src/f-backgroud/providers.ts","../../../projects/f-flow/src/f-canvas/domain/f-canvas-change.event.ts","../../../projects/f-flow/src/f-canvas/f-canvas-base.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.html","../../../projects/f-flow/src/f-canvas/providers.ts","../../../projects/f-flow/src/f-line-alignment/domain/line-element.ts","../../../projects/f-flow/src/f-line-alignment/domain/line-service.ts","../../../projects/f-flow/src/f-line-alignment/domain/nearest-coordinate.ts","../../../projects/f-flow/src/f-line-alignment/f-line-alignment-base.ts","../../../projects/f-flow/src/f-line-alignment/f-line-alignment.component.ts","../../../projects/f-flow/src/f-line-alignment/providers.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap-data.ts","../../../projects/f-flow/src/f-minimap/f-minimap-flow.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap-canvas.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap-view.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap.component.ts","../../../projects/f-flow/src/f-minimap/f-minimap.component.html","../../../projects/f-flow/src/f-minimap/providers.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area-base.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area.component.ts","../../../projects/f-flow/src/f-selection-area/providers.ts","../../../projects/f-flow/src/f-flow/f-flow-base.ts","../../../projects/f-flow/src/f-flow/f-flow.component.ts","../../../projects/f-flow/src/f-flow/f-flow.component.html","../../../projects/f-flow/src/f-flow/providers.ts","../../../projects/f-flow/src/f-zoom/f-zoom-base.ts","../../../projects/f-flow/src/f-zoom/f-zoom.directive.ts","../../../projects/f-flow/src/f-zoom/providers.ts","../../../projects/f-flow/src/f-flow.module.ts","../../../projects/f-flow/src/foblex-flow.ts"],"sourcesContent":["import { ITransformModel } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_BACKGROUND_PATTERN = new InjectionToken<IFBackgroundPattern>('F_BACKGROUND_PATTERN');\n\nexport interface IFBackgroundPattern {\n\n setTransform(transform: ITransformModel): void;\n}\n","export class ClearSelectionRequest {\n\n}\n","import { IHandler } from '@foblex/core';\nimport { IValidator } from './i-validator';\nimport { IExecution } from './i-execution';\nimport { Injector, Type } from '@angular/core';\n\nexport class Pipeline<TRequest, TResponse>\n implements IHandler<TRequest, TResponse | void> {\n\n private validator?: Type<IValidator<TRequest>>;\n private execution!: Type<IExecution<TRequest, TResponse>>;\n\n public handle(request: TRequest, injector: Injector): TResponse | void {\n let isValid: boolean = true;\n if (this.validator) {\n isValid = injector.get(this.validator).handle(request);\n }\n\n if (!isValid) {\n return;\n }\n return injector.get(this.execution).handle(request);\n }\n\n public setValidator(validator: Type<IValidator<TRequest>>): void {\n this.validator = validator;\n }\n\n public setExecution(execution: Type<IExecution<TRequest, TResponse>>): void {\n this.execution = execution;\n }\n}\n","import { Injectable, Injector, Type } from '@angular/core';\nimport { IExecution, IValidator, Pipeline } from '../pipeline';\n\n@Injectable()\nexport class FFlowMediator {\n\n constructor(\n private injector: Injector,\n ) {\n }\n\n public static pipelines = new Map<string, Pipeline<any, any>>();\n\n public static registerPipeline<TRequest, TResponse>(\n type: Type<TRequest>,\n handler: Type<IValidator<TRequest>> | Type<IExecution<TRequest, TResponse>>,\n isValidator: boolean\n ): void {\n const pipeline = this.pipelines.get(type.name) || new Pipeline<TRequest, TResponse>();\n isValidator\n ? pipeline.setValidator(handler as Type<IValidator<TRequest>>)\n : pipeline.setExecution(handler as Type<IExecution<TRequest, TResponse>>);\n\n this.pipelines.set(type.name, pipeline);\n }\n\n public send<TResponse>(request: any): TResponse {\n const pipeline = FFlowMediator.pipelines.get(request.constructor.name);\n if (pipeline) {\n return pipeline.handle(request, this.injector);\n }\n\n throw new Error('Handler not registered for request type.');\n }\n}\n","import { Type } from '@angular/core';\nimport { FFlowMediator } from './f-flow-mediator';\nimport { IExecution } from '../pipeline';\n\ntype Constructor<T = any> = new (...args: any[]) => T;\n\nexport function FExecutionRegister<TRequest, TResponse>(requestType: Type<TRequest>) {\n return function (constructor: Constructor<IExecution<TRequest, TResponse>>) {\n FFlowMediator.registerPipeline(requestType, constructor, false);\n };\n}\n","import { Type } from '@angular/core';\nimport { FFlowMediator } from './f-flow-mediator';\nimport { IValidator } from '../pipeline';\n\ntype Constructor<T = any> = new (...args: any[]) => T;\n\nexport function FValidatorRegister<TRequest, TResponse>(requestType: Type<TRequest>) {\n return function (constructor: Constructor<IValidator<TRequest>>) {\n FFlowMediator.registerPipeline(requestType, constructor, true);\n };\n}\n","import { IPointerEvent } from '@foblex/core';\n\nexport class CanvasMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Point } from '@foblex/core';\nimport { IDraggableItem } from './i-draggable-item';\nimport { ISelectable } from '../f-connection';\nimport { FLineAlignmentBase } from '../f-line-alignment';\n\n@Injectable()\nexport class FDraggableDataContext {\n\n public selectedItems: ISelectable[] = [];\n\n public isSelectedChanged: boolean = false;\n\n public onPointerDownScale: number = 1;\n\n public onPointerDownPosition: Point = new Point(0, 0);\n\n public draggableItems: IDraggableItem[] = [];\n\n public fLineAlignment: FLineAlignmentBase | undefined;\n\n public reset(): void {\n this.draggableItems = [];\n this.onPointerDownScale = 1;\n this.onPointerDownPosition = new Point(0, 0);\n }\n\n public markSelectionAsChanged(): void {\n this.isSelectedChanged = true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMoveFinalizeRequest } from './canvas-move-finalize.request';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\n\n@Injectable()\n@FExecutionRegister(CanvasMoveFinalizeRequest)\nexport class CanvasMoveFinalizeExecution implements IExecution<CanvasMoveFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: CanvasMoveFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => x.complete?.());\n }\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class CanvasDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public initialize(): void {\n this.onPointerDownPosition = this.fComponentsStore.fCanvas!.transform.position;\n }\n\n public move(difference: IPoint): void {\n this.fComponentsStore.fCanvas!.setPosition(Point.fromPoint(this.onPointerDownPosition).add(difference));\n this.fComponentsStore.fCanvas!.redraw();\n }\n\n public complete(): void {\n this.fComponentsStore.fCanvas!.completeDrag();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMoveFinalizeRequest } from './canvas-move-finalize.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CanvasDragHandler } from '../canvas.drag-handler';\n\n@Injectable()\n@FValidatorRegister(CanvasMoveFinalizeRequest)\nexport class CanvasMoveFinalizeValidator implements IValidator<CanvasMoveFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CanvasMoveFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CanvasDragHandler\n );\n }\n}\n","import { CanvasMoveFinalizeExecution } from './canvas-move-finalize.execution';\nimport { CanvasMoveFinalizeValidator } from './canvas-move-finalize.validator';\n\nexport const CANVAS_MOVE_FINALIZE_PROVIDERS = [\n\n CanvasMoveFinalizeExecution,\n\n CanvasMoveFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class CanvasMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { ITransformModel } from '@foblex/core';\nimport { FConnectionBase, FMarkerBase } from '../f-connection';\nimport { FFlowBase } from '../f-flow';\nimport { FCanvasBase } from '../f-canvas';\nimport { FBackgroundBase } from '../f-backgroud';\nimport { FNodeBase } from '../f-node';\nimport { FConnectorBase } from '../f-connectors';\nimport { FDraggableBase } from '../f-draggable';\n\n@Injectable()\nexport class FComponentsStore {\n\n private readonly componentsDataChanges: Subject<void> = new Subject<void>();\n public get componentsData$(): Observable<void> {\n return this.componentsDataChanges.asObservable();\n }\n\n private readonly componentsCountChanges: Subject<void> = new Subject<void>();\n public get componentsCount$(): Observable<void> {\n return this.componentsCountChanges.asObservable();\n }\n\n public get flowHost(): HTMLElement {\n return this.fFlow?.hostElement!;\n }\n\n public get transform(): ITransformModel {\n return this.fCanvas?.transform!;\n }\n\n public fFlow: FFlowBase | undefined;\n\n public fCanvas: FCanvasBase | undefined;\n\n public fBackground: FBackgroundBase | undefined;\n\n public fNodes: FNodeBase[] = [];\n\n public fConnections: FConnectionBase[] = [];\n\n public fTempConnection: FConnectionBase | undefined;\n\n public fMarkers: FMarkerBase[] = [];\n\n public fOutputs: FConnectorBase[] = [];\n\n public fInputs: FConnectorBase[] = [];\n\n public fOutlets: FConnectorBase[] = [];\n\n public fDraggable: FDraggableBase | undefined;\n\n public findNode(element: HTMLElement | SVGElement): FNodeBase | undefined {\n return this.fNodes.find(n => n.isContains(element));\n }\n\n public addComponent<T>(collection: T[], component: T): void {\n collection.push(component);\n this.componentsCountChanges.next();\n }\n\n public removeComponent<T>(collection: T[], component: T): void {\n const index = collection.indexOf(component);\n if (index > -1) {\n collection.splice(index, 1);\n this.componentsCountChanges.next();\n }\n }\n\n public componentDataChanged(): void {\n this.componentsDataChanges.next();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class FTransformStore {\n\n public readonly changes: Subject<void> = new Subject<void>();\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMovePreparationRequest } from './canvas-move-preparation.request';\nimport { Point } from '@foblex/core';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CanvasDragHandler } from '../canvas.drag-handler';\n\n@Injectable()\n@FExecutionRegister(CanvasMovePreparationRequest)\nexport class CanvasMovePreparationExecution implements IExecution<CanvasMovePreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: CanvasMovePreparationRequest): void {\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost);\n this.fDraggableDataContext.draggableItems = [\n new CanvasDragHandler(this.fComponentsStore)\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMovePreparationRequest } from './canvas-move-preparation.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\nimport { isElementWithClass } from '../../../domain';\n\n@Injectable()\n@FValidatorRegister(CanvasMovePreparationRequest)\nexport class CanvasMovePreparationValidator implements IValidator<CanvasMovePreparationRequest> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CanvasMovePreparationRequest): boolean {\n return !this.fDraggableDataContext.draggableItems.length &&\n (this.isBackgroundElement(request.event.targetElement) || this.isDragOnHost(request.event.targetElement));\n }\n\n private isBackgroundElement(targetElement: HTMLElement): boolean | undefined {\n return this.fComponentsStore.fBackground?.isBackgroundElement(targetElement);\n }\n\n private isDragOnHost(targetElement: HTMLElement): boolean {\n return this.flowHost.contains(targetElement) && !this.getNode(targetElement);\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n let result = this.fComponentsStore.findNode(targetElement);\n // if (result && result.fDraggingDisabled || !this.isNodeHasDragHandle(targetElement)) {\n if (result && result.fDraggingDisabled) {\n result = undefined;\n }\n return result;\n }\n\n private isNodeHasDragHandle(targetElement: HTMLElement): boolean {\n return isElementWithClass(targetElement, '.f-drag-handle');\n }\n}\n","import { CanvasMovePreparationExecution } from './canvas-move-preparation.execution';\nimport { CanvasMovePreparationValidator } from './canvas-move-preparation.validator';\n\nexport const CANVAS_MOVE_PREPARATION_PROVIDERS = [\n\n CanvasMovePreparationExecution,\n\n CanvasMovePreparationValidator,\n];\n","import { CANVAS_MOVE_PREPARATION_PROVIDERS } from './canvas-move-preparation';\nimport { CANVAS_MOVE_FINALIZE_PROVIDERS } from './canvas-move-finalize';\n\nexport const CANVAS_PROVIDERS = [\n\n ...CANVAS_MOVE_FINALIZE_PROVIDERS,\n\n ...CANVAS_MOVE_PREPARATION_PROVIDERS,\n];\n","export enum EFConnectableSide {\n\n LEFT = 'left',\n\n RIGHT = 'right',\n\n TOP = 'top',\n\n BOTTOM = 'bottom',\n\n AUTO = 'auto',\n}\n","import { IHandler, RectExtensions } from '@foblex/core';\nimport { CalculateConnectorConnectableSideRequest } from './calculate-connector-connectable-side-request';\nimport { EFConnectableSide } from '../../e-f-connectable-side';\n\nexport class CalculateConnectorConnectableSideHandler\n implements IHandler<CalculateConnectorConnectableSideRequest, EFConnectableSide> {\n\n public handle(request: CalculateConnectorConnectableSideRequest): EFConnectableSide {\n let result: EFConnectableSide;\n\n if (request.fConnector._fConnectableSide === EFConnectableSide.AUTO) {\n result = this.getSideByDelta(request.fConnector.hostElement, request.fNodeHost);\n } else {\n result = request.fConnector._fConnectableSide;\n }\n return result;\n }\n\n private getSideByDelta(fConnectorHost: HTMLElement | SVGElement, fNodeHost: HTMLElement | SVGElement): EFConnectableSide {\n let result: EFConnectableSide;\n\n const childRect = RectExtensions.fromElement(fConnectorHost);\n const parentRect = fNodeHost.getBoundingClientRect();\n\n const deltaLeft = childRect.gravityCenter.x - parentRect.left;\n const deltaRight = parentRect.right - childRect.gravityCenter.x;\n const deltaTop = childRect.gravityCenter.y - parentRect.top;\n const deltaBottom = parentRect.bottom - childRect.gravityCenter.y;\n\n const minDelta = Math.min(deltaLeft, deltaRight, deltaTop, deltaBottom);\n\n if (minDelta === deltaLeft) {\n result = EFConnectableSide.LEFT;\n } else if (minDelta === deltaRight) {\n result = EFConnectableSide.RIGHT;\n } else if (minDelta === deltaTop) {\n result = EFConnectableSide.TOP;\n } else {\n result = EFConnectableSide.BOTTOM;\n }\n\n return result;\n }\n}\n","import { FConnectorBase } from '../../f-connector-base';\n\nexport class CalculateConnectorConnectableSideRequest {\n\n constructor(\n public fConnector: FConnectorBase,\n public fNodeHost: HTMLElement | SVGElement\n ) {\n }\n}\n","import { Subject } from 'rxjs';\nimport { IHasHostElement } from '@foblex/core';\nimport { EFConnectableSide } from './e-f-connectable-side';\nimport { IHasStateChanges } from '../i-has-state-changes';\n\nexport abstract class FConnectorBase implements IHasStateChanges, IHasHostElement {\n\n public abstract id: string;\n\n public abstract disabled: boolean;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract canBeConnected: boolean;\n\n public abstract isConnected: boolean;\n\n public isSelfConnectable: boolean = true;\n\n public fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_INPUT = new InjectionToken<FNodeInputBase>('F_NODE_INPUT');\n\n@Directive()\nexport abstract class FNodeInputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public isConnected: boolean = false;\n\n public get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export function isNodeInput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeInput]');\n}\n","export function isGroup(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fGroup]');\n}\n\n","export function isNode(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNode]');\n}\n\n","import {\n Directive, ElementRef, InjectionToken\n} from \"@angular/core\";\nimport { IHasHostElement } from '@foblex/core';\n\nexport const F_DRAG_HANDLE: InjectionToken<FDragHandleDirective> = new InjectionToken<FDragHandleDirective>('F_DRAG_HANDLE');\n\n@Directive({\n selector: \"[fDragHandle]\",\n host: {\n class: \"f-drag-handle f-component\"\n },\n providers: [ { provide: F_DRAG_HANDLE, useExisting: FDragHandleDirective } ],\n})\nexport class FDragHandleDirective implements IHasHostElement {\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","export enum EFResizeHandleType {\n\n LEFT_TOP = 'left-top',\n\n RIGHT_TOP = 'right-top',\n\n LEFT_BOTTOM = 'left-bottom',\n\n RIGHT_BOTTOM = 'right-bottom',\n}\n","import {\n Directive, ElementRef, HostBinding, InjectionToken, Input\n} from \"@angular/core\";\nimport { IHasHostElement } from '@foblex/core';\nimport { EFResizeHandleType } from './e-f-resize-handle-type';\nimport { castToEnum } from '../../domain';\n\nexport const F_RESIZE_HANDLE: InjectionToken<FResizeHandleDirective> = new InjectionToken<FResizeHandleDirective>('F_RESIZE_HANDLE');\n\n@Directive({\n selector: \"[fResizeHandle]\",\n host: {\n class: `f-resize-handle f-component`,\n '[attr.data-f-resize-handle-type]': 'type',\n },\n providers: [ { provide: F_RESIZE_HANDLE, useExisting: FResizeHandleDirective } ],\n})\nexport class FResizeHandleDirective implements IHasHostElement {\n\n public _type: EFResizeHandleType = EFResizeHandleType.LEFT_TOP;\n @Input('fResizeHandleType')\n public set type(type: EFResizeHandleType) {\n this._type = castToEnum(type, 'fResizeHandleType', EFResizeHandleType);\n }\n public get type(): EFResizeHandleType {\n return this._type;\n }\n\n @HostBinding('class')\n public get typeClass(): string {\n return `f-resize-handle-${ EFResizeHandleType[ this.type.toUpperCase() as keyof typeof EFResizeHandleType ] }`;\n }\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","import {\n Directive, ElementRef, InjectionToken, Input\n} from \"@angular/core\";\nimport { BooleanExtensions, IHasHostElement } from '@foblex/core';\n\n// export const F_ROTATE_HANDLE: InjectionToken<FRotateHandleDirective> = new InjectionToken<FRotateHandleDirective>('F_ROTATE_HANDLE');\n//\n// @Directive({\n// selector: \"[fRotateHandle]\",\n// host: {\n// class: `f-rotate-handle f-component`,\n// '[class.f-rotate-handle-disabled]': 'disabled',\n// },\n// providers: [ { provide: F_ROTATE_HANDLE, useExisting: FRotateHandleDirective } ],\n// })\nexport class FRotateHandleDirective implements IHasHostElement {\n\n private isDisabled: boolean = false;\n // @Input('fRotateHandleDisabled')\n // public set disabled(isDisabled: boolean | undefined | string) {\n // this.isDisabled = BooleanExtensions.castToBoolean(isDisabled);\n // }\n public get disabled(): boolean {\n return this.isDisabled;\n }\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","import { IHandler, IPoint, PointExtensions } from '@foblex/core';\nimport { CalculateCenterBetweenPointsRequest } from './calculate-center-between-points-request';\n\nexport class CalculateCenterBetweenPointsHandler\n implements IHandler<CalculateCenterBetweenPointsRequest, IPoint> {\n\n public handle(request: CalculateCenterBetweenPointsRequest): IPoint {\n const { source, target } = request;\n\n const offsetX = Math.abs(target.x - source.x) / 2;\n const centerX = (target.x < source.x) ? target.x + offsetX : target.x - offsetX;\n\n const offsetY = Math.abs(target.y - source.y) / 2;\n const centerY = (target.y < source.y) ? target.y + offsetY : target.y - offsetY;\n\n return PointExtensions.initialize(centerX, centerY);\n }\n}\n","import { IPoint } from '@foblex/core';\n\nexport class CalculateCenterBetweenPointsRequest {\n\n constructor(\n public source: IPoint,\n public target: IPoint,\n ) {\n }\n}\n","import { IHandler, IPoint } from '@foblex/core';\nimport { CalculateConnectionCenterRequest } from './calculate-connection-center-request';\n\nexport class CalculateConnectionCenterHandler\n implements IHandler<CalculateConnectionCenterRequest, IPoint> {\n\n public handle(request: CalculateConnectionCenterRequest): IPoint {\n\n const { points } = request;\n let totalDistance = 0;\n let distances: number[] = [];\n\n for (let i = 0; i < points.length - 1; i++) {\n const distance = this.calculateDistance(points[ i ], points[ i + 1 ]);\n distances.push(distance);\n totalDistance += distance;\n }\n\n let accumulatedDistance = 0;\n let centerIndex = 0;\n const halfTotalDistance = totalDistance / 2;\n for (let i = 0; i < distances.length; i++) {\n accumulatedDistance += distances[ i ];\n if (accumulatedDistance >= halfTotalDistance) {\n centerIndex = i;\n break;\n }\n }\n\n const remainingDistanceToCenter = halfTotalDistance - (accumulatedDistance - distances[ centerIndex ]);\n\n return this.findPointAtDistance(points[ centerIndex ], points[ centerIndex + 1 ], remainingDistanceToCenter);\n }\n\n private calculateDistance(pointA: IPoint, pointB: IPoint): number {\n return Math.sqrt(Math.pow(pointB.x - pointA.x, 2) + Math.pow(pointB.y - pointA.y, 2));\n }\n\n private findPointAtDistance(startPoint: IPoint, endPoint: IPoint, distance: number): IPoint {\n const totalDistance = this.calculateDistance(startPoint, endPoint);\n const ratio = distance / totalDistance;\n const x = (1 - ratio) * startPoint.x + ratio * endPoint.x;\n const y = (1 - ratio) * startPoint.y + ratio * endPoint.y;\n return { x, y };\n }\n}\n","import { IPoint } from '@foblex/core';\n\nexport class CalculateConnectionCenterRequest {\n\n constructor(\n public points: IPoint[],\n ) {\n }\n}\n","import { IPoint } from '@foblex/core';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\n\nexport class FBezierPathBuilder implements IFConnectionBuilder {\n\n private static getConnectorOffset(distance: number, offset: number): number {\n if (distance >= offset) {\n return distance;\n }\n return offset * Math.sqrt(offset - distance);\n }\n\n private static getAnglePoint(side: EFConnectableSide, source: IPoint, target: IPoint, offset: number): IPoint {\n\n let result: IPoint = { x: source.x, y: source.y };\n\n switch (side) {\n case EFConnectableSide.LEFT:\n result.x -= FBezierPathBuilder.getConnectorOffset(source.x - target.x, offset);\n break;\n case EFConnectableSide.RIGHT:\n result.x += FBezierPathBuilder.getConnectorOffset(target.x - source.x, offset);\n break;\n case EFConnectableSide.TOP:\n result.y -= FBezierPathBuilder.getConnectorOffset(source.y - target.y, offset);\n break;\n case EFConnectableSide.BOTTOM:\n result.y += FBezierPathBuilder.getConnectorOffset(target.y - source.y, offset);\n break;\n }\n\n return result;\n }\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, sourceSide, target, targetSide, offset } = request;\n\n const sourceAnglePoint = FBezierPathBuilder.getAnglePoint(sourceSide, source, target, offset);\n\n const targetAnglePoint = FBezierPathBuilder.getAnglePoint(targetSide, target, source, offset);\n\n const path = `M ${ source.x } ${ source.y } C ${ sourceAnglePoint.x } ${ sourceAnglePoint.y }, ${ targetAnglePoint.x } ${ targetAnglePoint.y }, ${ target.x + 0.0002 } ${ target.y + 0.0002 }`;\n\n const connectionCenter = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest([ source, sourceAnglePoint, targetAnglePoint, target ])\n );\n\n return { path, connectionCenter, penultimatePoint: targetAnglePoint };\n }\n}\n","import { IMap, IPoint, PointExtensions } from '@foblex/core';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport {\n CalculateCenterBetweenPointsHandler,\n CalculateCenterBetweenPointsRequest\n} from './calculate-center-between-points';\nimport { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\n\nconst CONNECTOR_SIDE_POINT: IMap<IPoint> = {\n\n [ EFConnectableSide.LEFT ]: PointExtensions.initialize(-1, 0),\n\n [ EFConnectableSide.RIGHT ]: PointExtensions.initialize(1, 0),\n\n [ EFConnectableSide.TOP ]: PointExtensions.initialize(0, -1),\n\n [ EFConnectableSide.BOTTOM ]: PointExtensions.initialize(0, 1),\n\n [ EFConnectableSide.AUTO ]: PointExtensions.initialize(0, 0),\n};\n\nexport class FSegmentPathBuilder implements IFConnectionBuilder {\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, sourceSide, target, targetSide } = request;\n\n const { points, center } = this.getPathPoints(\n source,\n sourceSide,\n target,\n targetSide,\n request.offset\n );\n\n const path = this.buildPath(points, request.radius);\n\n const penultimatePoint = points.length > 1 ? points[ points.length - 2 ] : source;\n\n return { path, connectionCenter: center, penultimatePoint };\n }\n\n private getPathPoints(\n source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide, offset: number\n ): { points: IPoint[], center: IPoint } {\n\n const sourceDirection = CONNECTOR_SIDE_POINT[ sourceSide ];\n const targetDirection = CONNECTOR_SIDE_POINT[ targetSide ];\n\n const sourceGap: IPoint = { x: source.x + sourceDirection.x * offset, y: source.y + sourceDirection.y * offset };\n const targetGap: IPoint = { x: target.x + targetDirection.x * offset, y: target.y + targetDirection.y * offset };\n\n const direction = this.getDirection(sourceGap, sourceSide, targetGap);\n const directionAccessor = direction.x !== 0 ? 'x' : 'y';\n const currentDirection = direction[ directionAccessor ];\n\n let points: IPoint[] = [];\n const sourceGapOffset = PointExtensions.initialize();\n const targetGapOffset = PointExtensions.initialize();\n\n const centerBetweenPoints = new CalculateCenterBetweenPointsHandler().handle(\n new CalculateCenterBetweenPointsRequest(source, target)\n );\n\n if (sourceDirection[ directionAccessor ] * targetDirection[ directionAccessor ] === -1) {\n const verticalSplit: IPoint[] = [\n { x: centerBetweenPoints.x, y: sourceGap.y },\n { x: centerBetweenPoints.x, y: targetGap.y },\n ];\n const horizontalSplit: IPoint[] = [\n { x: sourceGap.x, y: centerBetweenPoints.y },\n { x: targetGap.x, y: centerBetweenPoints.y },\n ];\n\n if (sourceDirection[ directionAccessor ] === currentDirection) {\n points = directionAccessor === 'x' ? verticalSplit : horizontalSplit;\n } else {\n points = directionAccessor === 'x' ? horizontalSplit : verticalSplit;\n }\n } else {\n const sourceTarget: IPoint[] = [ { x: sourceGap.x, y: targetGap.y } ];\n const targetSource: IPoint[] = [ { x: targetGap.x, y: sourceGap.y } ];\n\n if (directionAccessor === 'x') {\n points = sourceDirection.x === currentDirection ? targetSource : sourceTarget;\n } else {\n points = sourceDirection.y === currentDirection ? sourceTarget : targetSource;\n }\n\n if (sourceSide === targetSide) {\n const diff = Math.abs(source[ directionAccessor ] - target[ directionAccessor ]);\n\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDirection[ directionAccessor ] === currentDirection) {\n sourceGapOffset[ directionAccessor ] = (sourceGap[ directionAccessor ] > source[ directionAccessor ] ? -1 : 1) * gapOffset;\n } else {\n targetGapOffset[ directionAccessor ] = (targetGap[ directionAccessor ] > target[ directionAccessor ] ? -1 : 1) * gapOffset;\n }\n }\n }\n\n if (sourceSide !== targetSide) {\n const dirAccessorOpposite = directionAccessor === 'x' ? 'y' : 'x';\n const isSameDir = sourceDirection[ directionAccessor ] === targetDirection[ dirAccessorOpposite ];\n const sourceGtTargetOppo = sourceGap[ dirAccessorOpposite ] > targetGap[ dirAccessorOpposite ];\n const sourceLtTargetOppo = sourceGap[ dirAccessorOpposite ] < targetGap[ dirAccessorOpposite ];\n const flipSourceTarget =\n (sourceDirection[ directionAccessor ] === 1 &&\n ((!isSameDir && sourceGtTargetOppo) || (isSameDir && sourceLtTargetOppo))) ||\n (sourceDirection[ directionAccessor ] !== 1 &&\n ((!isSameDir && sourceLtTargetOppo) || (isSameDir && sourceGtTargetOppo)));\n\n if (flipSourceTarget) {\n points = directionAccessor === 'x' ? sourceTarget : targetSource;\n }\n }\n }\n\n const pathPoints = [\n source,\n { x: sourceGap.x + sourceGapOffset.x, y: sourceGap.y + sourceGapOffset.y },\n ...points,\n { x: targetGap.x + targetGapOffset.x, y: targetGap.y + targetGapOffset.y },\n target,\n ];\n\n const center = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest(pathPoints)\n );\n\n return { points: pathPoints, center: center };\n }\n\n private getDirection(source: IPoint, sourceSide: EFConnectableSide, target: IPoint): IPoint {\n if (sourceSide === EFConnectableSide.LEFT || sourceSide === EFConnectableSide.RIGHT) {\n return source.x < target.x ? PointExtensions.initialize(1, 0) : PointExtensions.initialize(-1, 0);\n }\n return source.y < target.y ? PointExtensions.initialize(0, 1) : PointExtensions.initialize(0, -1);\n }\n\n private distance(a: IPoint, b: IPoint): number {\n return Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));\n }\n\n private buildPath(points: IPoint[], borderRadius: number): string {\n let path = '';\n for (let i = 0; i < points.length; i++) {\n const p = points[ i ];\n let segment = '';\n\n if (i > 0 && i < points.length - 1) {\n segment = this.getBend(points[ i - 1 ], p, points[ i + 1 ], borderRadius);\n } else if (i === points.length - 1) {\n segment = this.buildLastLineSegment(i, p);\n } else {\n segment = this.buildMoveOrLineSegment(i, p);\n }\n path += segment;\n }\n\n return path;\n }\n\n private getBend(a: IPoint, b: IPoint, c: IPoint, size: number): string {\n const bendSize = Math.min(this.distance(a, b) / 2, this.distance(b, c) / 2, size);\n const { x, y } = b;\n\n if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {\n return `L${ x } ${ y }`;\n }\n\n if (a.y === y) {\n const xDir = a.x < c.x ? -1 : 1;\n const yDir = a.y < c.y ? 1 : -1;\n return `L ${ x + bendSize * xDir },${ y }Q ${ x },${ y } ${ x },${ y + bendSize * yDir }`;\n }\n\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${ x },${ y + bendSize * yDir }Q ${ x },${ y } ${ x + bendSize * xDir },${ y }`;\n }\n\n private buildMoveOrLineSegment(index: number, point: IPoint): string {\n return `${ index === 0 ? 'M' : 'L' }${ point.x } ${ point.y }`;\n }\n\n private buildLastLineSegment(index: number, point: IPoint): string {\n return `L${ point.x + 0.0002 } ${ point.y + 0.0002 }`;\n }\n}\n","import { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\n\nexport class FStraightPathBuilder implements IFConnectionBuilder {\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, target } = request;\n const path = `M ${ source.x } ${ source.y } L ${ target.x + 0.0002 } ${ target.y + 0.0002 }`;\n\n const connectionCenter = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest([source, target])\n );\n\n return { path, connectionCenter, penultimatePoint: source };\n }\n}\n","export const F_CONNECTION_IDENTIFIERS = {\n\n textId(connectionId: string): string {\n return sanitizeElementId('connection_text_' + connectionId);\n },\n connectionForSelectionId(connectionId: string): string {\n return sanitizeElementId('connection_for_selection_' + connectionId);\n },\n connectionId(connectionId: string): string {\n return sanitizeElementId('connection_' + connectionId);\n },\n gradientId(connectionId: string): string {\n return sanitizeElementId('connection_gradient_' + connectionId);\n },\n linkToGradient(connectionId: string): string {\n return `url(#${ F_CONNECTION_IDENTIFIERS.gradientId(connectionId) })`;\n },\n linkToConnection(connectionId: string): string {\n return `#${ F_CONNECTION_IDENTIFIERS.connectionId(connectionId) }`;\n }\n}\n\nfunction sanitizeElementId(id: string): string {\n if (!id.match(/^[a-zA-Z_]/)) {\n id = '_' + id;\n }\n return id.replace(/[^a-zA-Z0-9_\\-:.]/g, '_');\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const F_CONNECTION = new InjectionToken('F_CONNECTION');\n","import { Directive, ElementRef, Inject, OnInit } from '@angular/core';\nimport { IHasHostElement } from '@foblex/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { IHasConnectionText } from '../i-has-connection-text';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { BrowserService } from '@foblex/platform';\n\n@Directive({\n selector: 'textPath[f-connection-text-path]',\n host: {\n '[attr.href]': 'linkToConnection'\n }\n})\nexport class FConnectionTextPathDirective implements IHasHostElement, OnInit {\n\n public get linkToConnection(): string {\n return F_CONNECTION_IDENTIFIERS.linkToConnection(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGTextPathElement {\n return this.elementReference.nativeElement;\n }\n\n public symbolWidth: number = 8;\n public fontSize: string = '12px';\n\n constructor(\n private elementReference: ElementRef<SVGTextPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionText & IHasConnectionFromTo,\n private fBrowser: BrowserService\n ) {\n }\n\n public ngOnInit(): void {\n this.hostElement.setAttribute('startOffset', '50%');\n this.hostElement.setAttribute('text-anchor', `middle`);\n this.symbolWidth = this.getSymbolWidth(this.base.fText || '');\n }\n\n public getBBox(): DOMRect {\n return this.hostElement.getBBox();\n }\n\n private getFontStyles(element: SVGTextPathElement): { fontSize: string, fontFamily: string } {\n const computedStyles = this.fBrowser.window.getComputedStyle(element);\n return {\n fontSize: computedStyles.fontSize,\n fontFamily: computedStyles.fontFamily\n };\n }\n\n private getSymbolWidth(name: string): number {\n const text = name || 'connection';\n const { fontFamily, fontSize } = this.getFontStyles(this.hostElement);\n this.fontSize = fontSize;\n const canvas = this.fBrowser.document.createElement('canvas');\n let context;\n\n try {\n context = canvas.getContext('2d');\n } catch (e) {\n context = null;\n }\n if (!context) {\n return 0;\n }\n\n context.font = `${ fontSize } ${ fontFamily }`;\n\n const metrics = context.measureText(text);\n const symbolWidth = metrics.width / text.length;\n return symbolWidth;\n }\n}\n\n","import { IHasHostElement, ILine } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\n\nexport const CONNECTION_TEXT = new InjectionToken<IConnectionText>('CONNECTION_TEXT');\n\nexport interface IConnectionText extends IHasHostElement {\n\n redraw(line: ILine): void;\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject, ViewChild\n} from \"@angular/core\";\nimport { ILine, PointExtensions } from '@foblex/core';\nimport { FConnectionTextPathDirective } from './f-connection-text-path.directive';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionText } from '../i-has-connection-text';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_TEXT, IConnectionText } from './i-connection-text';\n\n@Component({\n selector: \"text[f-connection-text]\",\n templateUrl: \"./f-connection-text.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-text\",\n '[attr.id]': 'textId',\n },\n providers: [ { provide: CONNECTION_TEXT, useExisting: FConnectionTextComponent } ],\n})\nexport class FConnectionTextComponent implements IConnectionText {\n\n public get textId(): string {\n return F_CONNECTION_IDENTIFIERS.textId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGTextElement {\n return this.elementReference.nativeElement;\n }\n\n public get text(): string {\n return this.base.fText || '';\n }\n\n @ViewChild(FConnectionTextPathDirective, { static: true })\n public textPathDirective!: FConnectionTextPathDirective;\n\n constructor(\n private elementReference: ElementRef<SVGTextElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionText & IHasConnectionFromTo,\n ) {\n }\n\n public redraw(line: ILine): void {\n\n const isTextReverse: boolean = FConnectionTextComponent.isTextReverse(line);\n const dyValue = this.calculateDy(this.textPathDirective.fontSize, isTextReverse);\n\n this.hostElement.setAttribute('dy', dyValue);\n\n const textRect = this.textPathDirective.getBBox();\n const textRectCenter = [ textRect.x + textRect.width / 2, textRect.y + textRect.height / 2 ];\n this.hostElement.setAttribute('transform', isTextReverse ? `rotate(180, ${ textRectCenter })` : '');\n const startOffset = FConnectionTextComponent.getTextStartOffset(line, this.base.fText || '', this.textPathDirective.symbolWidth);\n if (startOffset < 0) {\n\n this.hostElement.style.display = 'none';\n } else {\n\n this.hostElement.style.display = 'unset';\n }\n }\n\n private calculateDy(fontSize: string, isTextReverse: boolean): string {\n const fontSizeNumber = parseFloat(fontSize);\n\n const dyValue = isTextReverse ? fontSizeNumber * 1.5 : fontSizeNumber * -0.8;\n\n return dyValue.toString();\n }\n\n private static isTextReverse(line: ILine): boolean {\n return line.point1.x > line.point2.x;\n }\n\n private static getTextStartOffset(line: ILine, name: string, symbolWidth: number): number {\n const vectorLength: number = PointExtensions.hypotenuse(line.point1, line.point2);\n return vectorLength / 2 - ((name || '').length * symbolWidth) / 2;\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:textPath f-connection-text-path>\n {{ text }}\n </svg:textPath>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef\n} from \"@angular/core\";\nimport { IHasHostElement, IPoint } from '@foblex/core';\n\nexport const F_CONNECTION_DRAG_HANDLE_CLASS = 'f-connection-drag-handle';\n\n@Component({\n selector: \"circle[f-connection-drag-handle]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'class'\n }\n})\nexport class FConnectionDragHandleComponent implements IHasHostElement {\n\n public readonly class: string = F_CONNECTION_DRAG_HANDLE_CLASS;\n\n public get hostElement(): SVGCircleElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGCircleElement>\n ) {\n }\n\n public redraw(penultimatePoint: IPoint, endPoint: IPoint): void {\n const point = this.calculateCircleCenter(penultimatePoint, endPoint, 8);\n this.hostElement.setAttribute('cx', point.x.toString());\n this.hostElement.setAttribute('cy', point.y.toString());\n }\n\n private calculateCircleCenter(start: IPoint, end: IPoint, radius: number): IPoint {\n const direction = { x: end.x - start.x, y: end.y - start.y };\n const length = Math.sqrt(direction.x * direction.x + direction.y * direction.y) || 1;\n const unitDirection = { x: direction.x / length, y: direction.y / length };\n const scaledDirection = { x: unitDirection.x * radius, y: unitDirection.y * radius };\n return { x: end.x - scaledDirection.x, y: end.y - scaledDirection.y };\n }\n}\n\n","import { IHasHostElement, ILine } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\n\nexport const CONNECTION_GRADIENT = new InjectionToken<IConnectionGradient>('CONNECTION_GRADIENT');\n\nexport interface IConnectionGradient extends IHasHostElement {\n\n initialize(): void;\n\n redraw(line: ILine): void;\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject } from \"@angular/core\";\nimport { ILine, Point } from '@foblex/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { IHasConnectionColor } from '../i-has-connection-color';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_GRADIENT, IConnectionGradient } from './i-connection-gradient';\n\n@Component({\n selector: \"linearGradient[fConnectionGradient]\",\n templateUrl: \"./f-connection-gradient.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-gradient\",\n '[attr.id]': 'gradientId'\n },\n providers: [ { provide: CONNECTION_GRADIENT, useExisting: FConnectionGradientComponent } ],\n})\nexport class FConnectionGradientComponent implements IConnectionGradient {\n\n public get gradientId(): string {\n return F_CONNECTION_IDENTIFIERS.gradientId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGLinearGradientElement {\n return this.elementReference.nativeElement;\n }\n\n public get stop1Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(0) as SVGStopElement;\n }\n\n public get stop2Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(1) as SVGStopElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGLinearGradientElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionColor & IHasConnectionFromTo,\n ) {\n }\n\n public initialize(): void {\n this.stop1Element.setAttribute('offset', '0%');\n this.stop2Element.setAttribute('offset', '100%');\n }\n\n private updateGradient(): void {\n this.setFromColor(this.base.fStartColor);\n this.setToColor(this.base.fEndColor);\n }\n\n private setFromColor(color: string | undefined): void {\n this.stop1Element.setAttribute('stop-color', color || 'transparent');\n }\n\n private setToColor(color: string | undefined): void {\n this.stop2Element.setAttribute('stop-color', color || 'transparent');\n }\n\n public redraw(line: ILine): void {\n const x: number = line.point2.x - line.point1.x;\n const y: number = line.point2.y - line.point1.y;\n const distance: number = Math.sqrt(x * x + y * y) || 0.01;\n\n const from = new Point(0.5 - (0.5 * x) / distance, 0.5 - (0.5 * y) / distance);\n\n this.hostElement.setAttribute('x1', from.x.toString());\n this.hostElement.setAttribute('y1', from.y.toString());\n\n const to = new Point(0.5 + (0.5 * x) / distance, 0.5 + (0.5 * y) / distance);\n this.hostElement.setAttribute('x2', to.x.toString());\n this.hostElement.setAttribute('y2', to.y.toString());\n this.updateGradient();\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:stop/>\n <svg:stop/>\n</ng-container>\n","import { IHasHostElement } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\n\nexport const CONNECTION_PATH = new InjectionToken<IConnectionPath>('CONNECTION_PATH');\n\nexport interface IConnectionPath extends IHasHostElement {\n\n initialize(): void;\n\n setPath(path: string): void;\n\n select(): void;\n\n deselect(): void;\n}\n","export function getMarkerStartId(fConnectionId: string): string {\n return sanitizeElementId(`f-connection-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerEndId(fConnectionId: string): string {\n return sanitizeElementId(`f-connection-marker-end-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedStartId(fConnectionId: string): string {\n return sanitizeElementId(`f-connection-selected-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedEndId(fConnectionId: string): string {\n return sanitizeElementId(`f-connection-selected-marker-end-${ fConnectionId }`);\n}\n\nfunction sanitizeElementId(id: string): string {\n if (!id.match(/^[a-zA-Z_]/)) {\n id = '_' + id;\n }\n return id.replace(/[^a-zA-Z0-9_\\-:.]/g, '_');\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject } from \"@angular/core\";\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionColor } from '../i-has-connection-color';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_PATH, IConnectionPath } from './i-connection-path';\nimport {\n getMarkerEndId,\n getMarkerSelectedEndId,\n getMarkerSelectedStartId,\n getMarkerStartId,\n} from './get-path-marker-id';\n\n@Component({\n selector: \"path[f-connection-path]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-path\",\n '[attr.id]': 'attrConnectionId',\n '[attr.data-f-path-id]': 'fPathId',\n '[attr.stroke]': 'linkToGradient',\n },\n providers: [ { provide: CONNECTION_PATH, useExisting: FConnectionPathComponent } ],\n})\nexport class FConnectionPathComponent implements IConnectionPath {\n\n public get fPathId(): string {\n return this.base.fId;\n }\n\n public get linkToGradient(): string {\n return F_CONNECTION_IDENTIFIERS.linkToGradient(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get attrConnectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionColor & IHasConnectionFromTo\n ) {\n }\n\n public initialize(): void {\n this.deselect();\n }\n\n public setPath(path: string): void {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n\n public select(): void {\n this.hostElement.setAttribute('marker-start', `url(#${ getMarkerSelectedStartId(this.base.fId) })`);\n this.hostElement.setAttribute('marker-end', `url(#${ getMarkerSelectedEndId(this.base.fId) })`);\n }\n\n public deselect(): void {\n this.hostElement.setAttribute('marker-start', `url(#${ getMarkerStartId(this.base.fId) })`);\n this.hostElement.setAttribute('marker-end', `url(#${ getMarkerEndId(this.base.fId) })`);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject\n} from \"@angular/core\";\nimport { IHasHostElement } from '@foblex/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\n\n@Component({\n selector: \"path[fConnectionSelection]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-selection\",\n '[attr.id]': 'connectionForSelectionId',\n },\n})\nexport class FConnectionSelectionComponent implements IHasHostElement {\n\n public get connectionForSelectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionForSelectionId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionFromTo,\n ) {\n }\n\n public setPath(path: string) {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n}\n\n","import { IHasHostElement, AbstractConstructor, Constructor } from '@foblex/core';\nimport { IConnectionPath } from '../f-path';\n\nexport interface ISelectable {\n\n fId: string;\n\n fSelectionDisabled: boolean;\n\n hostElement: HTMLElement | SVGElement;\n\n select(): void;\n\n deselect(): void;\n\n isSelected(): boolean;\n}\n\nexport const F_SELECTED_CLASS = 'f-selected';\n\ntype CanChangeConnectionSelectionConstructor = Constructor<ISelectable> & AbstractConstructor<ISelectable>;\n\nexport function mixinChangeConnectionSelection<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeConnectionSelectionConstructor & T;\nexport function mixinChangeConnectionSelection<T extends Constructor<IHasHostElement>>(base: T): CanChangeConnectionSelectionConstructor & T {\n return class extends base {\n\n public fId: string = '';\n\n public fSelectionDisabled: boolean = false;\n\n public fPath: IConnectionPath | undefined;\n\n public deselect(): void {\n this.fPath?.deselect();\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.fPath?.select();\n if(!this.hostElement.classList.contains(F_SELECTED_CLASS)) {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { IHasHostElement, AbstractConstructor, Constructor } from '@foblex/core';\n\nexport interface ICanChangeConnectionVisibility {\n\n hostElement: HTMLElement | SVGElement;\n\n show(): void;\n\n hide(): void;\n}\n\ntype CanChangeConnectionVisibilityConstructor = Constructor<ICanChangeConnectionVisibility> & AbstractConstructor<ICanChangeConnectionVisibility>;\n\nexport function mixinChangeConnectionVisibility<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeConnectionVisibilityConstructor & T;\nexport function mixinChangeConnectionVisibility<T extends Constructor<IHasHostElement>>(base: T): CanChangeConnectionVisibilityConstructor & T {\n return class extends base {\n\n public show(): void {\n this.hostElement.style.display = \"unset\";\n }\n\n public hide(): void {\n this.hostElement.style.display = \"none\";\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { InjectionToken } from '@angular/core';\nimport { IFConnectionBuilder } from './i-f-connection-builder';\n\nexport const F_CONNECTION_BUILDERS = new InjectionToken<IFConnectionBuilders>('F_CONNECTION_BUILDERS');\n\nexport interface IFConnectionBuilders {\n [key: string]: IFConnectionBuilder;\n}\n","import { IMap } from '@foblex/core';\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { IFConnectionBuilder } from './i-f-connection-builder';\nimport { EFConnectionType, FBezierPathBuilder, FSegmentPathBuilder, FStraightPathBuilder } from '../common';\nimport { F_CONNECTION_BUILDERS, IFConnectionBuilders } from './f-connection-builders';\nimport { IFConnectionFactoryRequest } from './i-f-connection-factory-request';\nimport { IFConnectionBuilderResponse } from './i-f-connection-builder-response';\n\n@Injectable()\nexport class FConnectionFactory {\n\n private readonly builders: IMap<IFConnectionBuilder> = {\n\n [ EFConnectionType.STRAIGHT ]: new FStraightPathBuilder(),\n\n [ EFConnectionType.BEZIER ]: new FBezierPathBuilder(),\n\n [ EFConnectionType.SEGMENT ]: new FSegmentPathBuilder(),\n }\n\n constructor(\n @Optional() @Inject(F_CONNECTION_BUILDERS) builders: IFConnectionBuilders\n ) {\n if (builders) {\n this.builders = { ...this.builders, ...builders };\n }\n }\n\n public handle(request: IFConnectionFactoryRequest): IFConnectionBuilderResponse {\n const builder = this.builders[ request.type ];\n if (!builder) {\n throw new Error(`FConnectionBuilder not found for type ${ request.type }`);\n }\n\n return builder.handle(request.payload);\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport {\n IHasHostElement, ILine,\n IPoint, LineExtensions, PointExtensions,\n} from '@foblex/core';\nimport { Subject } from 'rxjs';\nimport { EFConnectionBehavior } from './e-f-connection-behavior';\nimport { EFConnectionType } from './e-f-connection-type';\nimport { IHasConnectionColor } from './i-has-connection-color';\nimport { IHasConnectionFromTo } from './i-has-connection-from-to';\nimport { IHasConnectionText } from './i-has-connection-text';\nimport { IConnectionPath } from './f-path';\nimport { IConnectionGradient } from './f-gradient';\nimport { FConnectionDragHandleComponent } from './f-drag-handle';\nimport { FConnectionSelectionComponent } from './f-selection';\nimport { IConnectionText } from './f-connection-text';\nimport { IHasStateChanges } from '../../i-has-state-changes';\nimport { FMarkerBase } from '../f-marker';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport {\n ICanChangeConnectionVisibility,\n ISelectable,\n mixinChangeConnectionSelection,\n mixinChangeConnectionVisibility\n} from './mixins';\n\nconst MIXIN_BASE = mixinChangeConnectionSelection(\n mixinChangeConnectionVisibility(\n class {\n constructor(\n public hostElement: HTMLElement\n ) {\n }\n }));\n\n@Directive()\nexport abstract class FConnectionBase extends MIXIN_BASE\n implements IHasHostElement, ISelectable,\n ICanChangeConnectionVisibility,\n IHasStateChanges, IHasConnectionColor,\n IHasConnectionFromTo, IHasConnectionText {\n\n public abstract override fId: string;\n\n public abstract fStartColor: string;\n\n public abstract fEndColor: string;\n\n public abstract fOutputId: string;\n\n public abstract fInputId: string;\n\n public abstract fRadius: number;\n\n public abstract fOffset: number;\n\n public path: string = '';\n\n public line: ILine = LineExtensions.initialize();\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract fDraggingDisabled: boolean;\n\n public abstract override fSelectionDisabled: boolean;\n\n public abstract boundingElement: HTMLElement | SVGElement;\n\n public abstract fBehavior: EFConnectionBehavior;\n\n public abstract fType: EFConnectionType;\n\n public abstract fDefs: ElementRef<SVGDefsElement>;\n\n public abstract fMarkers: FMarkerBase[];\n\n public abstract fPath: IConnectionPath;\n\n public abstract fGradient: IConnectionGradient;\n\n public abstract fDragHandle: FConnectionDragHandleComponent;\n\n public abstract fSelection: FConnectionSelectionComponent;\n\n public abstract fTextComponent: IConnectionText;\n\n public abstract fText: string;\n\n public abstract fConnectionCenter: ElementRef<HTMLDivElement>;\n\n private penultimatePoint: IPoint = PointExtensions.initialize();\n\n protected constructor(\n elementReference: ElementRef<HTMLElement>,\n private cFactory: FConnectionFactory\n ) {\n super(elementReference.nativeElement);\n }\n\n public initialize(): void {\n this.fPath.initialize();\n this.fGradient.initialize();\n this.redraw();\n }\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return (this.hostElement.firstChild?.lastChild as HTMLElement).contains(element);\n }\n\n public setLine(source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide): void {\n this.line = LineExtensions.initialize(source, target);\n const pathResult = this.getPathResult(source, sourceSide, target, targetSide);\n this.path = pathResult.path;\n this.penultimatePoint = pathResult.penultimatePoint || source;\n this.fConnectionCenter?.nativeElement?.setAttribute('style', this.getTransform(pathResult.connectionCenter));\n }\n\n private getPathResult(source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide): any {\n const radius = this.fRadius > 0 ? this.fRadius : 0;\n const offset = this.fOffset > 0 ? this.fOffset : 1;\n return this.cFactory.handle(\n {\n type: this.fType,\n payload: { source, sourceSide, target, targetSide, radius, offset }\n }\n );\n }\n\n private getTransform(position: IPoint): string {\n return `position: absolute; pointerEvents: all; transform: translate(-50%, -50%); left: ${ position.x }px; top: ${ position.y }px`;\n }\n\n public redraw(): void {\n this.fPath.setPath(this.path);\n this.fSelection.setPath(this.path);\n this.fGradient.redraw(this.line);\n this.fDragHandle.redraw(this.penultimatePoint, this.line.point2);\n this.fTextComponent.redraw(this.line);\n }\n}\n","export enum EFConnectionBehavior {\n\n FIXED = 'fixed',\n\n FIXED_CENTER = 'fixed_center',\n\n FLOATING = 'floating',\n}\n","export enum EFConnectionType {\n\n SEGMENT = 'segment',\n\n STRAIGHT = 'straight',\n\n BEZIER = 'bezier',\n}\n","import {\n Directive\n} from \"@angular/core\";\n\n@Directive({\n selector: \"[fConnectionCenter]\"\n})\nexport class FConnectionCenterDirective {\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ContentChildren, ElementRef, Input, OnDestroy, OnInit, QueryList, ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FMarkerBase } from '../f-marker';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { FComponentsStore } from '../../f-storage';\nimport { castToEnum } from '../../domain';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\n\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection-for-create\",\n templateUrl: \"./f-connection-for-create.component.html\",\n styleUrls: [ \"./f-connection-for-create.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-connection-for-create\"\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionForCreateComponent } ],\n})\nexport class FConnectionForCreateComponent\n extends FConnectionBase implements AfterViewInit, OnInit, OnDestroy {\n\n @Input('fConnectionId')\n public override fId: string = `f-connection-for-create-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n private _fRadius: number = 8;\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override set fBehavior(value: EFConnectionBehavior | string) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fType(): EFConnectionType {\n return this._type;\n }\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n public get fMarkers(): FMarkerBase[] {\n return this.fComponentsStore.fMarkers.filter((x) => {\n return this.hostElement.contains(x.hostElement);\n });\n }\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fTempConnection = this;\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.fTempConnection = undefined;\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component, ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n OnInit, QueryList,\n ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH,\n CONNECTION_TEXT,\n FConnectionDragHandleComponent,\n FConnectionSelectionComponent,\n IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FComponentsStore } from '../../f-storage';\nimport { FMarkerBase } from '../f-marker';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { castToEnum } from '../../domain';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection\",\n exportAs: 'fComponent',\n templateUrl: \"./f-connection.component.html\",\n styleUrls: [ \"./f-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'fId',\n class: \"f-component f-connection\",\n '[class.f-connection-selection-disabled]': 'fSelectionDisabled',\n '[class.f-connection-reassign-disabled]': 'fDraggingDisabled',\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionComponent } ],\n})\nexport class FConnectionComponent\n extends FConnectionBase implements OnInit, OnDestroy {\n\n @Input('fConnectionId')\n public override fId: string = `f-connection-${ uniqueId++ }`;\n\n private _fText: string = '';\n @Input()\n public override set fText(value: string) {\n this._fText = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fText(): string {\n return this._fText;\n }\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n private _fOutputId!: string;\n @Input()\n public override set fOutputId(value: string) {\n this._fOutputId = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOutputId(): string {\n return this._fOutputId;\n }\n\n private _fInputId!: string;\n @Input()\n public override set fInputId(value: string) {\n this._fInputId = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fInputId(): string {\n return this._fInputId;\n }\n\n private _fRadius: number = 8;\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n @Input()\n public override set fBehavior(value: string | EFConnectionBehavior) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = value as unknown as EFConnectionType; //castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fType(): EFConnectionType {\n return this._type;\n }\n\n @Input('fReassignDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input()\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n public get fMarkers(): FMarkerBase[] {\n return this.fComponentsStore.fMarkers.filter((x) => {\n return this.hostElement.contains(x.hostElement);\n })\n }\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.addComponent(this.fComponentsStore.fConnections, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fConnections, this);\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"overflow: visible; display: block; vertical-align: middle;\">\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n","export enum EFMarkerType {\n\n START = 'f-connection-marker-start',\n\n END = 'f-connection-marker-end',\n\n SELECTED_START = 'f-connection-selected-marker-start',\n\n SELECTED_END = 'f-connection-selected-marker-end',\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '@foblex/core';\n\nexport const F_MARKER = new InjectionToken('F_MARKER');\n\n@Directive()\nexport abstract class FMarkerBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract width: number;\n\n public abstract height: number;\n\n public abstract refX: number;\n\n public abstract refY: number;\n\n public abstract type: string;\n\n public abstract orient: 'auto' | 'auto-start-reverse' | string;\n\n public abstract markerUnits: 'strokeWidth' | 'userSpaceOnUse';\n}\n","import {\n Directive, ElementRef, Input, OnDestroy, OnInit\n} from \"@angular/core\";\nimport { F_MARKER, FMarkerBase } from './f-marker-base';\nimport { EFMarkerType } from './e-f-marker-type';\nimport { FComponentsStore } from '../../f-storage';\n\n@Directive({\n selector: \"svg[fMarker]\",\n host: {\n class: \"f-component f-marker\"\n },\n providers: [ { provide: F_MARKER, useExisting: FMarkerDirective } ],\n})\nexport class FMarkerDirective extends FMarkerBase implements OnInit, OnDestroy {\n\n @Input()\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override width: number = 0;\n\n @Input()\n public override height: number = 0;\n\n @Input()\n public override refX: number = 0;\n\n @Input()\n public override refY: number = 0;\n\n @Input()\n public override type: string = EFMarkerType.START;\n\n @Input()\n public override orient: 'auto' | 'auto-start-reverse' | 'calculated' | string = 'auto';\n\n @Input()\n public override markerUnits: 'strokeWidth' | 'userSpaceOnUse' = 'strokeWidth';\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private elementReference: ElementRef<HTMLElement>,\n ) {\n super();\n this.hostElement.style.display = 'none';\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.addComponent(this.fComponentsStore.fMarkers, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fMarkers, this);\n }\n}\n","import {\n FConnectionDragHandleComponent,\n FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent,\n FConnectionTextComponent,\n FConnectionTextPathDirective\n} from './common';\nimport { FConnectionComponent } from './f-connection';\nimport { FConnectionCenterDirective } from './f-connection-center';\nimport { FConnectionForCreateComponent } from './f-connection-for-create';\nimport { FMarkerDirective } from './f-marker';\n\nexport const F_CONNECTION_PROVIDERS = [\n\n FConnectionTextComponent,\n FConnectionTextPathDirective,\n FConnectionDragHandleComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent,\n FConnectionSelectionComponent,\n\n FConnectionComponent,\n FConnectionCenterDirective,\n FConnectionForCreateComponent,\n FMarkerDirective\n];\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { IHasHostElement, IPoint, IRect, ISize, PointExtensions } from '@foblex/core';\nimport { F_SELECTED_CLASS, ISelectable } from '../f-connection';\nimport { IHasStateChanges } from '../i-has-state-changes';\nimport { FConnectorBase } from '../f-connectors';\n\nexport const F_NODE = new InjectionToken<FNodeBase>('F_NODE');\n\nexport abstract class FNodeBase implements IHasStateChanges, ISelectable, IHasHostElement {\n\n public abstract fId: string;\n\n public abstract fParentId: string | null | undefined;\n\n public abstract hostElement: HTMLElement;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n\n public abstract positionChange: EventEmitter<IPoint>;\n\n public abstract position: IPoint;\n\n protected _position: IPoint = PointExtensions.initialize();\n\n\n public abstract sizeChange: EventEmitter<IRect>;\n\n public abstract size: ISize;\n\n protected _size: ISize | undefined;\n\n\n public abstract fDraggingDisabled: boolean;\n\n public abstract fSelectionDisabled: boolean;\n\n public abstract fConnectOnNode: boolean;\n\n public fCanBeResizedByChild: boolean = true;\n\n public abstract fIncludePadding: boolean;\n\n public abstract refresh(): void;\n\n public abstract connectors: FConnectorBase[];\n\n public abstract addConnector(connector: FConnectorBase): void;\n\n public abstract removeConnector(connector: FConnectorBase): void;\n\n protected abstract setStyle(name: string, value: string): void;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public redraw(): void {\n if (this.size) {\n this.setStyle('width', '' + this.size.width + 'px');\n this.setStyle('height', '' + this.size.height + 'px');\n }\n\n this.setStyle('transform', `translate(${ this.position.x }px,${ this.position.y }px)`);\n }\n\n public deselect(): void {\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n\n public updatePosition(position: IPoint): void {\n this._position = position;\n }\n\n public updateSize(value: ISize): void {\n this._size = value;\n }\n}\n","import { Observable } from 'rxjs';\n\nexport class FResizeObserver extends Observable<ResizeObserverEntry[]> {\n\n constructor(element: HTMLElement) {\n super(subscriber => {\n const observer = new ResizeObserver(entries => {\n subscriber.next(entries);\n });\n\n observer.observe(element);\n\n return function unsubscribe() {\n observer.unobserve(element);\n observer.disconnect();\n }\n });\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IHasHostElement, IPoint, IRect, ISize, PointExtensions } from '@foblex/core';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { debounceTime, merge, startWith, Subscription } from 'rxjs';\nimport { FResizeObserver } from './f-resize-observer';\nimport { FComponentsStore } from '../f-storage';\nimport {\n CalculateConnectorConnectableSideHandler,\n CalculateConnectorConnectableSideRequest,\n FConnectorBase\n} from '../f-connectors';\nimport { FFlowMediator } from '../infrastructure';\nimport { EmitTransformChangesRequest } from '../domain';\nimport { BrowserService } from '@foblex/platform';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fGroup]\",\n exportAs: \"fComponent\",\n host: {\n '[attr.data-f-group-id]': 'fId',\n class: \"f-group f-component\",\n '[class.f-group-dragging-disabled]': 'fDraggingDisabled',\n '[class.f-group-selection-disabled]': 'fSelectionDisabled',\n },\n providers: [\n { provide: F_NODE, useExisting: FGroupDirective }\n ],\n})\nexport class FGroupDirective extends FNodeBase\n implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input('fGroupId')\n public override fId: string = `f-group-${ uniqueId++ }`;\n\n @Input('fGroupParentId')\n public override fParentId: string | null | undefined = null;\n\n @Input('fGroupPosition')\n public override set position(value: IPoint) {\n this._position = PointExtensions.castToPoint(value);\n this.refresh();\n }\n public override get position(): IPoint {\n return this._position;\n }\n @Output('fGroupPositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n @Input('fGroupSize')\n public override set size(value: ISize) {\n this._size = value;\n this.refresh();\n }\n public override get size(): ISize {\n return this._size!;\n }\n @Output('fGroupSizeChange')\n public override sizeChange: EventEmitter<IRect> = new EventEmitter<IRect>();\n\n @Input('fGroupDraggingDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input('fGroupSelectionDisabled')\n public override fSelectionDisabled: boolean = false;\n\n @Input()\n public override fIncludePadding: boolean = true;\n\n @Input()\n public override fConnectOnNode: boolean = true;\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n public override connectors: FConnectorBase[] = [];\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n private fBrowser: BrowserService\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.setStyle('position', 'absolute');\n this.setStyle('transform-origin', 'center');\n this.setStyle('user-select', 'none');\n this.setStyle('pointer-events', 'all');\n this.setStyle('left', '0');\n this.setStyle('top', '0');\n super.redraw();\n this.fComponentsStore.addComponent(this.fComponentsStore.fNodes, this);\n }\n\n protected override setStyle(styleName: string, value: string) {\n this.renderer.setStyle(this.hostElement, styleName, value);\n }\n\n public override redraw(): void {\n super.redraw();\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n return merge(new FResizeObserver(this.hostElement as HTMLElement), this.stateChanges).pipe(\n debounceTime(10), startWith(null)\n ).subscribe(() => {\n this.connectors.forEach((fConnector: FConnectorBase) => {\n fConnector.fConnectableSide = new CalculateConnectorConnectableSideHandler().handle(\n new CalculateConnectorConnectableSideRequest(fConnector, this.hostElement)\n );\n });\n this.fComponentsStore.componentDataChanged();\n });\n }\n\n public override addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.stateChanges.next();\n }\n\n public override removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.stateChanges.next();\n }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fNodes, this);\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IHasHostElement, IPoint, IRect, ISize, PointExtensions } from '@foblex/core';\nimport { BrowserService } from '@foblex/platform';\nimport { debounceTime, merge, startWith, Subscription } from 'rxjs';\nimport { FResizeObserver } from './f-resize-observer';\nimport { FComponentsStore } from '../f-storage';\nimport {\n CalculateConnectorConnectableSideHandler,\n CalculateConnectorConnectableSideRequest,\n FConnectorBase\n} from '../f-connectors';\nimport { FFlowMediator } from '../infrastructure';\nimport { EmitTransformChangesRequest } from '../domain';\nimport { F_NODE, FNodeBase } from './f-node-base';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNode]\",\n exportAs: \"fComponent\",\n host: {\n '[attr.data-f-node-id]': 'fId',\n class: \"f-node f-component\",\n '[class.f-node-dragging-disabled]': 'fDraggingDisabled',\n '[class.f-node-selection-disabled]': 'fSelectionDisabled',\n },\n providers: [\n { provide: F_NODE, useExisting: FNodeDirective }\n ],\n})\nexport class FNodeDirective extends FNodeBase implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input('fNodeId')\n public override fId: string = `f-node-${ uniqueId++ }`;\n\n @Input('fNodeParentId')\n public override fParentId: string | null | undefined = null;\n\n @Input('fNodePosition')\n public override set position(value: IPoint) {\n this._position = PointExtensions.castToPoint(value);\n this.refresh();\n }\n\n public override get position(): IPoint {\n return this._position;\n }\n\n @Output('fNodePositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n @Input('fNodeSize')\n public override set size(value: ISize) {\n this._size = value;\n this.refresh();\n }\n\n public override get size(): ISize {\n return this._size!;\n }\n\n @Output('fNodeSizeChange')\n public override sizeChange: EventEmitter<IRect> = new EventEmitter<IRect>();\n\n @Input('fNodeDraggingDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input('fNodeSelectionDisabled')\n public override fSelectionDisabled: boolean = false;\n\n @Input()\n public override fIncludePadding: boolean = true;\n\n //TODO: Add ability to connect to first connectable input if node is under pointer\n @Input()\n public override fConnectOnNode: boolean = true;\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n public override connectors: FConnectorBase[] = [];\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n private fBrowser: BrowserService\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.setStyle('position', 'absolute');\n this.setStyle('transform-origin', 'center');\n this.setStyle('user-select', 'none');\n this.setStyle('pointer-events', 'all');\n this.setStyle('left', '0');\n this.setStyle('top', '0');\n super.redraw();\n this.fComponentsStore.addComponent(this.fComponentsStore.fNodes, this);\n }\n\n protected override setStyle(styleName: string, value: string) {\n this.renderer.setStyle(this.hostElement, styleName, value);\n }\n\n public override redraw(): void {\n super.redraw();\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n return merge(new FResizeObserver(this.hostElement as HTMLElement), this.stateChanges).pipe(\n debounceTime(10), startWith(null)\n ).subscribe(() => {\n this.connectors.forEach((fConnector: FConnectorBase) => {\n fConnector.fConnectableSide = new CalculateConnectorConnectableSideHandler().handle(\n new CalculateConnectorConnectableSideRequest(fConnector, this.hostElement)\n );\n });\n this.fComponentsStore.componentDataChanged();\n });\n }\n\n public override addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.stateChanges.next();\n }\n\n public override removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.stateChanges.next();\n }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fNodes, this);\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","import { FNodeDirective } from './f-node.directive';\nimport { FDragHandleDirective } from './f-drag-handle';\nimport { FResizeHandleDirective } from './f-resize-handle';\nimport { FGroupDirective } from './f-group.directive';\n\nexport const F_NODE_PROVIDERS = [\n\n FGroupDirective,\n\n FNodeDirective,\n\n FDragHandleDirective,\n\n FResizeHandleDirective,\n];\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { BooleanExtensions } from '@foblex/core';\nimport { F_NODE_INPUT, FNodeInputBase } from './f-node-input-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { FNodeBase, F_NODE } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\nimport { castToEnum } from '../../domain';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeInput]\",\n exportAs: 'fNodeInput',\n host: {\n '[attr.data-f-input-id]': 'id',\n class: \"f-component f-node-input\",\n '[class.f-node-input-multiple]': 'multiple',\n '[class.f-node-input-disabled]': 'disabled',\n '[class.f-node-input-not-connectable]': '!canBeConnected',\n },\n providers: [ { provide: F_NODE_INPUT, useExisting: FNodeInputDirective } ],\n})\nexport class FNodeInputDirective extends FNodeInputBase implements OnInit, OnDestroy {\n\n @Input('fInputId')\n public override id: any = `f-node-input-${ uniqueId++ }`;\n\n @Input('fInputMultiple')\n public override multiple: boolean = true;\n\n @Input('fInputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n @Input('fInputConnectableSide')\n public set _fSide(value: EFConnectableSide | string) {\n this._fConnectableSide = castToEnum(value, 'fInputConnectableSide', EFConnectableSide);\n this.fNode.refresh();\n }\n\n public get _fSide(): EFConnectableSide {\n return this._fConnectableSide;\n }\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override isConnected: boolean = false;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n this.fComponentsStore.addComponent(this.fComponentsStore.fInputs, this);\n this.fNode.addConnector(this);\n }\n\n public override setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n this.hostElement.classList.toggle('f-node-input-connected', isConnected);\n }\n\n public ngOnDestroy(): void {\n this.fNode.removeConnector(this);\n this.fComponentsStore.removeComponent(this.fComponentsStore.fInputs, this);\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_OUTLET = new InjectionToken<FNodeOutletBase>('F_NODE_OUTLET');\n\n@Directive()\nexport abstract class FNodeOutletBase extends FConnectorBase {\n\n public abstract isConnectionFromOutlet: boolean;\n\n public override isConnected: boolean = false;\n\n private outputs: FConnectorBase[] = [];\n\n public get canBeConnected(): boolean {\n return !this.disabled && this.outputs.some((output) => output.canBeConnected);\n }\n\n public setOutputs(outputs: FConnectorBase[]): void {\n this.outputs = outputs;\n }\n}\n","export function isNodeOutlet(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutlet]');\n}\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { BooleanExtensions } from '@foblex/core';\nimport { F_NODE_OUTLET, FNodeOutletBase } from './f-node-outlet-base';\nimport { F_NODE, FNodeBase } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\nimport { EFConnectableSide } from '../e-f-connectable-side';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutlet]\",\n exportAs: 'fNodeOutlet',\n host: {\n '[attr.data-f-outlet-id]': 'id',\n class: \"f-component f-node-outlet\",\n '[class.f-node-outlet-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective } ],\n})\nexport class FNodeOutletDirective extends FNodeOutletBase implements OnInit, OnDestroy {\n\n @Input('fOutletId')\n public override id: string = `f-node-outlet-${ uniqueId++ }`;\n\n @Input('fOutletDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n public override fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n @Input()\n public override isConnectionFromOutlet: boolean = false\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n if (!this.fNode) {\n throw new Error('fNodeOutlet must be inside fNode Directive');\n }\n this.fComponentsStore.addComponent(this.fComponentsStore.fOutlets, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fOutlets, this);\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_OUTPUT = new InjectionToken<FNodeOutputBase>('F_NODE_OUTPUT');\n\n@Directive()\nexport abstract class FNodeOutputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public isConnected: boolean = false;\n\n public override get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export function isNodeOutput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutput]');\n}\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { BooleanExtensions } from '@foblex/core';\nimport { FNodeOutputBase, F_NODE_OUTPUT } from './f-node-output-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { F_NODE, FNodeBase } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\nimport { castToEnum } from '../../domain';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutput]\",\n exportAs: 'fNodeOutput',\n host: {\n '[attr.data-f-output-id]': 'id',\n class: \"f-component f-node-output\",\n '[class.f-node-output-multiple]': 'multiple',\n '[class.f-node-output-disabled]': 'disabled',\n '[class.f-node-output-not-connectable]': '!canBeConnected',\n '[class.f-node-output-self-connectable]': 'isSelfConnectable',\n },\n providers: [ { provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective } ],\n})\nexport class FNodeOutputDirective extends FNodeOutputBase implements OnInit, OnDestroy {\n\n @Input('fOutputId')\n public override id: string = `f-node-output-${ uniqueId++ }`;\n\n @Input('fOutputMultiple')\n public override multiple: boolean = false;\n\n @Input('fOutputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = BooleanExtensions.castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n @Input('fOutputConnectableSide')\n public set _fSide(value: EFConnectableSide | string) {\n this._fConnectableSide = castToEnum(value, 'fOutputConnectableSide', EFConnectableSide);\n this.fNode.refresh();\n }\n\n public get _fSide(): EFConnectableSide {\n return this._fConnectableSide;\n }\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override isConnected: boolean = false;\n\n @Input()\n public override isSelfConnectable: boolean = true;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n if (!this.fNode) {\n throw new Error('fNodeOutput must be inside fNode Directive');\n }\n this.fComponentsStore.addComponent(this.fComponentsStore.fOutputs, this);\n this.fNode.addConnector(this);\n }\n\n public override setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n this.hostElement.classList.toggle('f-node-output-connected', isConnected);\n }\n\n public ngOnDestroy(): void {\n this.fNode.removeConnector(this);\n this.fComponentsStore.removeComponent(this.fComponentsStore.fOutputs, this);\n }\n}\n","import { FNodeInputDirective } from './f-node-input';\nimport { FNodeOutletDirective } from './f-node-outlet';\nimport { FNodeOutputDirective } from './f-node-output';\n\nexport const F_CONNECTORS_PROVIDERS = [\n\n FNodeInputDirective,\n\n FNodeOutletDirective,\n\n FNodeOutputDirective\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class CreateConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\n\nexport class GetInputUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler\n ) {\n }\n}\n","import { IPoint } from '@foblex/core';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(GetInputUnderPointerRequest)\nexport class GetInputUnderPointerExecution\n implements IExecution<GetInputUnderPointerRequest, FConnectorBase | undefined> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fInputs(): FConnectorBase[] {\n return this.fComponentsStore.fInputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(payload: GetInputUnderPointerRequest): FConnectorBase | undefined {\n const output = (this.getOutput(payload.dragHandler) || this.getOutlet(payload.dragHandler))!;\n const inputsUnderPointer = this.getInputsUnderPointer(payload.event.getPosition());\n\n const connectors = output.isSelfConnectable ?\n inputsUnderPointer :\n this.filterSelfConnectable(inputsUnderPointer, output)\n return connectors.length > 0 ? connectors[0] : undefined;\n }\n\n private getOutput(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === dragHandler.connection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.connection.fOutputId);\n }\n\n private getInputsUnderPointer(position: IPoint): FConnectorBase[] {\n const result = this.getInputsInPosition(position);\n const input = this.getFirstConnectableInputOfNodeInPosition(position);\n if (input) {\n result.push(input);\n }\n return result;\n }\n\n private getInputsInPosition(position: IPoint): FConnectorBase[] {\n return this.getElementsFromPoint(position).map((element) =>\n this.fInputs.find(x => x.isContains(element) && x.canBeConnected)\n ).filter((x) => !!x) as FConnectorBase[];\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n private getFirstConnectableInputOfNodeInPosition(position: IPoint): FConnectorBase | undefined {\n return this.getNodesInPosition(position).map((x) => {\n return this.fInputs.find((i) => x.isContains(i.hostElement) && i.canBeConnected);\n }).find((x) => !!x);\n }\n\n private getNodesInPosition(position: IPoint): FNodeBase[] {\n return this.getElementsFromPoint(position).map((element) => {\n return this.fNodes.find((x) => x.isContains(element) && x.fConnectOnNode)\n }).filter((x) => !!x) as FNodeBase[];\n }\n\n private filterSelfConnectable(inputs: FConnectorBase[], connector: FConnectorBase): FConnectorBase[] {\n return inputs.filter((x) => {\n const targetNode = this.fNodes.find((k) => k.isContains(x.hostElement));\n const sourceNode = this.fNodes.find((k) => k.isContains(connector!.hostElement));\n return sourceNode?.hostElement !== targetNode?.hostElement;\n })\n }\n}\n","export function createErrorClass<T>(impl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n };\n\n const constructor = impl(_super);\n constructor.prototype = Object.create(Error.prototype);\n constructor.prototype.constructor = constructor;\n return constructor;\n}\n","import { createErrorClass } from './create-error-class';\n\nexport interface NotFoundError extends Error {\n}\n\nexport interface NotFoundCtor {\n\n new(message?: string): NotFoundError;\n}\n\nexport const NotFoundError: NotFoundCtor = createErrorClass(\n (_super) =>\n function error(this: any, message: string) {\n _super(this);\n this.message = message || 'The requested resource was not found.';\n this.code = 404;\n }\n);\n","import { createErrorClass } from './create-error-class';\n\nexport interface ConflictError extends Error {\n}\n\nexport interface ConflictErrorCtor {\n\n new(message?: string): ConflictError;\n}\n\nexport const ConflictError: ConflictErrorCtor = createErrorClass(\n (_super) =>\n function error(this: any, message: string) {\n _super(this);\n this.message = message || 'Conflict error occurred.';\n this.code = 409;\n }\n);\n","import { NotFoundError } from './not-found-error';\nimport { ConflictError } from './conflict-error';\n\nexport function OutputNotFound(id: string): Error {\n return new NotFoundError(`Output with fOutputId ${ id } not found. Make sure there is no f-connection to a non-existent fOutput.`);\n}\n\nexport function InputNotFound(id: string): Error {\n return new NotFoundError(`Input with fInputId ${ id } not found. Make sure there is no f-connection to a non-existent fInput.`);\n}\n\nexport function RequiredOutput(): Error {\n return new ConflictError(`The fNode must contain at least one fOutput if there is an fOutlet`);\n}\n","import { Injectable } from '@angular/core';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\nimport { OutputNotFound } from '../../../errors';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\n\n@Injectable()\n@FValidatorRegister(GetInputUnderPointerRequest)\nexport class GetInputUnderPointerValidator implements IValidator<GetInputUnderPointerRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetInputUnderPointerRequest): boolean {\n let output = this.getOutput(request.dragHandler) || this.getOutlet(request.dragHandler);\n if (!output) {\n throw OutputNotFound(request.dragHandler.connection.fOutputId);\n }\n return true;\n }\n\n private getOutput(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === dragHandler.connection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.connection.fOutputId);\n }\n}\n","import { GetInputUnderPointerExecution } from './get-input-under-pointer.execution';\nimport { GetInputUnderPointerValidator } from './get-input-under-pointer.validator';\n\nexport const GET_INPUT_UNDER_POINTER_PROVIDERS = [\n\n GetInputUnderPointerExecution,\n\n GetInputUnderPointerValidator,\n];\n","import { FNodeOutletBase } from '../../../../f-connectors';\n\nexport class GetCanBeConnectedOutputByOutletRequest {\n\n constructor(\n public outlet: FNodeOutletBase\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { GetCanBeConnectedOutputByOutletRequest } from './get-can-be-connected-output-by-outlet.request';\nimport { RequiredOutput } from '../../../../errors';\nimport { FExecutionRegister } from '../../../../infrastructure';\n\n@Injectable()\n@FExecutionRegister(GetCanBeConnectedOutputByOutletRequest)\nexport class GetCanBeConnectedOutputByOutletExecution\n implements IHandler<GetCanBeConnectedOutputByOutletRequest, FConnectorBase | undefined> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fOutputs(): FConnectorBase[] {\n return this.fComponentsStore.fOutputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetCanBeConnectedOutputByOutletRequest): FConnectorBase | undefined {\n const outputs = this.getConnectableOutputs(this.getNode(request.outlet));\n if (!outputs.length) {\n throw RequiredOutput();\n }\n return outputs.length > 0 ? outputs[ 0 ] : undefined;\n }\n\n private getConnectableOutputs(node: FNodeBase): FConnectorBase[] {\n return this.fOutputs.filter((x) => {\n return node.isContains(x.hostElement) && x.canBeConnected;\n });\n }\n\n private getNode(outlet: FNodeOutletBase): FNodeBase {\n return this.fNodes.find((x) => x.isContains(outlet.hostElement))!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetCanBeConnectedOutputByOutletRequest } from './get-can-be-connected-output-by-outlet.request';\nimport { FValidatorRegister, IValidator } from '../../../../infrastructure';\nimport { FNodeBase } from '../../../../f-node';\nimport { FComponentsStore } from '../../../../f-storage';\n\n@Injectable()\n@FValidatorRegister(GetCanBeConnectedOutputByOutletRequest)\nexport class GetCanBeConnectedOutputByOutletValidator implements IValidator<GetCanBeConnectedOutputByOutletRequest> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetCanBeConnectedOutputByOutletRequest): boolean {\n return !!this.fNodes.find((x) => x.isContains(request.outlet.hostElement));\n }\n}\n","import { GetCanBeConnectedOutputByOutletExecution } from './get-can-be-connected-output-by-outlet.execution';\nimport { GetCanBeConnectedOutputByOutletValidator } from './get-can-be-connected-output-by-outlet.validator';\n\nexport const GET_CAN_BE_CONNECTED_OUTPUT_BY_OUTLET_PROVIDERS = [\n\n GetCanBeConnectedOutputByOutletExecution,\n\n GetCanBeConnectedOutputByOutletValidator,\n];\n","import { IPoint } from '@foblex/core';\n\nexport class FCreateConnectionEvent {\n\n constructor(\n public fOutputId: string,\n public fInputId: string | undefined,\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { IHandler, IPointerEvent } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase, isNodeOutlet } from '../../../../f-connectors';\nimport { CreateConnectionFinalizeRequest } from './create-connection-finalize.request';\nimport { FExecutionRegister, FFlowMediator } from '../../../../infrastructure';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { GetInputUnderPointerRequest } from '../../get-input-under-pointer';\nimport { OutputNotFound } from '../../../../errors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../get-can-be-connected-output-by-outlet';\nimport { FCreateConnectionEvent } from '../f-create-connection.event';\nimport { ReassignConnectionDragHandler } from '../../reassign-connection';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFinalizeRequest)\nexport class CreateConnectionFinalizeExecution\n implements IHandler<CreateConnectionFinalizeRequest, void> {\n\n private get dragHandler(): ReassignConnectionDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as ReassignConnectionDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFinalizeRequest): void {\n this.emitEvent(request.event);\n this.dragHandler.complete();\n }\n\n private getTargetOutput(output: FConnectorBase | undefined): FConnectorBase {\n if (!output) {\n throw OutputNotFound(this.dragHandler.connection.fOutputId);\n }\n return isNodeOutlet(output.hostElement) ? this.fMediator.send<FNodeOutputBase>(\n new GetCanBeConnectedOutputByOutletRequest(output as FNodeOutletBase)\n ) : output;\n }\n\n private getOutput(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === this.dragHandler.connection.fOutputId);\n }\n\n private getOutlet(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === this.dragHandler.connection.fOutputId);\n }\n\n private emitEvent(event: IPointerEvent): void {\n this.fComponentsStore.fDraggable?.fCreateConnection.emit(\n new FCreateConnectionEvent(\n this.getTargetOutput(this.getOutput() || this.getOutlet()).id,\n this.getInputUnderPointer(event)?.id,\n event.getPosition()\n )\n );\n }\n\n private getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this.fMediator.send<FConnectorBase | undefined>(new GetInputUnderPointerRequest(event, this.dragHandler));\n }\n}\n","import { ILine, IPoint, Point, PointExtensions, RectExtensions, } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport {\n GetConnectionLineRequest, GetOutputRectInFlowRequest, GetOutputRectInFlowResponse, RoundedRect\n} from '../../../domain';\nimport { FConnectionBase } from '../../../f-connection';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { FFlowMediator } from '../../../infrastructure';\n\nexport class CreateConnectionDragHandler implements IDraggableItem {\n\n private onPointerDownFromConnectorRect: RoundedRect = new RoundedRect();\n private onPointerDownToConnectorRect: RoundedRect = new RoundedRect();\n\n private outputSide: EFConnectableSide = EFConnectableSide.BOTTOM;\n\n constructor(\n private fMediator: FFlowMediator,\n public connection: FConnectionBase,\n private onPointerDownPosition: IPoint\n ) {\n }\n\n public initialize(): void {\n const outputRect = this.fMediator.send<GetOutputRectInFlowResponse>(\n new GetOutputRectInFlowRequest(this.connection.fOutputId)\n );\n this.outputSide = outputRect.fConnectableSide;\n this.onPointerDownFromConnectorRect = RoundedRect.fromRoundedRect(outputRect.rect);\n console.log('onPointerDown1', this.onPointerDownFromConnectorRect.x, this.onPointerDownFromConnectorRect.y);\n\n this.onPointerDownToConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.onPointerDownPosition.x, this.onPointerDownPosition.y, 0, 0)\n );\n console.log('onPointerDown2', this.onPointerDownPosition);\n (this.connection as FConnectionBase).show();\n this.move(PointExtensions.initialize());\n }\n\n public move(difference: IPoint): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.onPointerDownFromConnectorRect,\n this.onPointerDownToConnectorRect.addPoint(difference),\n this.connection.fBehavior,\n this.outputSide,\n EFConnectableSide.TOP,\n )\n );\n\n this.connection.setLine(line.point1, this.outputSide, line.point2, EFConnectableSide.TOP);\n this.connection.redraw();\n }\n\n public complete(): void {\n this.connection.redraw();\n (this.connection as FConnectionBase).hide();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionFinalizeRequest } from './create-connection-finalize.request';\nimport { FValidatorRegister, IValidator } from '../../../../infrastructure';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../create-connection.drag-handler';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionFinalizeRequest)\nexport class CreateConnectionFinalizeValidator implements IValidator<CreateConnectionFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CreateConnectionFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CreateConnectionDragHandler\n );\n }\n}\n","import { CreateConnectionFinalizeExecution } from './create-connection-finalize.execution';\nimport { CreateConnectionFinalizeValidator } from './create-connection-finalize.validator';\nexport const CREATE_CONNECTION_FINALIZE_PROVIDERS = [\n\n CreateConnectionFinalizeExecution,\n\n CreateConnectionFinalizeValidator,\n];\n","import { IPoint } from '@foblex/core';\nimport { FConnectorBase } from '../../../../../f-connectors';\n\nexport class CreateConnectionDragHandlerRequest {\n\n constructor(\n public onPointerDownPosition: IPoint,\n public connector: FConnectorBase\n ) {\n }\n}\n","import { IHandler, ITransformModel, Point } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionDragHandlerRequest } from './create-connection-drag-handler.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FFlowMediator } from '../../../../../infrastructure';\nimport { FDraggableDataContext } from '../../../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../../create-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionDragHandlerRequest)\nexport class CreateConnectionDragHandlerExecution\n implements IHandler<CreateConnectionDragHandlerRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator,\n ) {\n }\n\n public handle(request: CreateConnectionDragHandlerRequest): void {\n this.fComponentsStore.fTempConnection!.fOutputId = request.connector.id;\n this.fComponentsStore.fTempConnection!.initialize();\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n const positionRelativeToFlowComponent = Point.fromPoint(request.onPointerDownPosition).elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.onPointerDownPosition = positionRelativeToFlowComponent;\n\n const positionRelativeToCanvasComponent = Point.fromPoint(positionRelativeToFlowComponent).mult(this.transform.scale)\n .sub(this.transform.position).sub(this.transform.scaledPosition).div(this.transform.scale);\n\n this.fDraggableDataContext.draggableItems = [\n new CreateConnectionDragHandler(this.fMediator, this.fComponentsStore.fTempConnection!, positionRelativeToCanvasComponent)\n ];\n }\n}\n","import { CreateConnectionDragHandlerExecution } from './create-connection-drag-handler.execution';\n\nexport const CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS = [\n\n CreateConnectionDragHandlerExecution,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class CreateConnectionFromOutletPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler, IPoint } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutletPreparationRequest } from './create-connection-from-outlet-preparation.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FFlowMediator } from '../../../../../infrastructure';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase } from '../../../../../f-connectors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../../get-can-be-connected-output-by-outlet';\nimport { RequiredOutput } from '../../../../../errors';\nimport { CreateConnectionDragHandlerRequest } from '../create-connection-drag-handler';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFromOutletPreparationRequest)\nexport class CreateConnectionFromOutletPreparationExecution\n implements IHandler<CreateConnectionFromOutletPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFromOutletPreparationRequest): void {\n const { event } = request;\n const node = this.fComponentsStore.findNode(event.targetElement)!;\n\n const outlet = this.fComponentsStore.fOutlets.find((x) => {\n return x.hostElement.contains(event.targetElement);\n });\n if (!outlet) {\n throw new Error('Outlet not found');\n }\n const nodeOutputs = this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n (outlet as FNodeOutletBase).setOutputs(nodeOutputs);\n\n if (outlet.canBeConnected) {\n\n if ((outlet as FNodeOutletBase).isConnectionFromOutlet) {\n\n this.createDragHandler(event.getPosition(), outlet);\n } else {\n const output = this.fMediator.send<FNodeOutputBase>(\n new GetCanBeConnectedOutputByOutletRequest(outlet as FNodeOutletBase)\n );\n if (!output) {\n throw RequiredOutput();\n }\n this.createDragHandler(event.getPosition(), output);\n }\n }\n }\n\n private createDragHandler(position: IPoint, output: FConnectorBase): void {\n this.fMediator.send(new CreateConnectionDragHandlerRequest(position, output));\n }\n}\n","import { CreateConnectionFromOutletPreparationExecution } from './create-connection-from-outlet-preparation.execution';\n\nexport const CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS = [\n\n CreateConnectionFromOutletPreparationExecution,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class CreateConnectionFromOutputPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler, IPoint, IRect } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation.request';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { CreateConnectionDragHandlerRequest } from '../create-connection-drag-handler';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FFlowMediator } from '../../../../../infrastructure';\nimport { GetElementRectInFlowRequest } from '../../../../../domain';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFromOutputPreparationRequest)\nexport class CreateConnectionFromOutputPreparationExecution\n implements IHandler<CreateConnectionFromOutputPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFromOutputPreparationRequest): void {\n const { event } = request;\n\n const output = this.fComponentsStore.fOutputs.find((x) => {\n return x.hostElement.contains(event.targetElement);\n });\n if (!output) {\n throw new Error('Output not found');\n }\n if (output.canBeConnected) {\n this.createDragHandler(event.getPosition(), output);\n }\n }\n\n private createDragHandler(position: IPoint, output: FConnectorBase): void {\n this.fMediator.send(new CreateConnectionDragHandlerRequest(position, output));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation.request';\nimport { IPointerEvent } from '@foblex/core';\nimport { FValidatorRegister, IValidator } from '../../../../../infrastructure';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FNodeBase } from '../../../../../f-node';\nimport { FConnectorBase, isNodeOutput } from '../../../../../f-connectors';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionFromOutputPreparationRequest)\nexport class CreateConnectionFromOutputPreparationValidator implements IValidator<CreateConnectionFromOutputPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: CreateConnectionFromOutputPreparationRequest): boolean {\n return this.isNodeOutput(request.event.targetElement, this.getNode(request.event));\n }\n\n private getNode(event: IPointerEvent): FNodeBase {\n return this.fComponentsStore.findNode(event.targetElement)!;\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n return isNodeOutput(targetElement) && !this.getOutlets(node).length;\n }\n\n private getOutlets(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { CreateConnectionFromOutputPreparationExecution } from './create-connection-from-output-preparation.execution';\nimport { CreateConnectionFromOutputPreparationValidator } from './create-connection-from-output-preparation.validator';\n\nexport const CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS = [\n\n CreateConnectionFromOutputPreparationExecution,\n\n CreateConnectionFromOutputPreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class CreateConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler, IPointerEvent } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, isNodeOutlet, isNodeOutput } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { CreateConnectionPreparationRequest } from './create-connection-preparation.request';\nimport { FExecutionRegister, FFlowMediator } from '../../../../infrastructure';\nimport { CreateConnectionFromOutletPreparationRequest } from './create-connection-from-outlet-preparation';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionPreparationRequest)\nexport class CreateConnectionPreparationExecution\n implements IHandler<CreateConnectionPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n ) {\n }\n\n public handle(request: CreateConnectionPreparationRequest): void {\n if (isNodeOutlet(request.event.targetElement)) {\n this.fMediator.send<void>(new CreateConnectionFromOutletPreparationRequest(request.event));\n } else if (this.isNodeOutput(request.event.targetElement, this.getNode(request.event))) {\n this.fMediator.send<void>(new CreateConnectionFromOutputPreparationRequest(request.event));\n }\n }\n\n private getNode(event: IPointerEvent): FNodeBase {\n return this.fComponentsStore.findNode(event.targetElement)!;\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n return isNodeOutput(targetElement) && !this.getOutlets(node).length;\n }\n\n private getOutlets(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionPreparationRequest } from './create-connection-preparation.request';\nimport { FValidatorRegister, IValidator } from '../../../../infrastructure';\nimport { FNodeBase } from '../../../../f-node';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IPointerEvent } from '@foblex/core';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionPreparationRequest)\nexport class CreateConnectionPreparationValidator implements IValidator<CreateConnectionPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CreateConnectionPreparationRequest): boolean {\n return !!this.getNode(request.event) && this.isValidConditions();\n }\n\n private getNode(event: IPointerEvent): FNodeBase | undefined {\n return this.fComponentsStore.findNode(event.targetElement);\n }\n\n private isValidConditions(): boolean {\n return !this.fDraggableDataContext.draggableItems.length && !!this.fComponentsStore.fTempConnection;\n }\n}\n","import { CreateConnectionPreparationExecution } from './create-connection-preparation.execution';\nimport { CreateConnectionPreparationValidator } from './create-connection-preparation.validator';\nimport { CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS } from './create-connection-from-outlet-preparation';\nimport { CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS } from './create-connection-from-output-preparation';\nimport { CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS } from './create-connection-drag-handler';\n\nexport const CREATE_CONNECTION_PREPARATION_PROVIDERS = [\n\n ...CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS,\n\n ...CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS,\n\n ...CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS,\n\n CreateConnectionPreparationExecution,\n\n CreateConnectionPreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class ReassignConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export class FReassignConnectionEvent<T = any> {\n\n constructor(\n public connectionId: T,\n public fOutputId: T,\n public oldFInputId: T,\n public newFInputId: T\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionFinalizeRequest } from './reassign-connection-finalize.request';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../../infrastructure';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\nimport { FDraggableBase } from '../../../f-draggable-base';\nimport { GetInputUnderPointerRequest } from '../../get-input-under-pointer';\nimport { FReassignConnectionEvent } from '../f-reassign-connection.event';\nimport { IPointerEvent } from '@foblex/core';\nimport { FConnectorBase } from '../../../../f-connectors';\n\n@Injectable()\n@FExecutionRegister(ReassignConnectionFinalizeRequest)\nexport class ReassignConnectionFinalizeExecution implements IExecution<ReassignConnectionFinalizeRequest, void> {\n\n private get fDraggable(): FDraggableBase {\n return this.fComponentsStore.fDraggable!;\n }\n\n private get dragHandler(): ReassignConnectionDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as ReassignConnectionDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: ReassignConnectionFinalizeRequest): void {\n this.emitEvent(request.event);\n this.dragHandler.complete();\n }\n\n private emitEvent(event: IPointerEvent): void {\n const input = this.getInputUnderPointer(event);\n if (\n !input || !this.isReassignToDifferentInput(input)\n ) {\n return;\n }\n this.fDraggable.fReassignConnection.emit(\n new FReassignConnectionEvent(\n this.dragHandler.connection.fId,\n this.dragHandler.connection.fOutputId,\n this.dragHandler.connection.fInputId,\n input.id\n )\n );\n }\n\n private getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this.fMediator.send<FConnectorBase | undefined>(new GetInputUnderPointerRequest(event, this.dragHandler));\n }\n\n private isReassignToDifferentInput(inputsUnderPointer: FConnectorBase): boolean {\n return this.dragHandler.connection.fInputId !== inputsUnderPointer.id;\n }\n}\n","import { ILine, IPoint, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport {\n GetConnectionLineRequest,\n GetInputRectInFlowRequest,\n GetInputRectInFlowResponse,\n GetOutputRectInFlowRequest,\n GetOutputRectInFlowResponse, RoundedRect\n} from '../../../domain';\nimport { FConnectionBase } from '../../../f-connection';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { FFlowMediator } from '../../../infrastructure';\n\nexport class ReassignConnectionDragHandler implements IDraggableItem {\n\n private onPointerDownFromConnectorRect: RoundedRect = new RoundedRect();\n private onPointerDownToConnectorRect: RoundedRect = new RoundedRect();\n\n private outputSide: EFConnectableSide = EFConnectableSide.BOTTOM;\n private inputSide: EFConnectableSide = EFConnectableSide.TOP;\n\n constructor(\n private fMediator: FFlowMediator,\n public connection: FConnectionBase\n ) {\n }\n\n public initialize(): void {\n const fromConnector = this.fMediator.send<GetOutputRectInFlowResponse>(\n new GetOutputRectInFlowRequest(this.connection.fOutputId)\n );\n this.inputSide = this.fMediator.send<GetInputRectInFlowResponse>(new GetInputRectInFlowRequest(this.connection.fInputId)).fConnectableSide;\n this.outputSide = fromConnector.fConnectableSide;\n this.onPointerDownFromConnectorRect = RoundedRect.fromRoundedRect(fromConnector.rect);\n this.onPointerDownToConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.connection.line.point2.x, this.connection.line.point2.y, 0, 0)\n );\n }\n\n public move(difference: IPoint): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.onPointerDownFromConnectorRect,\n this.onPointerDownToConnectorRect.addPoint(difference),\n this.connection.fBehavior,\n this.outputSide,\n this.inputSide,\n )\n );\n\n this.connection.setLine(line.point1, this.outputSide, line.point2, this.inputSide);\n this.connection.redraw();\n }\n\n public complete(): void {\n const fromConnector = this.fMediator.send<GetOutputRectInFlowResponse>(\n new GetOutputRectInFlowRequest(this.connection.fOutputId)\n );\n const toConnector = this.fMediator.send<GetInputRectInFlowResponse>(new GetInputRectInFlowRequest(this.connection.fInputId));\n\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n fromConnector.rect,\n toConnector.rect,\n this.connection.fBehavior,\n fromConnector.fConnectableSide,\n toConnector.fConnectableSide,\n )\n );\n\n this.connection.setLine(line.point1, fromConnector.fConnectableSide, line.point2, toConnector.fConnectableSide);\n this.connection.redraw();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionFinalizeRequest } from './reassign-connection-finalize.request';\nimport { FValidatorRegister, IValidator } from '../../../../infrastructure';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\n\n@Injectable()\n@FValidatorRegister(ReassignConnectionFinalizeRequest)\nexport class ReassignConnectionFinalizeValidator implements IValidator<ReassignConnectionFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: ReassignConnectionFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ReassignConnectionDragHandler\n );\n }\n}\n","import { ReassignConnectionFinalizeExecution } from './reassign-connection-finalize.execution';\nimport { ReassignConnectionFinalizeValidator } from './reassign-connection-finalize.validator';\n\nexport const REASSIGN_CONNECTION_FINALIZE_PROVIDERS = [\n\n ReassignConnectionFinalizeExecution,\n\n ReassignConnectionFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class ReassignConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionPreparationRequest } from './reassign-connection-preparation.request';\nimport { IPoint, ITransformModel, Point } from '@foblex/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { UpdateItemAndChildrenLayersRequest } from '../../../../domain';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../../infrastructure';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS, FConnectionBase, FConnectionComponent } from '../../../../f-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ReassignConnectionPreparationRequest)\nexport class ReassignConnectionPreparationExecution implements IExecution<ReassignConnectionPreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ReassignConnectionPreparationRequest): void {\n const connectionToReassign = this.getConnectionHandler(\n this.getDragHandleElement(request.event.getPosition())\n )!;\n if (connectionToReassign.fDraggingDisabled) {\n return;\n }\n\n this.fMediator.send<void>(\n new UpdateItemAndChildrenLayersRequest(\n connectionToReassign, this.fComponentsStore.fCanvas!.fConnectionsContainer.nativeElement\n )\n );\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n\n this.fDraggableDataContext.draggableItems = [\n new ReassignConnectionDragHandler(this.fMediator, connectionToReassign)\n ];\n }\n\n private getDragHandleElement(position: IPoint): HTMLElement {\n return this.getElementsFromPoint(position).filter((x) => {\n return !!this.getConnectionHandler(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\n }).find((x) => !!x)!;\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n public getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fConnections.find(c => c.isContains(element));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionPreparationRequest } from './reassign-connection-preparation.request';\nimport { FValidatorRegister, IValidator } from '../../../../infrastructure';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS, FConnectionBase } from '../../../../f-connection';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IPoint } from '@foblex/core';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FValidatorRegister(ReassignConnectionPreparationRequest)\nexport class ReassignConnectionPreparationValidator implements IValidator<ReassignConnectionPreparationRequest> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ReassignConnectionPreparationRequest): boolean {\n return !!this.getDragHandleElements(request.event.getPosition()).length\n && !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getDragHandleElements(position: IPoint): HTMLElement[] {\n return this.getElementsFromPoint(position).filter((x) => {\n return !!this.getConnectionHandler(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\n });\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n public getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fConnections.find(c => c.isContains(element));\n }\n}\n","import { ReassignConnectionPreparationExecution } from './reassign-connection-preparation.execution';\nimport { ReassignConnectionPreparationValidator } from './reassign-connection-preparation.validator';\n\nexport const REASSIGN_CONNECTION_PREPARATION_PROVIDERS = [\n\n ReassignConnectionPreparationExecution,\n\n ReassignConnectionPreparationValidator,\n];\n","import {\n CREATE_CONNECTION_FINALIZE_PROVIDERS,\n CREATE_CONNECTION_PREPARATION_PROVIDERS,\n GET_CAN_BE_CONNECTED_OUTPUT_BY_OUTLET_PROVIDERS\n} from './create-connection';\nimport {\n GET_INPUT_UNDER_POINTER_PROVIDERS,\n} from './get-input-under-pointer';\nimport {\n REASSIGN_CONNECTION_FINALIZE_PROVIDERS,\n REASSIGN_CONNECTION_PREPARATION_PROVIDERS,\n} from './reassign-connection';\n\nexport const CONNECTIONS_PROVIDERS = [\n\n ...CREATE_CONNECTION_FINALIZE_PROVIDERS,\n\n ...CREATE_CONNECTION_PREPARATION_PROVIDERS,\n\n ...GET_CAN_BE_CONNECTED_OUTPUT_BY_OUTLET_PROVIDERS,\n\n ...REASSIGN_CONNECTION_FINALIZE_PROVIDERS,\n\n ...REASSIGN_CONNECTION_PREPARATION_PROVIDERS,\n\n ...GET_INPUT_UNDER_POINTER_PROVIDERS,\n];\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/core';\n\nexport class GetNodePaddingRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodePaddingRequest } from './get-node-padding.request';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/core';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(GetNodePaddingRequest)\nexport class GetNodePaddingExecution\n implements IExecution<GetNodePaddingRequest, [ number, number, number, number ]> {\n\n constructor(\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: GetNodePaddingRequest): [ number, number, number, number ] {\n return request.fNode.fIncludePadding ? this.getPaddingData(request.fNode, request.rect) : [ 0, 0, 0, 0 ];\n }\n\n private getPaddingData(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n const style = this.fBrowser.window.getComputedStyle(node.hostElement);\n return [\n this.fBrowser.toPixels(style.paddingLeft, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingTop, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingRight, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingBottom, rect.width, rect.height, style.fontSize)\n ];\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedNodeRectRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedNodeRectRequest } from './get-normalized-node-rect.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/core';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedNodeRectRequest)\nexport class GetNormalizedNodeRectExecution\n implements IExecution<GetNormalizedNodeRectRequest, IRect> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetNormalizedNodeRectRequest): IRect {\n return this.normalizeRect(RectExtensions.fromElement(request.fNode.hostElement), request.fNode.position);\n }\n\n private normalizeRect(scaledRect: IRect, position: IPoint): IRect {\n const rect = RectExtensions.div(scaledRect, this.fComponentsStore.fCanvas!.transform.scale);\n\n return RectExtensions.initialize(position.x, position.y, rect.width, rect.height);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedParentNodeRectRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedParentNodeRectRequest } from './get-normalized-parent-node-rect.request';\nimport { IRect, RectExtensions } from '@foblex/core';\nimport { GetNormalizedNodeRectRequest } from '../get-normalized-node-rect';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { GetNodePaddingRequest } from '../get-node-padding';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedParentNodeRectRequest)\nexport class GetNormalizedParentNodeRectExecution\n implements IExecution<GetNormalizedParentNodeRectRequest, IRect> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: GetNormalizedParentNodeRectRequest): IRect {\n let result = RectExtensions.initialize(-Infinity, -Infinity, Infinity, Infinity);\n const parentNode = this.getNode(request.fNode.fParentId);\n if (parentNode) {\n result = this.getParentRect(parentNode);\n }\n return result;\n }\n\n private getNode(fId?: string | null): FNodeBase | undefined {\n return this.fComponentsStore.fNodes.find((x) => x.fId === fId);\n }\n\n private getParentRect(node: FNodeBase): IRect {\n const rect = this.getNormalizedNodeRect(node);\n const padding = this.getNodePadding(node, rect);\n return RectExtensions.initialize(\n rect.x + padding[0],\n rect.y + padding[1],\n rect.width - padding[0] - padding[2],\n rect.height - padding[1] - padding[3]\n );\n }\n\n private getNormalizedNodeRect(node: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(node));\n }\n\n private getNodePadding(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this.fMediator.send<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetParentNodesRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetParentNodesRequest } from './get-parent-nodes.request';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetParentNodesRequest)\nexport class GetParentNodesExecution\n implements IExecution<GetParentNodesRequest, FNodeBase[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetParentNodesRequest): FNodeBase[] {\n return this.getParentNodes(request.fNode, new Set<string>(), []);\n }\n\n private getParentNodes(fNode: FNodeBase, visited: Set<string>, result: FNodeBase[]): FNodeBase[] {\n if (visited.has(fNode.fId)) {\n throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fNode.fId);\n }\n visited.add(fNode.fId);\n\n const parent = this.fComponentsStore.fNodes.find((x) => x.fId === fNode.fParentId);\n if (!parent) {\n return result;\n }\n\n result.push(parent);\n return this.getParentNodes(parent, visited, result);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class IsArrayHasParentNodeRequest {\n\n constructor(\n public fNode: FNodeBase,\n public fNodes: FNodeBase[]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IsArrayHasParentNodeRequest } from './is-array-has-parent-node.request';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FNodeBase } from '../../../f-node';\nimport { GetParentNodesRequest } from '../get-parent-nodes';\n\n@Injectable()\n@FExecutionRegister(IsArrayHasParentNodeRequest)\nexport class IsArrayHasParentNodeExecution\n implements IExecution<IsArrayHasParentNodeRequest, boolean> {\n\n constructor(\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: IsArrayHasParentNodeRequest): boolean {\n return this.isParentNodeInArray(this.getParentNodeIds(request.fNode), request.fNodes);\n }\n\n private getParentNodeIds(fNode: FNodeBase): string[] {\n return this.getParentNodes(fNode).map((x) => x.fId);\n }\n\n private getParentNodes(fNode: FNodeBase): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetParentNodesRequest(fNode));\n }\n\n private isParentNodeInArray(parentNodeIds: string[], fNodes: FNodeBase[]): boolean {\n return fNodes.some((x) => parentNodeIds.includes(x.fId));\n }\n}\n\n\n","import { GetNormalizedNodeRectExecution } from './get-normalized-node-rect';\nimport { GetParentNodesExecution } from './get-parent-nodes';\nimport { IsArrayHasParentNodeExecution } from './is-array-has-parent-node';\nimport { GetNormalizedParentNodeRectExecution } from './get-normalized-parent-node-rect';\nimport { GetNodePaddingExecution } from './get-node-padding';\n\nexport const DRAG_AND_DROP_COMMON_PROVIDERS = [\n\n GetNodePaddingExecution,\n\n GetNormalizedNodeRectExecution,\n\n GetNormalizedParentNodeRectExecution,\n\n GetParentNodesExecution,\n\n IsArrayHasParentNodeExecution\n];\n","import { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\n\nexport class PutInputConnectionHandlersToArrayRequest {\n\n constructor(\n public nodeDragHandler: NodeDragHandler,\n public outputIds: string[],\n public result: IDraggableItem[]\n ) {\n }\n}\n","import { ILine, IPoint } from '@foblex/core';\nimport { IDraggableItem } from '../i-draggable-item';\nimport {\n GetInputRectInFlowRequest,\n GetInputRectInFlowResponse,\n GetOutputRectInFlowRequest,\n GetOutputRectInFlowResponse, RoundedRect\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FFlowMediator } from '../../infrastructure';\nimport { Directive } from '@angular/core';\nimport { INodeMoveRestrictions } from './create-move-nodes-drag-model-from-selection';\n\n@Directive()\nexport abstract class ConnectionBaseDragHandler implements IDraggableItem {\n\n protected fromConnectorRect: RoundedRect = new RoundedRect();\n protected fromConnectorSide: EFConnectableSide = EFConnectableSide.BOTTOM;\n\n protected toConnectorRect: RoundedRect = new RoundedRect();\n protected toConnectorSide: EFConnectableSide = EFConnectableSide.TOP;\n\n protected constructor(\n protected fMediator: FFlowMediator,\n public connection: FConnectionBase,\n ) {\n }\n\n public initialize(): void {\n const fromConnector = this.fMediator.send<GetOutputRectInFlowResponse>(\n new GetOutputRectInFlowRequest(this.connection.fOutputId)\n );\n this.fromConnectorRect = RoundedRect.fromRoundedRect(fromConnector.rect);\n this.fromConnectorSide = fromConnector.fConnectableSide;\n\n const toConnector = this.fMediator.send<GetInputRectInFlowResponse>(\n new GetInputRectInFlowRequest(this.connection.fInputId)\n );\n this.toConnectorRect = RoundedRect.fromRoundedRect(toConnector.rect);\n this.toConnectorSide = toConnector.fConnectableSide;\n }\n\n public abstract move(difference: IPoint): void;\n\n protected getDifference(difference: IPoint, restrictions: INodeMoveRestrictions): IPoint {\n return {\n x: Math.min(Math.max(difference.x, restrictions.min.x), restrictions.max.x),\n y: Math.min(Math.max(difference.y, restrictions.min.y), restrictions.max.y)\n }\n }\n\n protected redrawConnection(line: ILine): void {\n this.connection.setLine(line.point1, this.fromConnectorSide, line.point2, this.toConnectorSide);\n this.connection.redraw();\n }\n}\n","import { ILine, IPoint } from '@foblex/core';\nimport { FConnectionBase } from '../../f-connection';\nimport { FFlowMediator } from '../../infrastructure';\nimport {\n GetConnectionLineRequest,\n} from '../../domain';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { INodeMoveRestrictions } from './create-move-nodes-drag-model-from-selection';\n\nexport class ConnectionDragHandler extends ConnectionBaseDragHandler {\n\n private sourceRestrictions!: INodeMoveRestrictions;\n private targetRestrictions!: INodeMoveRestrictions;\n\n constructor(\n fMediator: FFlowMediator,\n connection: FConnectionBase\n ) {\n super(fMediator, connection);\n }\n\n public setOutputRestrictions(min: IPoint, max: IPoint) {\n this.sourceRestrictions = { min, max };\n }\n\n public setInputRestrictions(min: IPoint, max: IPoint) {\n this.targetRestrictions = { min, max };\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fromConnectorRect.addPoint(this.getDifference({ ...difference }, this.sourceRestrictions)),\n this.toConnectorRect.addPoint(this.getDifference({ ...difference }, this.targetRestrictions)),\n this.connection.fBehavior,\n this.fromConnectorSide,\n this.toConnectorSide\n ));\n }\n}\n","import { ILine, IPoint } from '@foblex/core';\nimport {\n GetConnectionLineRequest,\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FFlowMediator } from '../../infrastructure';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\n\nexport class ConnectionTargetDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FFlowMediator,\n connection: FConnectionBase,\n public minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, connection);\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fromConnectorRect,\n this.toConnectorRect.addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n this.connection.fBehavior,\n this.fromConnectorSide,\n this.toConnectorSide\n ));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PutInputConnectionHandlersToArrayRequest } from './put-input-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../../../infrastructure';\nimport { FNodeBase } from '../../../../../f-node';\nimport { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\nimport { ConnectionDragHandler } from '../../../connection.drag-handler';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { FConnectionBase } from '../../../../../f-connection';\nimport { ConnectionTargetDragHandler } from '../../../connection-target.drag-handler';\n\n@Injectable()\n@FExecutionRegister(PutInputConnectionHandlersToArrayRequest)\nexport class PutInputConnectionHandlersToArrayExecution\n implements IExecution<PutInputConnectionHandlersToArrayRequest, void> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: PutInputConnectionHandlersToArrayRequest): void {\n this.getInputConnections(request.nodeDragHandler.fNode).forEach((connection) => {\n const index = this.getExistingConnectionHandlerIndex(request.result, connection);\n if (index !== -1) {\n this.updateExistingConnectionHandler(request.result, index, request.nodeDragHandler);\n } else {\n request.result.push(this.createNewConnectionHandler(request.nodeDragHandler, request.outputIds, connection));\n }\n });\n }\n\n public getInputConnections(node: FNodeBase): FConnectionBase[] {\n const inputIds = new Set(this.getInputsForNode(node).map((x) => x.id));\n return this.fConnections.filter((x) => inputIds.has(x.fInputId));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getExistingConnectionHandlerIndex(result: IDraggableItem[], connection: FConnectionBase): number {\n return result.findIndex(\n (x) => x instanceof ConnectionDragHandler && x.connection.fId === connection.fId\n );\n }\n\n private createNewConnectionHandler(nodeDragHandler: NodeDragHandler, outputIds: string[], connection: FConnectionBase): IDraggableItem {\n let result: IDraggableItem;\n if (outputIds.includes(connection.fOutputId)) {\n result = this.getNewConnectionHandler(connection, nodeDragHandler);\n } else {\n result = this.getNewSourceConnectionHandler(connection, nodeDragHandler);\n }\n return result;\n }\n\n private getNewConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionDragHandler {\n const handler = new ConnectionDragHandler(this.fMediator, connection);\n handler.setInputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n return handler;\n }\n\n private updateExistingConnectionHandler(result: IDraggableItem[], index: number, nodeDragHandler: NodeDragHandler): void {\n (result[ index ] as ConnectionDragHandler).setInputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n\n private getNewSourceConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionTargetDragHandler {\n return new ConnectionTargetDragHandler(this.fMediator, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n}\n\n","import { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\n\nexport class PutOutputConnectionHandlersToArrayRequest {\n\n constructor(\n public nodeDragHandler: NodeDragHandler,\n public inputIds: string[],\n public result: IDraggableItem[]\n ) {\n }\n}\n","import { ILine, IPoint } from '@foblex/core';\nimport {\n GetConnectionLineRequest\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FFlowMediator } from '../../infrastructure';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\n\nexport class ConnectionSourceDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FFlowMediator,\n connection: FConnectionBase,\n public minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, connection);\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fromConnectorRect.addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n this.toConnectorRect,\n this.connection.fBehavior,\n this.fromConnectorSide,\n this.toConnectorSide\n ));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PutOutputConnectionHandlersToArrayRequest } from './put-output-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../../../infrastructure';\nimport { FNodeBase } from '../../../../../f-node';\nimport { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\nimport { ConnectionDragHandler } from '../../../connection.drag-handler';\nimport { ConnectionSourceDragHandler } from '../../../connection-source.drag-handler';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { FConnectionBase } from '../../../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(PutOutputConnectionHandlersToArrayRequest)\nexport class PutOutputConnectionHandlersToArrayExecution\n implements IExecution<PutOutputConnectionHandlersToArrayRequest, void> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: PutOutputConnectionHandlersToArrayRequest): void {\n this.getOutputConnections(request.nodeDragHandler.fNode).forEach((connection) => {\n const index = this.getExistingConnectionHandlerIndex(request.result, connection);\n if (index !== -1) {\n this.updateExistingConnectionHandler(request.result, index, request.nodeDragHandler);\n } else {\n request.result.push(this.createNewConnectionHandler(request.nodeDragHandler, request.inputIds, connection));\n }\n });\n }\n\n public getOutputConnections(node: FNodeBase): FConnectionBase[] {\n const outputsIds = new Set(this.getOutputsForNode(node).map((x) => x.id));\n return this.fConnections.filter((x) => outputsIds.has(x.fOutputId));\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getExistingConnectionHandlerIndex(result: IDraggableItem[], connection: FConnectionBase): number {\n return result.findIndex(\n (x) => x instanceof ConnectionDragHandler && x.connection.fId === connection.fId\n );\n }\n\n private createNewConnectionHandler(nodeDragHandler: NodeDragHandler, inputIds: string[], connection: FConnectionBase): IDraggableItem {\n let result: IDraggableItem;\n if (inputIds.includes(connection.fInputId)) {\n result = this.getNewConnectionHandler(connection, nodeDragHandler);\n } else {\n result = this.getNewSourceConnectionHandler(connection, nodeDragHandler);\n }\n return result;\n }\n\n private getNewConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionDragHandler {\n const handler = new ConnectionDragHandler(this.fMediator, connection);\n handler.setOutputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n return handler;\n }\n\n private updateExistingConnectionHandler(result: IDraggableItem[], index: number, nodeDragHandler: NodeDragHandler): void {\n (result[ index ] as ConnectionDragHandler).setOutputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n\n private getNewSourceConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionSourceDragHandler {\n return new ConnectionSourceDragHandler(this.fMediator, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n}\n\n","import { FNodeBase } from '../../../../../f-node';\n\nexport class GetNodeMoveRestrictionsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public hasParentNodeInSelected: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodeMoveRestrictionsRequest } from './get-node-move-restrictions.request';\nimport { IRect, PointExtensions } from '@foblex/core';\nimport { INodeMoveRestrictions } from './i-node-move-restrictions';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../../../infrastructure';\nimport { GetNormalizedNodeRectRequest, GetNormalizedParentNodeRectRequest } from '../../../../domain';\nimport { FNodeBase } from '../../../../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetNodeMoveRestrictionsRequest)\nexport class GetNodeMoveRestrictionsExecution\n implements IExecution<GetNodeMoveRestrictionsRequest, INodeMoveRestrictions> {\n\n constructor(\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: GetNodeMoveRestrictionsRequest): INodeMoveRestrictions {\n if (request.fNode.fParentId && !request.hasParentNodeInSelected) {\n const fParentNodeRect = this.getParentNodeRect(request.fNode);\n const fCurrentNodeRect = this.getCurrentNodeRect(request.fNode);\n return {\n min: PointExtensions.initialize(fParentNodeRect.x - fCurrentNodeRect.x, fParentNodeRect.y - fCurrentNodeRect.y),\n max: PointExtensions.initialize(\n (fParentNodeRect.x + fParentNodeRect.width) - (fCurrentNodeRect.x + fCurrentNodeRect.width),\n (fParentNodeRect.y + fParentNodeRect.height) - (fCurrentNodeRect.y + fCurrentNodeRect.height),\n )\n };\n }\n return { ...DEFAULT_RESTRICTIONS };\n }\n\n private getCurrentNodeRect(fNode: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(fNode));\n }\n\n private getParentNodeRect(fNode: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedParentNodeRectRequest(fNode));\n }\n}\n\nconst DEFAULT_RESTRICTIONS: INodeMoveRestrictions = {\n min: PointExtensions.initialize(-Infinity, -Infinity),\n max: PointExtensions.initialize(Infinity, Infinity)\n};\n","export class CreateMoveNodesDragModelFromSelectionRequest {\n\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { FNodeBase } from '../../f-node';\nimport {\n INodeMoveRestrictions\n} from './create-move-nodes-drag-model-from-selection';\n\nexport class NodeDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n public fNode: FNodeBase,\n public minDistance: IPoint,\n public maxDistance: IPoint,\n ) {\n this.onPointerDownPosition = { ...fNode.position };\n }\n\n public move(difference: IPoint): void {\n const restrictedDifference = this.getDifference(difference, { min: this.minDistance, max: this.maxDistance });\n\n this.redrawNode(this.getNewPosition(restrictedDifference));\n this.fDraggableDataContext.fLineAlignment?.handle(restrictedDifference);\n }\n\n private getNewPosition(difference: IPoint): IPoint {\n return Point.fromPoint(this.onPointerDownPosition).add(difference);\n }\n\n private getDifference(difference: IPoint, restrictions: INodeMoveRestrictions): IPoint {\n return {\n x: Math.min(Math.max(difference.x, restrictions.min.x), restrictions.max.x),\n y: Math.min(Math.max(difference.y, restrictions.min.y), restrictions.max.y)\n }\n }\n\n private redrawNode(position: IPoint): void {\n this.fNode.updatePosition(position);\n this.fNode.redraw();\n }\n\n public complete(): void {\n this.fNode.positionChange.emit(this.fNode.position);\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n\nexport class NodeResizeByChildDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n\n }\n\n\n public move(difference: IPoint): void {\n\n }\n\n public complete(): void {\n\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from './create-move-nodes-drag-model-from-selection.request';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { NodeDragHandler } from '../node.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { INodeWithDistanceRestrictions } from './i-node-with-distance-restrictions';\nimport { GetNodeMoveRestrictionsRequest, INodeMoveRestrictions } from './domain/get-node-move-restrictions';\nimport { PutOutputConnectionHandlersToArrayRequest } from './domain/put-output-connection-handlers-to-array';\nimport {\n PutInputConnectionHandlersToArrayRequest\n} from './domain/put-input-connection-handlers-to-array';\nimport { NodeResizeByChildDragHandler } from '../node-resize-by-child.drag-handler';\nimport { GetParentNodesRequest, IsArrayHasParentNodeRequest } from '../../domain';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(CreateMoveNodesDragModelFromSelectionRequest)\nexport class CreateMoveNodesDragModelFromSelectionExecution\n implements IExecution<CreateMoveNodesDragModelFromSelectionRequest, IDraggableItem[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: CreateMoveNodesDragModelFromSelectionRequest): IDraggableItem[] {\n const itemsToDrag = this.getNodesWithRestrictions(this.getSelectedNodes());\n return this.getDragHandlersWithConnections(\n this.getDragHandlersFromNodes(itemsToDrag),\n this.getAllOutputIds(itemsToDrag),\n this.getAllInputIds(itemsToDrag)\n );\n }\n\n private getSelectedNodes(): FNodeBase[] {\n return this.fDraggableDataContext.selectedItems\n .map((x) => this.fComponentsStore.findNode(x.hostElement))\n .filter((x): x is FNodeBase => !!x);\n }\n\n private getNodesWithRestrictions(selectedNodes: FNodeBase[]): INodeWithDistanceRestrictions[] {\n const result: INodeWithDistanceRestrictions[] = [];\n\n selectedNodes.forEach((x) => {\n const hasParentNodeInSelected = this.fMediator.send<boolean>(new IsArrayHasParentNodeRequest(x, selectedNodes));\n const restrictions = this.fMediator.send<INodeMoveRestrictions>(new GetNodeMoveRestrictionsRequest(x, hasParentNodeInSelected));\n const parentNodes = this.fMediator.send<FNodeBase[]>(new GetParentNodesRequest(x));\n result.push({ node: x, parentNodes, ...restrictions }, ...this.getChildrenItemsToDrag(x, restrictions));\n });\n\n return result;\n }\n\n private getChildrenItemsToDrag(node: FNodeBase, restrictions: INodeMoveRestrictions): INodeWithDistanceRestrictions[] {\n return this.getChildrenNodes(node.fId).map((x) => ({ node: x, ...restrictions }));\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private getAllOutputIds(items: INodeWithDistanceRestrictions[]): string[] {\n return items.flatMap((x) => this.getOutputsForNode(x.node)).map((x) => x.id);\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getAllInputIds(items: INodeWithDistanceRestrictions[]): string[] {\n return items.flatMap((x) => this.getInputsForNode(x.node)).map((x) => x.id);\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getDragHandlersFromNodes(items: INodeWithDistanceRestrictions[]): IDraggableItem[] {\n let result: IDraggableItem[] = [];\n\n items.forEach((node) => {\n result.push(\n new NodeDragHandler(this.fDraggableDataContext, node.node, node.min, node.max),\n ...(node.parentNodes || []).map((parent) => new NodeResizeByChildDragHandler(this.fDraggableDataContext))\n );\n });\n return result;\n }\n\n private getDragHandlersWithConnections(\n handlers: IDraggableItem[], outputIds: string[], inputIds: string[]\n ): IDraggableItem[] {\n let result: IDraggableItem[] = handlers;\n handlers.filter((x) => x instanceof NodeDragHandler).forEach((dragHandler) => {\n this.fMediator.send(new PutOutputConnectionHandlersToArrayRequest(dragHandler, inputIds, result));\n this.fMediator.send(new PutInputConnectionHandlersToArrayRequest(dragHandler, outputIds, result));\n });\n return result;\n }\n}\n","import { CreateMoveNodesDragModelFromSelectionExecution } from './create-move-nodes-drag-model-from-selection.execution';\nimport { GetNodeMoveRestrictionsExecution } from './domain/get-node-move-restrictions';\nimport { PutInputConnectionHandlersToArrayExecution } from './domain/put-input-connection-handlers-to-array';\nimport { PutOutputConnectionHandlersToArrayExecution } from './domain/put-output-connection-handlers-to-array';\n\nexport const CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS = [\n\n GetNodeMoveRestrictionsExecution,\n\n PutInputConnectionHandlersToArrayExecution,\n\n PutOutputConnectionHandlersToArrayExecution,\n\n CreateMoveNodesDragModelFromSelectionExecution,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class NodeMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMovePreparationRequest } from './node-move-preparation.request';\nimport { ITransformModel, Point } from '@foblex/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n SelectAndUpdateNodeLayerRequest,\n} from '../../../domain';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { NodeDragHandler } from '../node.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from '../create-move-nodes-drag-model-from-selection';\n\n@Injectable()\n@FExecutionRegister(NodeMovePreparationRequest)\nexport class NodeMovePreparationExecution implements IExecution<NodeMovePreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: NodeMovePreparationRequest): void {\n this.selectAndUpdateNodeLayer(request.event.targetElement);\n\n const itemsToDrag: IDraggableItem[] = this.createDragModelFromSelection();\n\n this.initializeLineAlignment(this.filterNodesFromDraggableItems(itemsToDrag));\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.draggableItems = itemsToDrag;\n }\n\n private selectAndUpdateNodeLayer(targetElement: HTMLElement) {\n this.fMediator.send(\n new SelectAndUpdateNodeLayerRequest(this.getNode(targetElement))\n );\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase {\n return this.fComponentsStore.findNode(targetElement)!;\n }\n\n private createDragModelFromSelection(): IDraggableItem[] {\n return this.fMediator.send(new CreateMoveNodesDragModelFromSelectionRequest());\n }\n\n private initializeLineAlignment(nodesToDrag: FNodeBase[]): void {\n this.fDraggableDataContext.fLineAlignment?.initialize(\n this.fComponentsStore.fNodes,\n nodesToDrag\n );\n }\n\n private filterNodesFromDraggableItems(items: IDraggableItem[]): FNodeBase[] {\n return items.filter((x) => x instanceof NodeDragHandler).map(x => x.fNode);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMovePreparationRequest } from './node-move-preparation.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { isElementWithClass } from '../../../domain';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FValidatorRegister(NodeMovePreparationRequest)\nexport class NodeMovePreparationValidator implements IValidator<NodeMovePreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeMovePreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isDragHandleElement(request.event.targetElement)\n && this.isNodeCanBeDragged(this.getNode(request.event.targetElement));\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n return this.fComponentsStore.findNode(targetElement);\n }\n\n private isNodeCanBeDragged(node: FNodeBase | undefined): boolean {\n return !!node && !node.fDraggingDisabled;\n }\n\n private isDragHandleElement(targetElement: HTMLElement): boolean {\n return isElementWithClass(targetElement, '.f-drag-handle');\n }\n}\n","import { NodeMovePreparationExecution } from './node-move-preparation.execution';\nimport { NodeMovePreparationValidator } from './node-move-preparation.validator';\n\nexport const NODE_MOVE_PREPARATION_PROVIDERS = [\n\n NodeMovePreparationExecution,\n\n NodeMovePreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class NodeMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export class IsConnectionUnderNodeRequest {\n\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMoveFinalizeRequest } from './node-move-finalize.request';\nimport { IPoint, Point } from '@foblex/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n IsConnectionUnderNodeRequest\n} from '../../../domain/is-connection-under-node/is-connection-under-node.request';\n\n@Injectable()\n@FExecutionRegister(NodeMoveFinalizeRequest)\nexport class NodeMoveFinalizeExecution implements IExecution<NodeMoveFinalizeRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: NodeMoveFinalizeRequest): void {\n const difference = this.getDifferenceWithLineAlignment(\n this.getDifferenceBetweenPreparationAndFinalize(request.event.getPosition())\n );\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.move({ ...difference });\n x.complete?.();\n });\n this.fMediator.send(new IsConnectionUnderNodeRequest());\n this.fDraggableDataContext.fLineAlignment?.complete();\n }\n\n private getDifferenceBetweenPreparationAndFinalize(position: IPoint): Point {\n return Point.fromPoint(position).elementTransform(this.flowHost)\n .div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n }\n\n private getDifferenceWithLineAlignment(difference: IPoint): IPoint {\n const intersection = this.fDraggableDataContext.fLineAlignment?.findNearestCoordinate(difference);\n if (intersection) {\n difference.x = intersection.xResult.value ? (difference.x - intersection.xResult.distance!) : difference.x;\n difference.y = intersection.yResult.value ? (difference.y - intersection.yResult.distance!) : difference.y;\n }\n return difference;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMoveFinalizeRequest } from './node-move-finalize.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeDragHandler } from '../node.drag-handler';\n\n@Injectable()\n@FValidatorRegister(NodeMoveFinalizeRequest)\nexport class NodeMoveFinalizeValidator implements IValidator<NodeMoveFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeMoveFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) => x instanceof NodeDragHandler);\n }\n}\n","import { NodeMoveFinalizeExecution } from './node-move-finalize.execution';\nimport { NodeMoveFinalizeValidator } from './node-move-finalize.validator';\n\nexport const NODE_MOVE_FINALIZE_PROVIDERS = [\n\n NodeMoveFinalizeExecution,\n\n NodeMoveFinalizeValidator,\n];\n","import { CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS } from './create-move-nodes-drag-model-from-selection';\nimport { NODE_MOVE_FINALIZE_PROVIDERS } from './node-move-finalize';\nimport { NODE_MOVE_PREPARATION_PROVIDERS } from './node-move-preparation';\n\nexport const NODE_PROVIDERS = [\n\n ...CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS,\n\n ...NODE_MOVE_FINALIZE_PROVIDERS,\n\n ...NODE_MOVE_PREPARATION_PROVIDERS,\n];\n","import { IRect } from '@foblex/core';\n\nexport class ApplyChildResizeRestrictionsRequest {\n\n constructor(\n public rect: IRect,\n public restrictionsRect: IRect,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplyChildResizeRestrictionsRequest } from './apply-child-resize-restrictions.request';\nimport { IRect } from '@foblex/core';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\n\nconst OFFSET = 0;\n\n@Injectable()\n@FExecutionRegister(ApplyChildResizeRestrictionsRequest)\nexport class ApplyChildResizeRestrictionsExecution\n implements IExecution<ApplyChildResizeRestrictionsRequest, void> {\n\n public handle(request: ApplyChildResizeRestrictionsRequest): void {\n this.applyRestrictions(request.rect, request.restrictionsRect);\n }\n\n private applyRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.left(rect, restrictionsRect);\n this.top(rect, restrictionsRect);\n this.right(rect, restrictionsRect);\n this.bottom(rect, restrictionsRect);\n }\n\n private left(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x > restrictionsRect.x - OFFSET) {\n rect.width += rect.x - restrictionsRect.x - OFFSET;\n rect.x = restrictionsRect.x - OFFSET;\n }\n }\n\n private top(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y > restrictionsRect.y - OFFSET) {\n rect.height += rect.y - restrictionsRect.y - OFFSET;\n rect.y = restrictionsRect.y - OFFSET;\n }\n }\n\n private right(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x + rect.width <= restrictionsRect.x + restrictionsRect.width + OFFSET) {\n rect.width = restrictionsRect.x + restrictionsRect.width - rect.x + OFFSET;\n }\n }\n\n private bottom(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y + rect.height <= restrictionsRect.y + restrictionsRect.height + OFFSET) {\n rect.height = restrictionsRect.y + restrictionsRect.height - rect.y + OFFSET;\n }\n }\n}\n","import { IRect } from '@foblex/core';\n\nexport class ApplyParentResizeRestrictionsRequest {\n\n constructor(\n public rect: IRect,\n public restrictionsRect: IRect,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplyParentResizeRestrictionsRequest } from './apply-parent-resize-restrictions.request';\nimport { IRect } from '@foblex/core';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\n\nconst OFFSET = 0;\n\n@Injectable()\n@FExecutionRegister(ApplyParentResizeRestrictionsRequest)\nexport class ApplyParentResizeRestrictionsExecution\n implements IExecution<ApplyParentResizeRestrictionsRequest, void> {\n\n public handle(request: ApplyParentResizeRestrictionsRequest): void {\n this.applyRestrictions(request.rect, request.restrictionsRect);\n }\n\n private applyRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.left(rect, restrictionsRect);\n this.top(rect, restrictionsRect);\n this.right(rect, restrictionsRect);\n this.bottom(rect, restrictionsRect);\n }\n\n private left(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x <= restrictionsRect.x + OFFSET) {\n rect.width -= restrictionsRect.x - rect.x + OFFSET;\n rect.x = restrictionsRect.x + OFFSET;\n }\n }\n\n private top(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y <= restrictionsRect.y + OFFSET) {\n rect.height -= restrictionsRect.y - rect.y + OFFSET;\n rect.y = restrictionsRect.y + OFFSET;\n }\n }\n\n private right(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x + rect.width > restrictionsRect.x + restrictionsRect.width - OFFSET) {\n rect.width = restrictionsRect.x + restrictionsRect.width - rect.x - OFFSET;\n }\n }\n\n private bottom(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y + rect.height > restrictionsRect.y + restrictionsRect.height - OFFSET) {\n rect.height = restrictionsRect.y + restrictionsRect.height - rect.y - OFFSET;\n }\n }\n}\n","import { IPoint, IRect } from '@foblex/core';\nimport { EFResizeHandleType } from '../../../f-node';\n\nexport class CalculateChangedPositionRequest {\n\n constructor(\n public originalRect: IRect,\n public changedRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { EFResizeHandleType } from '../../f-node';\n\nexport const RESIZE_DIRECTIONS = {\n\n [ EFResizeHandleType.LEFT_TOP ]: { x: -1, y: -1 },\n\n [ EFResizeHandleType.RIGHT_TOP ]: { x: 1, y: -1 },\n\n [ EFResizeHandleType.RIGHT_BOTTOM ]: { x: 1, y: 1 },\n\n [ EFResizeHandleType.LEFT_BOTTOM ]: { x: -1, y: 1 },\n};\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedPositionRequest } from './calculate-changed-position.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/core';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedPositionRequest)\nexport class CalculateChangedPositionExecution\n implements IExecution<CalculateChangedPositionRequest, IRect> {\n\n public handle(request: CalculateChangedPositionRequest): IRect {\n return this.change(request.originalRect, request.difference, RESIZE_DIRECTIONS[request.fResizeHandleType], request.changedRect);\n }\n\n private change(originalRect: IRect, difference: IPoint, direction: IPoint, changedRect: IRect): IRect {\n return RectExtensions.initialize(\n originalRect.x + (direction.x === -1 ? difference.x : 0) + changedRect.x,\n originalRect.y + (direction.y === -1 ? difference.y : 0) + changedRect.y,\n changedRect.width,\n changedRect.height\n );\n }\n}\n","import { IPoint, IRect } from '@foblex/core';\nimport { EFResizeHandleType } from '../../../f-node';\n\nexport class CalculateChangedSizeRequest {\n\n constructor(\n public originalRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/core';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedSizeRequest)\nexport class CalculateChangedSizeExecution\n implements IExecution<CalculateChangedSizeRequest, IRect> {\n\n public handle(request: CalculateChangedSizeRequest): IRect {\n return this.change(request.originalRect, request.difference, RESIZE_DIRECTIONS[request.fResizeHandleType]);\n }\n\n private change(rect: IRect, difference: IPoint, direction: IPoint): IRect {\n const result = RectExtensions.initialize(\n 0, 0,\n rect.width + direction.x * difference.x,\n rect.height + direction.y * difference.y\n );\n\n if (result.width < 0) {\n result.x = result.width;\n result.width = Math.abs(result.width);\n }\n\n if (result.height < 0) {\n result.y = result.height;\n result.height = Math.abs(result.height);\n }\n\n return RectExtensions.copy(result);\n }\n}\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/core';\n\nexport class GetNormalizedChildrenNodesRectRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedChildrenNodesRectRequest } from './get-normalized-children-nodes-rect.request';\nimport { IRect, RectExtensions } from '@foblex/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FNodeBase } from '../../../f-node';\nimport { GetNodePaddingRequest, GetNormalizedNodeRectRequest } from '../../domain';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedChildrenNodesRectRequest)\nexport class GetNormalizedChildrenNodesRectExecution\n implements IExecution<GetNormalizedChildrenNodesRectRequest, IRect | null> {\n\n constructor(\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: GetNormalizedChildrenNodesRectRequest): IRect | null {\n const childNodeRect = RectExtensions.union(\n this.getChildrenNodes(request.fNode.fId).map((x) => this.normalizeRect(x))\n );\n return childNodeRect ?\n this.concatRectWithParentPadding(childNodeRect,\n this.getNodePadding(request.fNode, request.rect)\n ) : null;\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private normalizeRect(node: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(node));\n }\n\n private getNodePadding(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this.fMediator.send<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n\n private concatRectWithParentPadding(rect: IRect, padding: [ number, number, number, number ]): IRect {\n return RectExtensions.initialize(\n rect.x - padding[0],\n rect.y - padding[1],\n rect.width + padding[0] + padding[2],\n rect.height + + padding[1] + padding[3]\n );\n }\n}\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/core';\n\nexport class GetNodeResizeRestrictionsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodeResizeRestrictionsRequest } from './get-node-resize-restrictions.request';\nimport { IRect } from '@foblex/core';\nimport { INodeResizeRestrictions } from './i-node-resize-restrictions';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { GetNormalizedParentNodeRectRequest } from '../../domain';\nimport { GetNormalizedChildrenNodesRectRequest } from '../get-normalized-children-nodes-rect';\n\n\n@Injectable()\n@FExecutionRegister(GetNodeResizeRestrictionsRequest)\nexport class GetNodeResizeRestrictionsExecution\n implements IExecution<GetNodeResizeRestrictionsRequest, INodeResizeRestrictions> {\n\n constructor(\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: GetNodeResizeRestrictionsRequest): INodeResizeRestrictions {\n const childRect = this.fMediator.send<IRect | null>(new GetNormalizedChildrenNodesRectRequest(request.fNode, request.rect));\n const parentRect = this.fMediator.send<IRect>(new GetNormalizedParentNodeRectRequest(request.fNode));\n\n return {\n parentRect,\n childRect,\n }\n }\n}\n","import { IPointerEvent } from '@foblex/core';\n\nexport class NodeResizeFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizeFinalizeRequest } from './node-resize-finalize.request';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\n\n@Injectable()\n@FExecutionRegister(NodeResizeFinalizeRequest)\nexport class NodeResizeFinalizeExecution implements IExecution<NodeResizeFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: NodeResizeFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","import { IPoint, IRect, RectExtensions } from '@foblex/core';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../f-node';\nimport { FFlowMediator } from '../../infrastructure';\nimport { GetNormalizedNodeRectRequest } from '../domain';\nimport { GetNodeResizeRestrictionsRequest, INodeResizeRestrictions } from './get-node-resize-restrictions';\nimport { ApplyChildResizeRestrictionsRequest } from './apply-child-resize-restrictions';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size';\nimport { CalculateChangedPositionRequest } from './calculate-changed-position';\nimport { ApplyParentResizeRestrictionsRequest } from './apply-parent-resize-restrictions';\n\nexport class NodeResizeDragHandler implements IDraggableItem {\n\n private originalRect!: IRect;\n\n private restrictions!: INodeResizeRestrictions;\n\n private childRestrictions: (rect: IRect, restrictionsRect: IRect) => void = () => {};\n\n constructor(\n private fMediator: FFlowMediator,\n public fNode: FNodeBase,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n\n public initialize(): void {\n this.originalRect = this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(this.fNode));\n\n this.restrictions = this.fMediator.send<INodeResizeRestrictions>(new GetNodeResizeRestrictionsRequest(this.fNode, this.originalRect));\n if(this.restrictions.childRect) {\n this.childRestrictions = (rect: IRect, restrictionsRect: IRect) => {\n this.applyChildRestrictions(rect, restrictionsRect);\n };\n }\n }\n\n public move(difference: IPoint): void {\n const changedRect = this.changePosition(difference, this.changeSize(difference));\n\n this.childRestrictions(changedRect, this.restrictions.childRect!);\n this.applyParentRestrictions(changedRect, this.restrictions.parentRect);\n\n this.fNode.updatePosition(changedRect);\n this.fNode.updateSize(changedRect);\n this.fNode.redraw();\n }\n\n private changeSize(difference: IPoint): IRect {\n return this.fMediator.send<IRect>(\n new CalculateChangedSizeRequest(this.originalRect, difference, this.fResizeHandleType)\n );\n }\n\n private changePosition(difference: IPoint, changedRect: IRect): IRect {\n return this.fMediator.send<IRect>(\n new CalculateChangedPositionRequest(this.originalRect, changedRect, difference, this.fResizeHandleType)\n );\n }\n\n private applyChildRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.fMediator.send(\n new ApplyChildResizeRestrictionsRequest(rect, restrictionsRect)\n );\n }\n\n private applyParentRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.fMediator.send(\n new ApplyParentResizeRestrictionsRequest(rect, restrictionsRect)\n );\n }\n\n public complete(): void {\n this.fNode.sizeChange.emit(\n RectExtensions.initialize(\n this.fNode.position.x, this.fNode.position.y, this.fNode.size.width, this.fNode.size.height\n )\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizeFinalizeRequest } from './node-resize-finalize.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\n\n@Injectable()\n@FValidatorRegister(NodeResizeFinalizeRequest)\nexport class NodeResizeFinalizeValidator implements IValidator<NodeResizeFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeResizeFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) =>\n x instanceof NodeResizeDragHandler\n );\n }\n}\n","import { NodeResizeFinalizeExecution } from './node-resize-finalize.execution';\nimport { NodeResizeFinalizeValidator } from './node-resize-finalize.validator';\n\nexport const NODE_RESIZE_FINALIZE_PROVIDERS = [\n\n NodeResizeFinalizeExecution,\n\n NodeResizeFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class NodeResizePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizePreparationRequest } from './node-resize-preparation.request';\nimport { ITransformModel, Point } from '@foblex/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n getValueFromDataAttr,\n SelectAndUpdateNodeLayerRequest,\n} from '../../../domain';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../../f-node';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\n\n@Injectable()\n@FExecutionRegister(NodeResizePreparationRequest)\nexport class NodeResizePreparationExecution implements IExecution<NodeResizePreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: NodeResizePreparationRequest): void {\n this.selectAndUpdateNodeLayer(request.event.targetElement);\n\n const handleType = getValueFromDataAttr(request.event.targetElement, 'fResizeHandleType', '.f-resize-handle');\n const itemsToDrag: IDraggableItem[] = [\n new NodeResizeDragHandler(\n this.fMediator,\n this.getNode(request.event.targetElement),\n EFResizeHandleType[ handleType as keyof typeof EFResizeHandleType ]\n )\n ];\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.draggableItems = itemsToDrag;\n }\n\n private selectAndUpdateNodeLayer(targetElement: HTMLElement) {\n this.fMediator.send(\n new SelectAndUpdateNodeLayerRequest(this.getNode(targetElement))\n );\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase {\n return this.fComponentsStore.findNode(targetElement)!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizePreparationRequest } from './node-resize-preparation.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { isElementWithClass } from '../../../domain';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FValidatorRegister(NodeResizePreparationRequest)\nexport class NodeResizePreparationValidator implements IValidator<NodeResizePreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeResizePreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isDragHandleElement(request.event.targetElement)\n && this.isNodeCanBeDragged(this.getNode(request.event.targetElement));\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n return this.fComponentsStore.findNode(targetElement);\n }\n\n private isNodeCanBeDragged(node: FNodeBase | undefined): boolean {\n return !!node && !node.fDraggingDisabled;\n }\n\n private isDragHandleElement(targetElement: HTMLElement): boolean {\n return isElementWithClass(targetElement, '.f-resize-handle');\n }\n}\n","import { NodeResizePreparationExecution } from './node-resize-preparation.execution';\nimport { NodeResizePreparationValidator } from './node-resize-preparation.validator';\n\nexport const NODE_RESIZE_PREPARATION_PROVIDERS = [\n\n NodeResizePreparationExecution,\n\n NodeResizePreparationValidator,\n];\n","import { NODE_RESIZE_FINALIZE_PROVIDERS } from './node-resize-finalize';\nimport { NODE_RESIZE_PREPARATION_PROVIDERS } from './node-resize-preparation';\nimport { GetNodeResizeRestrictionsExecution } from './get-node-resize-restrictions';\nimport { ApplyChildResizeRestrictionsExecution } from './apply-child-resize-restrictions';\nimport { ApplyParentResizeRestrictionsExecution } from './apply-parent-resize-restrictions';\nimport { CalculateChangedSizeExecution } from './calculate-changed-size';\nimport { CalculateChangedPositionExecution } from './calculate-changed-position';\nimport { GetNormalizedChildrenNodesRectExecution } from './get-normalized-children-nodes-rect';\n\nexport const NODE_RESIZE_PROVIDERS = [\n\n ApplyChildResizeRestrictionsExecution,\n\n ApplyParentResizeRestrictionsExecution,\n\n CalculateChangedPositionExecution,\n\n CalculateChangedSizeExecution,\n\n GetNormalizedChildrenNodesRectExecution,\n\n GetNodeResizeRestrictionsExecution,\n\n ...NODE_RESIZE_FINALIZE_PROVIDERS,\n\n ...NODE_RESIZE_PREPARATION_PROVIDERS,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class SingleSelectRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../infrastructure';\nimport { SingleSelectRequest } from './single-select.request';\nimport { UpdateItemAndChildrenLayersRequest } from '../../domain';\nimport { IPointerEvent } from '@foblex/core';\nimport { FConnectionBase, ISelectable } from '../../f-connection';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { EOperationSystem, PlatformService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(SingleSelectRequest)\nexport class SingleSelectExecution implements IExecution<SingleSelectRequest, void> {\n\n constructor(\n private fPlatform: PlatformService,\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: SingleSelectRequest): void {\n const { event } = request;\n\n const item = this.getSelectableItem(event);\n if (item) {\n this.fMediator.send<void>(new UpdateItemAndChildrenLayersRequest(item, item.hostElement.parentElement!));\n }\n\n this.isMultiselectEnabled(event) ? this.multiSelect(item) : this.singleSelect(item);\n }\n\n private getSelectableItem(event: IPointerEvent): ISelectable | undefined {\n return this.fComponentsStore.findNode(event.targetElement) || this.getConnectionHandler(event.targetElement);\n }\n\n private getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fComponentsStore.fConnections.find(c => c.isContains(element) || c.fConnectionCenter?.nativeElement?.contains(element));\n }\n\n private isMultiselectEnabled(event: IPointerEvent): boolean {\n return this.isCommandButton(this.fPlatform.getOS()!, event.originalEvent) ||\n this.isShiftPressed(event.originalEvent);\n }\n\n private isShiftPressed(event: { shiftKey: boolean }): boolean {\n return event.shiftKey;\n }\n\n private isCommandButton(platform: EOperationSystem, event: { metaKey: boolean, ctrlKey: boolean }): boolean {\n return platform === EOperationSystem.MAC_OS ? event.metaKey : event.ctrlKey;\n }\n\n private singleSelect(item: ISelectable | undefined): void {\n if (item) {\n if (!item.isSelected() && !item.fSelectionDisabled) {\n this.clearSelection();\n this.selectItem(item);\n }\n } else {\n this.clearSelection();\n }\n }\n\n private multiSelect(item: ISelectable | undefined): void {\n if (item && !item.fSelectionDisabled) {\n item.isSelected() ? this.deselectItem(item) : this.selectItem(item);\n }\n }\n\n private deselectItem(item: ISelectable): void {\n const index = this.fDraggableDataContext.selectedItems.indexOf(item);\n if (index > -1) {\n this.fDraggableDataContext.selectedItems.splice(index, 1);\n }\n item.deselect();\n this.fDraggableDataContext.markSelectionAsChanged();\n }\n\n private selectItem(item: ISelectable): void {\n this.fDraggableDataContext.selectedItems.push(item);\n item.select();\n this.fDraggableDataContext.markSelectionAsChanged();\n }\n\n private clearSelection(): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n this.fDraggableDataContext.markSelectionAsChanged();\n });\n this.fDraggableDataContext.selectedItems = [];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FValidatorRegister, IValidator } from '../../infrastructure';\nimport { SingleSelectRequest } from './single-select.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n@Injectable()\n@FValidatorRegister(SingleSelectRequest)\nexport class SingleSelectValidator implements IValidator<SingleSelectRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SingleSelectRequest): boolean {\n return this.fComponentsStore.fFlow!.hostElement.contains(request.event.targetElement)\n && !this.fDraggableDataContext.draggableItems.length;\n }\n}\n","import { SingleSelectExecution } from './single-select.execution';\nimport { SingleSelectValidator } from './single-select.validator';\n\nexport const SINGLE_SELECT_PROVIDERS = [\n\n SingleSelectExecution,\n\n SingleSelectValidator\n];\n","import {\n EventExtensions,\n IHasHostElement,\n IMouseEvent,\n IPoint,\n IPointerEvent,\n ITouchDownEvent,\n ITouchMoveEvent,\n ITouchUpEvent,\n PointExtensions\n} from '@foblex/core';\nimport { Directive, EventEmitter, InjectionToken, } from '@angular/core';\nimport { FCreateConnectionEvent, FReassignConnectionEvent } from './connections';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { ICanRunOutsideAngular } from './i-can-run-outside-angular';\nimport { FCreateNodeEvent } from '../f-external-item';\n\nexport const F_DRAGGABLE = new InjectionToken<FDraggableBase>('F_DRAGGABLE');\n\nexport const MOUSE_EVENT_IGNORE_TIME = 800;\n\n@Directive()\nexport abstract class FDraggableBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract fSelectionChange: EventEmitter<FSelectionChangeEvent>;\n\n public abstract fCreateNode: EventEmitter<FCreateNodeEvent>;\n\n public abstract fReassignConnection: EventEmitter<FReassignConnectionEvent>;\n\n public abstract fCreateConnection: EventEmitter<FCreateConnectionEvent>;\n\n private fDocument: Document | undefined;\n\n private mouseListeners: Function = EventExtensions.emptyListener();\n private touchListeners: Function = EventExtensions.emptyListener();\n\n private startListeners: Function = EventExtensions.emptyListener();\n\n public isSyntheticEvent(event: MouseEvent): boolean {\n return !!this.lastTouchEventTime &&\n (this.lastTouchEventTime + MOUSE_EVENT_IGNORE_TIME > Date.now());\n }\n\n private lastTouchEventTime: number = 0;\n\n public isDragStarted: boolean = false;\n private dragStartThreshold: number = 3;\n private dragStartDelay: number = 0;\n\n private dragStartTime: number = 0;\n private dragStartPosition: IPoint = PointExtensions.initialize();\n\n public abstract disabled: boolean;\n\n private moveHandler: Function = this.checkDragSequenceToStart;\n\n private pointerDownElement: HTMLElement | null = null;\n\n protected constructor(\n protected ngZone: ICanRunOutsideAngular | undefined\n ) {\n }\n\n private onMouseDown = (event: MouseEvent) => {\n const isSyntheticEvent = this.isSyntheticEvent(event);\n const isFakeEvent = isFakeMousedownFromScreenReader(event);\n const mouseEvent = new IMouseEvent(event);\n this.pointerDownElement = mouseEvent.targetElement;\n\n if (isSyntheticEvent || isFakeEvent || this.disabled) {\n return;\n }\n let result = this.onPointerDown(mouseEvent);\n if (result) {\n\n this.dragStartTime = Date.now();\n this.dragStartPosition = mouseEvent.getPosition();\n\n this.ngZone?.runOutsideAngular(() => {\n this.fDocument?.addEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.fDocument?.addEventListener('mousemove', this.onMouseMove);\n this.fDocument?.addEventListener('mouseup', this.onMouseUp);\n });\n\n this.mouseListeners = () => {\n this.fDocument?.removeEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.fDocument?.removeEventListener('mousemove', this.onMouseMove);\n this.fDocument?.removeEventListener('mouseup', this.onMouseUp);\n };\n }\n }\n\n private onTouchDown = (event: TouchEvent) => {\n const isFakeEvent = isFakeTouchstartFromScreenReader(event as TouchEvent)\n const touchEvent = new ITouchDownEvent(event);\n this.pointerDownElement = touchEvent.targetElement;\n\n if (isFakeEvent || this.disabled) {\n return;\n }\n let result = this.onPointerDown(touchEvent);\n if (result) {\n\n this.dragStartTime = Date.now();\n this.dragStartPosition = touchEvent.getPosition();\n\n this.ngZone?.runOutsideAngular(() => {\n this.fDocument?.addEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.fDocument?.addEventListener('touchmove', this.onTouchMove);\n this.fDocument?.addEventListener('touchend', this.onTouchUp);\n });\n\n this.touchListeners = () => {\n this.fDocument?.removeEventListener('selectstart', this.onSelectStart, EventExtensions.activeListener());\n this.fDocument?.removeEventListener('touchmove', this.onTouchMove);\n this.fDocument?.removeEventListener('touchend', this.onTouchUp);\n };\n }\n }\n\n private onSelectStart = (event: Event) => {\n this.onSelect(event);\n }\n\n private onMouseMove = (event: MouseEvent) => {\n this.moveHandler(new IMouseEvent(event));\n }\n\n private onTouchMove = (event: TouchEvent) => {\n this.moveHandler(new ITouchMoveEvent(event));\n }\n\n private checkDragSequenceToStart(event: IPointerEvent): void {\n const pointerPosition = event.getPosition();\n\n if (!this.isDragStarted && this.pointerDownElement) {\n event.setTarget(this.pointerDownElement);\n const distanceX = Math.abs(pointerPosition.x - this.dragStartPosition.x);\n const distanceY = Math.abs(pointerPosition.y - this.dragStartPosition.y);\n const isOverThreshold = distanceX + distanceY >= this.dragStartThreshold;\n\n if (isOverThreshold) {\n const isDelayElapsed = Date.now() >= this.dragStartTime + this.dragStartDelay;\n\n if (!isDelayElapsed) {\n this.endDragSequence();\n return;\n }\n\n event.preventDefault();\n this.prepareDragSequence(event);\n this.isDragStarted = true;\n this.moveHandler = this.onPointerMove;\n if (isTouchEvent(event.originalEvent)) {\n this.lastTouchEventTime = Date.now();\n }\n }\n }\n }\n\n protected abstract prepareDragSequence(event: IPointerEvent): void;\n\n private onMouseUp = (event: MouseEvent) => {\n if (this.isDragStarted) {\n this.onPointerUp(new IMouseEvent(event));\n }\n this.endDragSequence();\n }\n\n private onTouchUp = (event: TouchEvent) => {\n if (this.isDragStarted) {\n this.onPointerUp(new ITouchUpEvent(event));\n }\n this.endDragSequence();\n }\n\n private endDragSequence(): void {\n this.isDragStarted = false;\n this.pointerDownElement = null;\n\n this.moveHandler = this.checkDragSequenceToStart;\n this.mouseListeners();\n this.mouseListeners = EventExtensions.emptyListener();\n this.touchListeners();\n this.touchListeners = EventExtensions.emptyListener();\n this.finalizeDragSequence();\n }\n\n protected abstract finalizeDragSequence(): void;\n\n protected abstract onSelect(event: Event): void;\n\n public abstract onPointerDown(event: IPointerEvent): boolean;\n\n public abstract onPointerMove(event: IPointerEvent): void;\n\n public abstract onPointerUp(event: IPointerEvent): void;\n\n public subscribe(fDocument: Document): void {\n if (this.fDocument) {\n this.unsubscribe();\n }\n this.fDocument = fDocument;\n\n this.ngZone?.runOutsideAngular(() => {\n fDocument.addEventListener('mousedown', this.onMouseDown, EventExtensions.activeListener());\n fDocument.addEventListener('touchstart', this.onTouchDown, EventExtensions.passiveListener());\n });\n\n this.startListeners = () => {\n fDocument.removeEventListener('mousedown', this.onMouseDown, EventExtensions.activeListener());\n fDocument.removeEventListener('touchstart', this.onTouchDown, EventExtensions.passiveListener());\n };\n }\n\n public unsubscribe(): void {\n\n this.startListeners();\n this.startListeners = EventExtensions.emptyListener();\n this.touchListeners();\n this.touchListeners = EventExtensions.emptyListener();\n this.mouseListeners();\n this.mouseListeners = EventExtensions.emptyListener();\n }\n}\n\nfunction isTouchEvent(event: MouseEvent | TouchEvent): event is TouchEvent {\n return event.type[ 0 ] === 't';\n}\n\nfunction isFakeMousedownFromScreenReader(event: MouseEvent): boolean {\n return event.buttons === 0 || (event.offsetX === 0 && event.offsetY === 0);\n}\n\nfunction isFakeTouchstartFromScreenReader(event: TouchEvent): boolean {\n const touch: Touch | undefined =\n (event.touches && event.touches[ 0 ]) || (event.changedTouches && event.changedTouches[ 0 ]);\n return (\n !!touch &&\n touch.identifier === -1 &&\n (touch.radiusX == null || touch.radiusX === 1) &&\n (touch.radiusY == null || touch.radiusY === 1)\n );\n}\n","import { IPointerEvent } from '@foblex/core';\n\nexport class ExternalItemFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IRect } from '@foblex/core';\n\nexport class FCreateNodeEvent<TData = any> {\n\n constructor(\n public rect: IRect,\n public data: TData,\n ) {\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { ExternalItemFinalizeRequest } from './external-item-finalize.request';\nimport { IPoint, IRect } from '@foblex/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\nimport { FCreateNodeEvent } from '../f-create-node.event';\nimport { GetElementRectInFlowRequest } from '../../../domain';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ExternalItemFinalizeRequest)\nexport class ExternalItemFinalizeExecution implements IExecution<ExternalItemFinalizeRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n private get fCreateNode(): EventEmitter<FCreateNodeEvent> {\n return this.fComponentsStore.fDraggable!.fCreateNode;\n }\n\n private get dragHandler(): ExternalItemDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as ExternalItemDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ExternalItemFinalizeRequest): void {\n this.emitEvent(\n this.getExternalItemElementsFromPoint(request.event.getPosition())\n );\n\n this.dragHandler.complete();\n }\n\n private getExternalItemElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y)\n .filter(x => !x.closest('.f-external-item')) as HTMLElement[];\n }\n\n private emitEvent(elements: HTMLElement[]): void {\n if (this.isPointerInCanvasRect(elements)) {\n this.fCreateNode.emit(\n new FCreateNodeEvent(this.getRectInCanvas(), this.dragHandler.externalItem.fData)\n );\n }\n }\n\n private isPointerInCanvasRect(elements: HTMLElement[]): boolean {\n return elements.length ? this.flowHost.contains(elements[ 0 ]) : false;\n }\n\n private getRectInCanvas(): IRect {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(this.dragHandler.placeholder!));\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/core';\nimport { FExternalItemBase } from '../../f-external-item';\nimport { IDraggableItem } from '../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\nimport { deepCloneNode } from '../../domain';\n\nexport class ExternalItemDragHandler implements IDraggableItem {\n\n public placeholder: HTMLElement | SVGElement | undefined;\n\n private onPointerDownRect: IRect = RectExtensions.initialize();\n\n private difference: IPoint = PointExtensions.initialize();\n\n constructor(\n public externalItem: FExternalItemBase,\n private fBrowser: BrowserService\n ) {\n }\n\n private getStyle(position: IPoint): string {\n return `position: absolute; left: 0; top: 0; transform: translate(${ position.x }px, ${ position.y }px)`;\n }\n\n public initialize(): void {\n this.onPointerDownRect = this.getExternalItemRect();\n this.placeholder = deepCloneNode(this.externalItem.hostElement);\n this.placeholder.setAttribute('style', this.getStyle(Point.fromPoint(this.onPointerDownRect)));\n this.fBrowser.document.body.appendChild(this.placeholder);\n }\n\n private getExternalItemRect(): IRect {\n const rect = this.externalItem.hostElement.getBoundingClientRect();\n const scrollTop = this.fBrowser.window.pageYOffset || this.fBrowser.document.documentElement.scrollTop;\n const scrollLeft = this.fBrowser.window.pageXOffset || this.fBrowser.document.documentElement.scrollLeft;\n const offsetTop = rect.top + scrollTop;\n const offsetLeft = rect.left + scrollLeft;\n return RectExtensions.initialize(offsetLeft, offsetTop, rect.width, rect.height);\n }\n\n public move(difference: IPoint): void {\n this.difference = difference;\n const position = Point.fromPoint(this.onPointerDownRect).add(this.difference);\n this.placeholder!.setAttribute('style', this.getStyle(position));\n }\n\n public complete(): void {\n this.fBrowser.document.body.removeChild(this.placeholder!);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemFinalizeRequest } from './external-item-finalize.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\n\n\n@Injectable()\n@FValidatorRegister(ExternalItemFinalizeRequest)\nexport class ExternalItemFinalizeValidator implements IValidator<ExternalItemFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: ExternalItemFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ExternalItemDragHandler\n );\n }\n}\n","import { ExternalItemFinalizeExecution } from './external-item-finalize.execution';\nimport { ExternalItemFinalizeValidator } from './external-item-finalize.validator';\n\nexport const EXTERNAL_ITEM_FINALIZE_PROVIDERS = [\n\n ExternalItemFinalizeExecution,\n\n ExternalItemFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class ExternalItemPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemPreparationRequest } from './external-item-preparation.request';\nimport { Point } from '@foblex/core';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExternalItemBase, FExternalItemService, getExternalItem } from '../../../f-external-item';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ExternalItemPreparationRequest)\nexport class ExternalItemPreparationExecution implements IExecution<ExternalItemPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fExternalItemService: FExternalItemService,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ExternalItemPreparationRequest): void {\n this.fDraggableDataContext.onPointerDownScale = 1;\n\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition()).elementTransform(this.flowHost);\n\n this.fDraggableDataContext.draggableItems = [\n new ExternalItemDragHandler(this.getExternalItem(request.event.targetElement), this.fBrowser)\n ];\n }\n\n private getExternalItem(targetElement: HTMLElement): FExternalItemBase<any> {\n return this.fExternalItemService.getItem(getExternalItem(targetElement))!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemPreparationRequest } from './external-item-preparation.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\nimport { FExternalItemBase, FExternalItemService, getExternalItem, isExternalItem } from '../../../f-external-item';\n\n@Injectable()\n@FValidatorRegister(ExternalItemPreparationRequest)\nexport class ExternalItemPreparationValidator implements IValidator<ExternalItemPreparationRequest> {\n\n\n constructor(\n private fExternalItemService: FExternalItemService\n ) {\n }\n\n public handle(request: ExternalItemPreparationRequest): boolean {\n const externalItem = this.getExternalItem(request.event.targetElement);\n return isExternalItem(request.event.targetElement) && !!externalItem && !externalItem.fDisabled;\n }\n\n private getExternalItem(targetElement: HTMLElement): FExternalItemBase<any> | undefined {\n return this.fExternalItemService.getItem(getExternalItem(targetElement));\n }\n}\n","import { ExternalItemPreparationExecution } from './external-item-preparation.execution';\nimport { ExternalItemPreparationValidator } from './external-item-preparation.validator';\n\nexport const EXTERNAL_ITEM_PREPARATION_PROVIDERS = [\n\n ExternalItemPreparationExecution,\n\n ExternalItemPreparationValidator,\n];\n","import { EXTERNAL_ITEM_PREPARATION_PROVIDERS } from './external-item-preparation';\nimport { EXTERNAL_ITEM_FINALIZE_PROVIDERS } from './external-item-finalize';\n\nexport const F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS = [\n\n ...EXTERNAL_ITEM_FINALIZE_PROVIDERS,\n\n ...EXTERNAL_ITEM_PREPARATION_PROVIDERS,\n];\n","import { IHasHostElement } from '@foblex/core';\nimport { Directive, InjectionToken } from '@angular/core';\n\nexport const F_EXTERNAL_ITEM = new InjectionToken<FExternalItemBase>('F_EXTERNAL_ITEM');\n\n@Directive()\nexport abstract class FExternalItemBase<TData = any> implements IHasHostElement {\n\n public abstract fExternalItemId: string;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract fData: TData | undefined;\n\n public abstract fDisabled: boolean;\n}\n","export function isExternalItem(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fExternalItem]');\n}\n\nexport function getExternalItem(element: HTMLElement | SVGElement): HTMLElement | SVGElement {\n return element.closest('[fExternalItem]') as HTMLElement | SVGElement;\n}\n","import { Injectable } from '@angular/core';\nimport { FExternalItemBase } from './f-external-item-base';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FExternalItemService {\n\n private items: FExternalItemBase[] = [];\n\n public registerItem(item: FExternalItemBase): void {\n this.items.push(item);\n }\n\n public getItem(element: HTMLElement | SVGElement): FExternalItemBase | undefined {\n return this.items.find(item => item.hostElement === element);\n }\n\n public removeItem(item: FExternalItemBase): void {\n const index = this.items.indexOf(item);\n if (index !== -1) {\n this.items.splice(index, 1);\n }\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FExternalItemBase, F_EXTERNAL_ITEM } from './f-external-item-base';\nimport { FExternalItemService } from './f-external-item.service';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fExternalItem]\",\n host: {\n '[attr.id]': 'fExternalItemId',\n class: \"f-component f-external-item\",\n '[class.f-external-item-disabled]': 'fDisabled',\n },\n providers: [\n { provide: F_EXTERNAL_ITEM, useExisting: FExternalItemDirective }\n ],\n})\nexport class FExternalItemDirective<TData> extends FExternalItemBase<TData> implements OnInit, OnDestroy {\n\n @Input()\n public override fExternalItemId: string = `f-external-item-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override fData: TData | undefined;\n\n @Input()\n public override fDisabled: boolean = false;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fExternalItemService: FExternalItemService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fExternalItemService.registerItem(this);\n this.disablePointerEvents(Array.from(this.hostElement.children) as HTMLElement[]);\n }\n\n private disablePointerEvents(children: HTMLElement[]): void {\n children.forEach((x) => {\n x.style.pointerEvents = 'none';\n this.disablePointerEvents(Array.from(x.children) as HTMLElement[]);\n });\n }\n\n public ngOnDestroy(): void {\n this.fExternalItemService.removeItem(this);\n }\n}\n","import { FExternalItemDirective } from './f-external-item.directive';\n\nexport const F_EXTERNAL_ITEM_PROVIDERS = [\n FExternalItemDirective\n];\n","import { IPointerEvent } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_DRAG_AND_DROP_PLUGIN: InjectionToken<IFDragAndDropPlugin> = new InjectionToken<IFDragAndDropPlugin>('F_DRAG_AND_DROP_PLUGIN');\n\nexport interface IFDragAndDropPlugin {\n\n onSelect?(event: Event): void;\n\n onPointerDown?(event: IPointerEvent): void;\n\n prepareDragSequence?(event: IPointerEvent): void;\n\n onPointerUp?(event: IPointerEvent): void;\n}\n","import {\n AfterViewInit, ContentChildren,\n Directive,\n ElementRef,\n EventEmitter, Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit, Optional, Output, QueryList\n} from \"@angular/core\";\nimport { F_DRAGGABLE, FDraggableBase } from './f-draggable-base';\nimport { FComponentsStore } from '../f-storage';\nimport { FDraggableDataContext } from './f-draggable-data-context';\nimport { Subscription } from 'rxjs';\nimport { IPoint, IPointerEvent, Point } from '@foblex/core';\nimport { NodeMoveFinalizeRequest, NodeMovePreparationRequest } from './node';\nimport { CanvasMoveFinalizeRequest, CanvasMovePreparationRequest } from './canvas';\nimport {\n FCreateConnectionEvent,\n FReassignConnectionEvent,\n ReassignConnectionPreparationRequest,\n ReassignConnectionFinalizeRequest,\n CreateConnectionPreparationRequest,\n CreateConnectionFinalizeRequest\n} from './connections';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FFlowMediator } from '../infrastructure';\nimport { EmitTransformChangesRequest, GetSelectionRequest } from '../domain';\nimport {\n ExternalItemFinalizeRequest,\n ExternalItemPreparationRequest,\n FCreateNodeEvent,\n isExternalItem\n} from '../f-external-item';\nimport { SingleSelectRequest } from './single-select';\nimport { NodeResizeFinalizeRequest, NodeResizePreparationRequest } from './node-resize';\nimport { ICanRunOutsideAngular } from './i-can-run-outside-angular';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from './i-f-drag-and-drop-plugin';\nimport { BrowserService } from '@foblex/platform';\n\n@Directive({\n selector: \"f-flow[fDraggable]\",\n exportAs: 'fDraggable',\n providers: [\n { provide: F_DRAGGABLE, useExisting: FDraggableDirective }\n ]\n})\nexport class FDraggableDirective extends FDraggableBase implements OnInit, AfterViewInit, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input('fDraggableDisabled')\n public override disabled: boolean = false;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Output()\n public override fSelectionChange: EventEmitter<FSelectionChangeEvent> = new EventEmitter<FSelectionChangeEvent>();\n\n // @Output()\n // public override fConnectionIntersectNode: EventEmitter<ConnectionIntersectNodeEvent> = new EventEmitter<ConnectionIntersectNodeEvent>();\n\n @Output()\n public override fCreateNode: EventEmitter<FCreateNodeEvent> = new EventEmitter<FCreateNodeEvent>();\n\n @Output()\n public override fReassignConnection: EventEmitter<FReassignConnectionEvent> = new EventEmitter<FReassignConnectionEvent>();\n\n @Output()\n public override fCreateConnection: EventEmitter<FCreateConnectionEvent> = new EventEmitter<FCreateConnectionEvent>();\n\n @ContentChildren(F_DRAG_AND_DROP_PLUGIN, { descendants: true })\n private plugins!: QueryList<IFDragAndDropPlugin>;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fDraggableDataContext: FDraggableDataContext,\n @Inject(NgZone) @Optional() ngZone: ICanRunOutsideAngular,\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n private fBrowser: BrowserService,\n ) {\n super(ngZone);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fDraggable = this;\n }\n\n public ngAfterViewInit(): void {\n super.subscribe(this.fBrowser.document);\n }\n\n public override onPointerDown(event: IPointerEvent): boolean {\n this.fDraggableDataContext.reset();\n let result: boolean = event.isMouseLeftButton();\n\n this.plugins.forEach((p) => {\n p.onPointerDown?.(event);\n });\n\n this.fMediator.send<void>(new SingleSelectRequest(event));\n\n this.fMediator.send<void>(new ReassignConnectionPreparationRequest(event));\n\n this.fMediator.send<void>(new CreateConnectionPreparationRequest(event));\n\n if (!result) {\n this.finalizeDragSequence();\n }\n return result;\n }\n\n protected override prepareDragSequence(event: IPointerEvent) {\n\n this.plugins.forEach((p) => {\n p.prepareDragSequence?.(event);\n });\n\n this.fMediator.send<void>(new NodeResizePreparationRequest(event));\n\n this.fMediator.send<void>(new NodeMovePreparationRequest(event));\n\n this.fMediator.send<void>(new CanvasMovePreparationRequest(event));\n\n this.fMediator.send<void>(new ExternalItemPreparationRequest(event));\n\n this.fDraggableDataContext.draggableItems.forEach((item) => {\n item.initialize?.();\n });\n\n if (this.fDraggableDataContext.draggableItems.length > 0) {\n this.hostElement.classList.add('f-dragging');\n this.emitSelectionChangeEvent();\n }\n }\n\n protected override onSelect(event: Event): void {\n\n this.plugins.forEach((p) => {\n p.onSelect?.(event);\n });\n\n if (this.isTargetItemExternal(event)) {\n event.preventDefault();\n }\n }\n\n private isTargetItemExternal(event: Event): boolean {\n let isTargetItemExternal = this.isExternalItem(event.target as HTMLElement);\n let isTargetParentItemExternal = this.isExternalItem((event.target as Node).parentNode as HTMLElement);\n return isTargetItemExternal || isTargetParentItemExternal;\n }\n\n private isExternalItem(target: HTMLElement): boolean {\n let result = false;\n try {\n result = isExternalItem(target);\n } catch (e) {\n }\n return result;\n }\n\n public override onPointerMove(event: IPointerEvent): void {\n const pointerPositionInCanvas = Point.fromPoint(event.getPosition()).elementTransform(this.hostElement);\n const difference: IPoint = pointerPositionInCanvas.div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n this.fDraggableDataContext.draggableItems.forEach((item) => {\n item.move({ ...difference });\n });\n }\n\n public override onPointerUp(event: IPointerEvent): void {\n\n this.plugins.forEach((p) => {\n p.onPointerUp?.(event);\n });\n\n this.fMediator.send<void>(new ReassignConnectionFinalizeRequest(event));\n\n this.fMediator.send<void>(new CreateConnectionFinalizeRequest(event));\n\n this.fMediator.send<void>(new NodeResizeFinalizeRequest(event));\n\n this.fMediator.send<void>(new NodeMoveFinalizeRequest(event));\n\n this.fMediator.send<void>(new CanvasMoveFinalizeRequest(event));\n\n this.fMediator.send<void>(new ExternalItemFinalizeRequest(event));\n\n this.hostElement.classList.remove('f-dragging');\n\n this.fDraggableDataContext.reset();\n }\n\n protected override finalizeDragSequence(): void {\n this.emitSelectionChangeEvent();\n }\n\n private emitSelectionChangeEvent(): void {\n if (\n !this.fDraggableDataContext.isSelectedChanged\n ) {\n return;\n }\n this.fSelectionChange.emit(this.fMediator.send<FSelectionChangeEvent>(new GetSelectionRequest()));\n this.fDraggableDataContext.isSelectedChanged = false;\n this.fMediator.send<void>(new EmitTransformChangesRequest());\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n this.subscriptions$.unsubscribe();\n }\n}\n\n","export class FSelectionChangeEvent {\n\n constructor(\n public nodes: string[],\n public connections: string[],\n ) {\n }\n}\n","import { IPointerEvent } from '@foblex/core';\nimport { FMinimapData } from '../f-minimap-data';\n\nexport class MinimapDragPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public minimap: FMinimapData\n ) {\n }\n}\n","import { IPoint, IRect } from '@foblex/core';\nimport { FMinimapData } from '../f-minimap-data';\n\nexport class CalculateFlowPointFromMinimapPointRequest {\n\n constructor(\n public flowRect: IRect,\n public canvasPosition: IPoint,\n public eventPoint: IPoint,\n public minimap: FMinimapData\n ) {\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/core';\nimport { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\nimport { FMinimapData } from '../f-minimap-data';\n\n@Injectable()\n@FExecutionRegister(CalculateFlowPointFromMinimapPointRequest)\nexport class CalculateFlowPointFromMinimapPointExecution\n implements IExecution<CalculateFlowPointFromMinimapPointRequest, IPoint> {\n\n private get canvasScale(): number {\n return this.fComponentsStore.fCanvas!.transform.scale;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(payload: CalculateFlowPointFromMinimapPointRequest): IPoint {\n return PointExtensions.sub(\n payload.canvasPosition,\n PointExtensions.sub(\n this.getPositionInViewBox(payload.eventPoint, payload.minimap),\n this.getNormalizedFlowCenter(payload.flowRect)\n )\n );\n }\n\n private getNormalizedFlowCenter(flowRect: IRect): IPoint {\n return Point.fromPoint(flowRect.gravityCenter).sub(flowRect);\n }\n\n private getPositionInViewBox(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n const eventPointInFlow = this.normalizeEventPoint(eventPoint, minimap);\n return PointExtensions.sum(\n eventPointInFlow,\n RectExtensions.mult(minimap.viewBox, this.canvasScale)\n );\n }\n\n public normalizeEventPoint(point: IPoint, minimap: FMinimapData): Point {\n return this.getEventPointInMinimap(point, minimap)\n .mult(minimap.scale).mult(this.canvasScale);\n }\n\n private getEventPointInMinimap(eventPoint: IPoint, minimap: FMinimapData): Point {\n return Point.fromPoint(eventPoint).elementTransform(minimap.element as unknown as HTMLElement);\n }\n}\n","import { IPoint, IRect, Point } from '@foblex/core';\nimport { FComponentsStore } from '../../f-storage';\nimport { IDraggableItem } from '../../f-draggable';\nimport { FFlowMediator } from '../../infrastructure';\nimport { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point';\nimport { FMinimapData } from './f-minimap-data';\n\nexport class FMinimapDragHandler implements IDraggableItem {\n\n private lastDifference: IPoint | null = null;\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n private flowRect: IRect,\n private canvasPosition: IPoint,\n private eventPoint: IPoint,\n private minimap: FMinimapData\n ) {\n }\n\n public initialize(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.add('f-scaled-animate');\n }\n\n public move(difference: IPoint): void {\n if (this.lastDifference && this.isSamePoint(difference, this.lastDifference)) {\n return;\n }\n\n this.lastDifference = difference;\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(Point.fromPoint(this.eventPoint).add(difference)));\n this.fComponentsStore.fCanvas!.redraw();\n }\n\n private isSamePoint(point1: IPoint, point2: IPoint): boolean {\n return point1.x === point2.x && point1.y === point2.y;\n }\n\n private getNewPosition(eventPoint: IPoint): IPoint {\n return this.fMediator.send<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.flowRect, this.canvasPosition, eventPoint, this.minimap\n ));\n }\n\n public complete(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.remove('f-scaled-animate');\n this.fComponentsStore.fCanvas!.completeDrag();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragPreparationRequest } from './minimap-drag-preparation.request';\nimport { IPoint, IRect, Point, RectExtensions } from '@foblex/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { CalculateFlowPointFromMinimapPointRequest } from '../calculate-flow-point-from-minimap-point';\nimport { FMinimapData } from '../f-minimap-data';\n\n@Injectable()\n@FExecutionRegister(MinimapDragPreparationRequest)\nexport class MinimapDragPreparationExecution implements IExecution<MinimapDragPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: MinimapDragPreparationRequest): void {\n const eventPoint = request.event.getPosition();\n const startCanvasPosition = Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position);\n\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(eventPoint, request.minimap));\n this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.completeDrag();\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(eventPoint).elementTransform(this.flowHost);\n this.fDraggableDataContext.draggableItems = [\n new FMinimapDragHandler(\n this.fComponentsStore, this.fMediator, this.getFlowRect(),\n startCanvasPosition, eventPoint, request.minimap,\n )\n ];\n }\n\n private getNewPosition(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n return this.fMediator.send<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.getFlowRect(),\n Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position),\n eventPoint, minimap,\n ));\n }\n\n private getFlowRect(): IRect {\n return RectExtensions.fromElement(this.flowHost);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragPreparationRequest } from './minimap-drag-preparation.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FValidatorRegister(MinimapDragPreparationRequest)\nexport class MinimapDragPreparationValidator implements IValidator<MinimapDragPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: MinimapDragPreparationRequest): boolean {\n return !this.fDraggableDataContext.draggableItems.length &&\n !!request.event.targetElement.closest('.f-minimap') &&\n this.fComponentsStore.flowHost.contains(request.event.targetElement);\n }\n}\n","import { MinimapDragPreparationExecution } from './minimap-drag-preparation.execution';\nimport { MinimapDragPreparationValidator } from './minimap-drag-preparation.validator';\n\nexport const MINIMAP_DRAG_PREPARATION_PROVIDERS = [\n\n MinimapDragPreparationExecution,\n\n MinimapDragPreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class MinimapDragFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragFinalizeRequest } from './minimap-drag-finalize.request';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(MinimapDragFinalizeRequest)\nexport class MinimapDragFinalizeExecution implements IExecution<MinimapDragFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: MinimapDragFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragFinalizeRequest } from './minimap-drag-finalize.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\n\n@Injectable()\n@FValidatorRegister(MinimapDragFinalizeRequest)\nexport class MinimapDragFinalizeValidator implements IValidator<MinimapDragFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: MinimapDragFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FMinimapDragHandler\n );\n }\n}\n","import { MinimapDragFinalizeExecution } from './minimap-drag-finalize.execution';\nimport { MinimapDragFinalizeValidator } from './minimap-drag-finalize.validator';\n\nexport const MINIMAP_DRAG_FINALIZE_PROVIDERS = [\n\n MinimapDragFinalizeExecution,\n\n MinimapDragFinalizeValidator,\n];\n","import { MINIMAP_DRAG_PREPARATION_PROVIDERS } from './minimap-drag-preparation';\nimport { MINIMAP_DRAG_FINALIZE_PROVIDERS } from './minimap-drag-finalize';\nimport { CalculateFlowPointFromMinimapPointExecution } from './calculate-flow-point-from-minimap-point';\n\nexport const F_MINIMAP_DRAG_AND_DROP_PROVIDERS = [\n\n CalculateFlowPointFromMinimapPointExecution,\n\n ...MINIMAP_DRAG_FINALIZE_PROVIDERS,\n\n ...MINIMAP_DRAG_PREPARATION_PROVIDERS,\n];\n","import { IPointerEvent } from '@foblex/core';\n\nexport class SelectionAreaFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaFinalizeRequest } from './selection-area-finalize.request';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaFinalizeRequest)\nexport class SelectionAreaFinalizeExecution implements IExecution<SelectionAreaFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectionAreaFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","export class GetCanBeSelectedItemsRequest {\n}\n","import { IPoint, Point, RectExtensions } from '@foblex/core';\nimport { FComponentsStore } from '../../f-storage';\nimport { EmitTransformChangesRequest, ISelectableWithRect } from '../../domain';\nimport { ISelectable } from '../../f-connection';\nimport { FFlowMediator } from '../../infrastructure';\nimport { GetCanBeSelectedItemsRequest } from '../../domain/get-can-be-selected-items/get-can-be-selected-items-request';\nimport { FDraggableDataContext, IDraggableItem } from '../../f-draggable';\nimport { FSelectionAreaBase } from '../f-selection-area-base';\n\nexport class SelectionAreaDragHandle implements IDraggableItem {\n\n private canBeSelected: ISelectableWithRect[] = [];\n\n private selectedByMove: ISelectable[] = [];\n\n private get canvasPosition(): Point {\n return Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position).add(this.fComponentsStore.fCanvas!.transform.scaledPosition);\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fSelectionArea: FSelectionAreaBase,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator,\n ) {\n }\n\n public initialize(): void {\n this.canBeSelected = this.fMediator.send(new GetCanBeSelectedItemsRequest());\n\n this.fSelectionArea.show();\n this.fSelectionArea.draw(\n RectExtensions.initialize(\n this.fDraggableDataContext.onPointerDownPosition.x,\n this.fDraggableDataContext.onPointerDownPosition.y\n )\n );\n }\n\n public move(difference: IPoint): void {\n const currentPoint = Point.fromPoint(difference).add(this.fDraggableDataContext.onPointerDownPosition);\n const x: number = Math.min(this.fDraggableDataContext.onPointerDownPosition.x, currentPoint.x);\n const y: number = Math.min(this.fDraggableDataContext.onPointerDownPosition.y, currentPoint.y);\n\n const width = Math.abs(difference.x);\n const height = Math.abs(difference.y);\n\n this.fSelectionArea.draw(\n RectExtensions.initialize(x, y, width, height)\n );\n this.selectedByMove = [];\n this.canBeSelected.forEach((item) => {\n item.element.deselect();\n\n const itemRect = RectExtensions.addPoint(item.rect, this.canvasPosition);\n\n const isIntersect = RectExtensions.intersectionWithRect(itemRect, RectExtensions.initialize(x, y, width, height));\n if (isIntersect) {\n\n item.element.select();\n this.selectedByMove.push(item.element);\n }\n });\n this.fMediator.send<void>(new EmitTransformChangesRequest());\n }\n\n public complete(): void {\n this.fSelectionArea.hide();\n this.fDraggableDataContext.selectedItems.push(...this.selectedByMove);\n if (this.selectedByMove.length > 0) {\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaFinalizeRequest } from './selection-area-finalize.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\n\n@Injectable()\n@FValidatorRegister(SelectionAreaFinalizeRequest)\nexport class SelectionAreaFinalizeValidator implements IValidator<SelectionAreaFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SelectionAreaFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) =>\n x instanceof SelectionAreaDragHandle\n );\n }\n}\n","import { SelectionAreaFinalizeExecution } from './selection-area-finalize.execution';\nimport { SelectionAreaFinalizeValidator } from './selection-area-finalize.validator';\n\nexport const SELECTION_AREA_FINALIZE_PROVIDERS = [\n\n SelectionAreaFinalizeExecution,\n\n SelectionAreaFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/core';\nimport { FSelectionAreaBase } from '../../f-selection-area-base';\n\nexport class SelectionAreaPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fSelectionArea: FSelectionAreaBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaPreparationRequest } from './selection-area-preparation.request';\nimport { Point } from '@foblex/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaPreparationRequest)\nexport class SelectionAreaPreparationExecution implements IExecution<SelectionAreaPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: SelectionAreaPreparationRequest): void {\n this.fDraggableDataContext.draggableItems = [\n new SelectionAreaDragHandle(\n this.fComponentsStore, request.fSelectionArea, this.fDraggableDataContext, this.fMediator\n )\n ];\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaPreparationRequest } from './selection-area-preparation.request';\nimport { FValidatorRegister, IValidator } from '../../../infrastructure';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FValidatorRegister(SelectionAreaPreparationRequest)\nexport class SelectionAreaPreparationValidator implements IValidator<SelectionAreaPreparationRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SelectionAreaPreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isShiftPressed(request.event.originalEvent);\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private isShiftPressed(event: { shiftKey: boolean }): boolean {\n return event.shiftKey;\n }\n}\n","import { SelectionAreaPreparationExecution } from './selection-area-preparation.execution';\nimport { SelectionAreaPreparationValidator } from './selection-area-preparation.validator';\n\nexport const SELECTION_AREA_PREPARATION_PROVIDERS = [\n\n SelectionAreaPreparationExecution,\n\n SelectionAreaPreparationValidator,\n];\n","import { SELECTION_AREA_FINALIZE_PROVIDERS } from './selection-area-finalize';\nimport { SELECTION_AREA_PREPARATION_PROVIDERS } from './selection-area-preparation';\n\nexport const F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS = [\n\n ...SELECTION_AREA_FINALIZE_PROVIDERS,\n\n ...SELECTION_AREA_PREPARATION_PROVIDERS\n];\n","import { CANVAS_PROVIDERS } from './canvas';\nimport { CONNECTIONS_PROVIDERS } from './connections';\nimport { SINGLE_SELECT_PROVIDERS } from './single-select';\nimport { NODE_PROVIDERS } from './node';\nimport { NODE_RESIZE_PROVIDERS } from './node-resize';\nimport { F_MINIMAP_DRAG_AND_DROP_PROVIDERS } from '../f-minimap/domain/providers';\nimport { F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS } from '../f-external-item/domain/providers';\nimport { F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS } from '../f-selection-area/domain/providers';\nimport { DRAG_AND_DROP_COMMON_PROVIDERS } from './domain';\n\nexport const F_DRAGGABLE_PROVIDERS = [\n\n ...CANVAS_PROVIDERS,\n\n ...CONNECTIONS_PROVIDERS,\n\n ...DRAG_AND_DROP_COMMON_PROVIDERS,\n\n ...SINGLE_SELECT_PROVIDERS,\n\n ...F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS,\n\n ...NODE_PROVIDERS,\n\n ...NODE_RESIZE_PROVIDERS,\n\n ...F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS,\n\n ...F_MINIMAP_DRAG_AND_DROP_PROVIDERS\n];\n","import { ClearSelectionRequest } from './clear-selection.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\nimport { FDraggableDataContext } from '../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(ClearSelectionRequest)\nexport class ClearSelectionExecution implements IExecution<ClearSelectionRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: ClearSelectionRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => x.deselect());\n this.fDraggableDataContext.selectedItems = [];\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","import { FConnectionBase } from '../../f-connection';\n\nexport class CreateConnectionMarkersRequest {\n constructor(\n public fConnection: FConnectionBase,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionMarkersRequest } from './create-connection-markers-request';\nimport { FConnectionBase, FMarkerBase } from '../../f-connection';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionMarkersRequest)\nexport class CreateConnectionMarkersExecution implements IExecution<CreateConnectionMarkersRequest, void> {\n\n constructor(\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: CreateConnectionMarkersRequest): void {\n const element: SVGDefsElement = createSVGElement('defs', this.fBrowser);\n const fConnection = request.fConnection;\n\n fConnection.fMarkers.forEach((marker) => {\n\n const markerElement = this.createMarkerElement(marker, fConnection.fId);\n\n const clone = marker.hostElement.cloneNode(true) as HTMLElement;\n clone.setAttribute('height', `${ marker.height }`);\n clone.setAttribute('width', `${ marker.width }`);\n clone.removeAttribute('markerUnits');\n clone.style.display = 'unset';\n markerElement.append(clone);\n\n element.append(markerElement);\n });\n\n fConnection.fDefs.nativeElement.innerHTML = element.innerHTML;\n\n this.makeSafariCompatible(fConnection);\n }\n\n // Safari does not support markers on path elements if markers are defined after the path element\n private makeSafariCompatible(fConnection: FConnectionBase): void {\n fConnection.fPath.hostElement.replaceWith(fConnection.fPath.hostElement);\n }\n\n private createMarkerElement(marker: FMarkerBase, fConnectionId: string): SVGElement {\n const markerElement = createSVGElement('marker', this.fBrowser);\n\n markerElement.setAttribute('id', sanitizeElementId(marker.type + '-' + fConnectionId));\n\n markerElement.setAttribute('markerHeight', `${ marker.height }`);\n markerElement.setAttribute('markerWidth', `${ marker.width }`);\n markerElement.setAttribute('orient', `${ marker.orient }`);\n markerElement.setAttribute('refX', `${ marker.refX }`);\n markerElement.setAttribute('refY', `${ marker.refY }`);\n markerElement.setAttribute('markerUnits', `${ marker.markerUnits }`);\n\n return markerElement;\n }\n}\nfunction sanitizeElementId(id: string): string {\n if (!id.match(/^[a-zA-Z_]/)) {\n id = '_' + id;\n }\n return id.replace(/[^a-zA-Z0-9_\\-:.]/g, '_');\n}\nfunction createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","export class EmitTransformChangesRequest {\n\n}\n","import { EmitTransformChangesRequest } from './emit-transform-changes.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\nimport { FTransformStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(EmitTransformChangesRequest)\nexport class EmitTransformChangesExecution\n implements IExecution<EmitTransformChangesRequest, void> {\n\n constructor(\n private fTransformStore: FTransformStore,\n ) {\n }\n\n public handle(request: EmitTransformChangesRequest): void {\n this.fTransformStore.changes.next();\n }\n}\n","export class GetElementRectInFlowRequest {\n constructor(\n public element: HTMLElement | SVGElement\n ) {\n }\n}\n","export enum EFConnectorShape {\n\n ROUNDED_RECT = 'ROUNDED_RECT',\n}\n","import { IRoundedRect } from './i-rounded-rect';\nimport { IPoint, IRect, Point } from '@foblex/core';\nimport { EFConnectorShape } from '../e-f-connector-shape';\nimport { BrowserService } from '@foblex/platform';\n\nexport class RoundedRect implements IRoundedRect {\n\n public readonly type: EFConnectorShape = EFConnectorShape.ROUNDED_RECT;\n\n public gravityCenter: IPoint = { x: 0, y: 0 };\n\n constructor(\n public x: number = 0,\n public y: number = 0,\n public width: number = 0,\n public height: number = 0,\n public radius1: number = 0,\n public radius2: number = 0,\n public radius3: number = 0,\n public radius4: number = 0\n ) {\n this.gravityCenter = this.calculateGravityCenter(this);\n }\n\n private calculateGravityCenter(rect: IRoundedRect): IPoint {\n return new Point(rect.x + rect.width / 2, rect.y + rect.height / 2);\n }\n\n public static fromRect(rect: IRect): RoundedRect {\n return new RoundedRect(rect.x, rect.y, rect.width, rect.height);\n }\n\n public static fromRoundedRect(rect: IRoundedRect): RoundedRect {\n return new RoundedRect(rect.x, rect.y, rect.width, rect.height, rect.radius1, rect.radius2, rect.radius3, rect.radius4);\n }\n\n public static fromElement(element: HTMLElement | SVGElement, fBrowser: BrowserService): RoundedRect {\n const { x, y, width, height } = element.getBoundingClientRect();\n return this.setRadiusFromElement(new RoundedRect(x, y, width, height), element, fBrowser);\n }\n\n private static setRadiusFromElement(rect: RoundedRect, element: HTMLElement | SVGElement, fBrowser: BrowserService): RoundedRect {\n const data = fBrowser.window.getComputedStyle(element);\n rect.radius1 = fBrowser.toPixels(data.borderTopLeftRadius, element.clientWidth, element.clientHeight, data.fontSize) || 0;\n rect.radius2 = fBrowser.toPixels(data.borderTopRightRadius, element.clientWidth, element.clientHeight, data.fontSize) || 0;\n rect.radius3 = fBrowser.toPixels(data.borderBottomRightRadius, element.clientWidth, element.clientHeight, data.fontSize) || 0;\n rect.radius4 = fBrowser.toPixels(data.borderBottomLeftRadius, element.clientWidth, element.clientHeight, data.fontSize) || 0;\n return rect;\n }\n\n public addPoint(point: IPoint): RoundedRect {\n const copy = RoundedRect.fromRoundedRect(this);\n copy.x += point.x;\n copy.y += point.y;\n copy.gravityCenter = this.calculateGravityCenter(copy);\n return copy;\n }\n}\n","import { IConnectorShape } from './i-connector-shape';\nimport { IRoundedRect } from './rounded-rect';\nimport { Arc, Line } from '@foblex/core';\nimport { EFConnectorShape } from './e-f-connector-shape';\n\nexport class FConnectorShapeExtensions {\n\n public static getSegments(shape: IConnectorShape): (Arc | Line)[] {\n let result: (Arc | Line)[] = [];\n switch (shape.type) {\n case EFConnectorShape.ROUNDED_RECT:\n result = this.parseRect(shape as IRoundedRect);\n break;\n default:\n throw new Error(`Unknown connector shape type: ${ shape.type }`);\n }\n return result;\n }\n\n /**\n * Parses the rounded rectangle into its constituent segments (arcs and lines).\n * @param rect - The rounded rectangle to parse.\n * @returns An array of arcs and lines representing the rectangle.\n */\n private static parseRect(rect: IRoundedRect): (Arc | Line)[] {\n const degree90 = Math.PI * 0.5;\n\n const x0 = rect.x;\n const y0 = rect.y;\n const x1 = rect.x + rect.width;\n const y1 = rect.y + rect.height;\n\n const topLeftX = rect.x + rect.radius1;\n const topLeftY = rect.y + rect.radius1;\n const topRightX = rect.x + rect.width - rect.radius2;\n const topRightY = rect.y + rect.radius2;\n const bottomRightX = rect.x + rect.width - rect.radius3;\n const bottomRightY = rect.y + rect.height - rect.radius3;\n const bottomLeftX = rect.x + rect.radius4;\n const bottomLeftY = rect.y + rect.height - rect.radius4;\n\n return [\n new Arc({ x: topLeftX, y: topLeftY }, rect.radius1, rect.radius1, 2 * degree90, 3 * degree90),\n new Line({ x: topLeftX, y: y0 }, { x: topRightX, y: y0 }),\n new Arc({ x: topRightX, y: topRightY }, rect.radius2, rect.radius2, 3 * degree90, 4 * degree90),\n new Line({ x: x1, y: topRightY }, { x: x1, y: bottomRightY }),\n new Arc({ x: bottomRightX, y: bottomRightY }, rect.radius3, rect.radius3, 0, degree90),\n new Line({ x: bottomRightX, y: y1 }, { x: bottomLeftX, y: y1 }),\n new Arc({ x: bottomLeftX, y: bottomLeftY }, rect.radius4, rect.radius4, degree90, 2 * degree90),\n new Line({ x: x0, y: bottomLeftY }, { x: x0, y: topLeftY }),\n ];\n }\n}\n","import { Arc, IArc, IPoint, Line, PointExtensions, VectorExtensions } from '@foblex/core';\nimport { IConnectorShape } from './i-connector-shape';\nimport { FConnectorShapeExtensions } from './f-connector-shape.extensions';\n\n/**\n * The IntersectionFinder class is designed to find intersection points between\n * line segments and various geometric shapes. Currently, it supports rectangles,\n * circles, and ellipses. In the future, support for additional shapes will be added.\n */\nexport class IntersectionFinder {\n\n /**\n * Finds the guaranteed intersection points between a line segment and a rounded rectangle.\n * @param from - Starting point of the line segment.\n * @param to - Ending point of the line segment.\n * @param shape - The shape to check for intersections.\n * @returns An array of intersection points.\n */\n public static getIntersections(from: IPoint, to: IPoint, shape: IConnectorShape): IPoint[] {\n const segments: (Arc | Line)[] = FConnectorShapeExtensions.getSegments(shape);\n\n for (const segment of segments) {\n if (segment instanceof Arc) {\n const intersections = this.intersectArcWithLine(segment, from, to);\n if (intersections.length > 0) {\n return intersections;\n }\n } else if (segment instanceof Line) {\n const intersection = this.intersectLineSegments(from, to, segment.point1, segment.point2);\n if (intersection) {\n return [ intersection ];\n }\n }\n }\n\n return [];\n }\n\n /**\n * Finds the intersection points between an arc and a line segment.\n * @param arc - The arc to check for intersections.\n * @param from - Starting point of the line segment.\n * @param to - Ending point of the line segment.\n * @returns An array of intersection points.\n */\n private static intersectArcWithLine(arc: IArc, from: IPoint, to: IPoint): IPoint[] {\n return this.filterPointsWithinArc(\n this.findEllipseLineIntersections(arc.center, arc.radiusX, arc.radiusY, from, to),\n arc\n );\n }\n\n /**\n * Finds the intersection point between two line segments.\n * @param p1 - Starting point of the first line segment.\n * @param p2 - Ending point of the first line segment.\n * @param p3 - Starting point of the second line segment.\n * @param p4 - Ending point of the second line segment.\n * @returns The intersection point or null if there is no intersection.\n */\n private static intersectLineSegments(p1: IPoint, p2: IPoint, p3: IPoint, p4: IPoint): IPoint | null {\n const s1_x = p2.x - p1.x;\n const s1_y = p2.y - p1.y;\n const s2_x = p4.x - p3.x;\n const s2_y = p4.y - p3.y;\n\n const s = (-s1_y * (p1.x - p3.x) + s1_x * (p1.y - p3.y)) / (-s2_x * s1_y + s1_x * s2_y);\n const t = (s2_x * (p1.y - p3.y) - s2_y * (p1.x - p3.x)) / (-s2_x * s1_y + s1_x * s2_y);\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return { x: p1.x + (t * s1_x), y: p1.y + (t * s1_y) };\n }\n\n return null;\n }\n\n /**\n * Filters intersection points to retain only those within the given arc.\n * @param points - The points to filter.\n * @param arc - The arc to check against.\n * @returns An array of points within the arc.\n */\n private static filterPointsWithinArc(points: IPoint[], arc: IArc): IPoint[] {\n let { center, startAngle, endAngle } = arc;\n\n if (points.length === 0) {\n return points;\n }\n\n if (endAngle < startAngle) {\n [ startAngle, endAngle ] = [ endAngle, startAngle ];\n }\n\n if (startAngle < 0 || endAngle < 0) {\n startAngle += 2.0 * Math.PI;\n endAngle += 2.0 * Math.PI;\n }\n\n const filteredPoints: IPoint[] = [];\n\n for (const point of points) {\n let angle = this.normalizeAngle(\n VectorExtensions.angle(\n VectorExtensions.initialize(1, 0),\n VectorExtensions.initialize(point.x - center.x, point.y - center.y)\n )\n );\n\n if (angle < startAngle) {\n angle += 2.0 * Math.PI;\n }\n\n if (startAngle <= angle && angle <= endAngle) {\n filteredPoints.push(point);\n }\n }\n\n return filteredPoints;\n }\n\n /**\n * Normalizes an angle to be within the range 0 to 2π.\n * @param radians - The angle in radians.\n * @returns The normalized angle.\n */\n private static normalizeAngle(radians: number): number {\n const normal = radians % (2.0 * Math.PI);\n return normal < 0.0 ? (normal + (2.0 * Math.PI)) : normal;\n }\n\n /**\n * Finds the intersection points between an ellipse and a line segment.\n * @param center - Center of the ellipse.\n * @param radiusX - X radius of the ellipse.\n * @param radiusY - Y radius of the ellipse.\n * @param pointA - Starting point of the line segment.\n * @param pointB - Ending point of the line segment.\n * @returns An array of intersection points.\n */\n private static findEllipseLineIntersections(center: IPoint, radiusX: number, radiusY: number, pointA: IPoint, pointB: IPoint): IPoint[] {\n const origin = VectorExtensions.initialize(pointA.x, pointA.y);\n const direction = VectorExtensions.fromPoints(pointA, pointB);\n const ellipseCenter = VectorExtensions.initialize(center.x, center.y);\n const diff = VectorExtensions.subtract(origin, ellipseCenter);\n const scaledDir = VectorExtensions.initialize(direction.x / (radiusX * radiusX), direction.y / (radiusY * radiusY));\n const scaledDiff = VectorExtensions.initialize(diff.x / (radiusX * radiusX), diff.y / (radiusY * radiusY));\n\n const a = VectorExtensions.dotProduct(direction, scaledDir);\n const b = VectorExtensions.dotProduct(direction, scaledDiff);\n const c = VectorExtensions.dotProduct(diff, scaledDiff) - 1.0;\n const discriminant = b * b - a * c;\n\n return discriminant < 0 ? [] : this.calculateIntersectionPoints(discriminant, a, b, pointA, pointB);\n }\n\n /**\n * Calculates the intersection points based on the discriminant.\n * @param discriminant - The discriminant value.\n * @param a - Coefficient 'a' in the quadratic equation.\n * @param b - Coefficient 'b' in the quadratic equation.\n * @param pointA - Starting point of the line segment.\n * @param pointB - Ending point of the line segment.\n * @returns An array of intersection points.\n */\n private static calculateIntersectionPoints(discriminant: number, a: number, b: number, pointA: IPoint, pointB: IPoint): IPoint[] {\n const points: IPoint[] = [];\n\n if (discriminant > 0) {\n const root = Math.sqrt(discriminant);\n const t1 = (-b - root) / a;\n const t2 = (-b + root) / a;\n\n if (t1 >= 0 && t1 <= 1) {\n points.push(PointExtensions.interpolatePoints(pointA, pointB, t1));\n }\n if (t2 >= 0 && t2 <= 1) {\n points.push(PointExtensions.interpolatePoints(pointA, pointB, t2));\n }\n } else {\n const t = -b / a;\n if (t >= 0 && t <= 1) {\n points.push(PointExtensions.interpolatePoints(pointA, pointB, t));\n }\n }\n\n return points;\n }\n}\n","import {\n IPoint, ISize,\n ITransformModel,\n Point,\n SizeExtensions\n} from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { GetElementRectInFlowRequest } from './get-element-rect-in-flow-request';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\nimport { FComponentsStore } from '../../f-storage';\nimport { IRoundedRect, RoundedRect } from '../intersections';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(GetElementRectInFlowRequest)\nexport class GetElementRectInFlowExecution implements IExecution<GetElementRectInFlowRequest, IRoundedRect> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: GetElementRectInFlowRequest): IRoundedRect {\n const systemRect = RoundedRect.fromElement(request.element, this.fBrowser);\n const position = this.transformElementPositionInFlow(systemRect);\n const size = this.transformElementSizeInFlow(systemRect);\n\n return new RoundedRect(\n position.x, position.y, size.width, size.height,\n systemRect.radius1, systemRect.radius2, systemRect.radius3, systemRect.radius4\n );\n }\n\n private transformElementPositionInFlow(rect: IRoundedRect): IPoint {\n return Point.fromPoint(rect).elementTransform(this.flowHost).sub(this.transform.scaledPosition).sub(this.transform.position).div(this.transform.scale);\n }\n\n private transformElementSizeInFlow(rect: IRoundedRect): ISize {\n return SizeExtensions.initialize(rect.width / this.transform.scale, rect.height / this.transform.scale);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IRect, ITransformModel, RectExtensions } from '@foblex/core';\nimport { ISelectableWithRect } from './i-selectable-with-rect';\nimport { GetCanBeSelectedItemsRequest } from './get-can-be-selected-items-request';\nimport { FNodeBase } from '../../f-node';\nimport { FConnectionBase } from '../../f-connection';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../infrastructure';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(GetCanBeSelectedItemsRequest)\nexport class GetCanBeSelectedItemsExecution implements IExecution<void, ISelectableWithRect[]> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator,\n ) {\n }\n\n public handle(): ISelectableWithRect[] {\n return [ ...this.getNodesWithRects(), ...this.getConnectionsWithRects() ].filter((x) => {\n return !this.fDraggableDataContext.selectedItems.includes(x.element);\n });\n }\n\n private getNodesWithRects(): ISelectableWithRect[] {\n return this.fNodes.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n rect: RectExtensions.mult(\n this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement)),\n this.transform.scale\n )\n };\n });\n }\n\n private getConnectionsWithRects(): ISelectableWithRect[] {\n return this.fConnections.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n rect: RectExtensions.mult(\n this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.boundingElement)),\n this.transform.scale\n )\n };\n });\n }\n}\n","export class GetDeepChildrenNodesAndGroupsRequest {\n\n constructor(\n public fId: string\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetDeepChildrenNodesAndGroupsRequest } from './get-deep-children-nodes-and-groups.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FNodeBase } from '../../f-node';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\n\n@Injectable()\n@FExecutionRegister(GetDeepChildrenNodesAndGroupsRequest)\nexport class GetDeepChildrenNodesAndGroupsExecution\n implements IExecution<GetDeepChildrenNodesAndGroupsRequest, FNodeBase[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetDeepChildrenNodesAndGroupsRequest): FNodeBase[] {\n return this.getChildrenNodes(request.fId);\n }\n\n private getChildrenNodes(fId: string, visited: Set<string> = new Set()): FNodeBase[] {\n if (visited.has(fId)) {\n throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fId);\n }\n visited.add(fId);\n\n const result = this.fComponentsStore.fNodes.filter((x) => x.fParentId === fId);\n result.forEach((x) => {\n result.push(...this.getChildrenNodes(x.fId, visited));\n });\n return result;\n }\n}\n","import { EFConnectionBehavior } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { IConnectorShape } from '../intersections';\n\nexport class GetConnectionLineRequest {\n\n constructor(\n public outputRect: IConnectorShape,\n public inputRect: IConnectorShape,\n public behavior: EFConnectionBehavior | string,\n public outputSide: EFConnectableSide,\n public inputSide: EFConnectableSide,\n ) {\n\n }\n}\n","import { ILine, IPoint, IRect, Line, Point } from '@foblex/core';\nimport { GetConnectionLineRequest } from './get-connection-line.request';\nimport { Injectable } from '@angular/core';\nimport { EFConnectionBehavior } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\nimport { IntersectionFinder, IRoundedRect } from '../intersections';\n\n@Injectable()\n@FExecutionRegister(GetConnectionLineRequest)\nexport class GetConnectionLineExecution implements IExecution<GetConnectionLineRequest, ILine> {\n\n private behaviorHandlers = {\n\n [ EFConnectionBehavior.FLOATING.toString() ]: this.floatingBehavior,\n\n [ EFConnectionBehavior.FIXED_CENTER.toString() ]: this.fixedCenterBehavior,\n\n [ EFConnectionBehavior.FIXED.toString() ]: this.fixedOutboundBehaviour,\n }\n\n public handle(payload: GetConnectionLineRequest): ILine {\n return this.behaviorHandlers[ payload.behavior ](payload);\n }\n\n private floatingBehavior(payload: GetConnectionLineRequest): ILine {\n const fromResult = IntersectionFinder.getIntersections(payload.outputRect.gravityCenter, payload.inputRect.gravityCenter, payload.outputRect)[ 0 ];\n const toResult = IntersectionFinder.getIntersections(payload.inputRect.gravityCenter, payload.outputRect.gravityCenter, payload.inputRect)[ 0 ];\n return new Line(\n fromResult ? fromResult : payload.outputRect.gravityCenter,\n toResult ? toResult : payload.inputRect.gravityCenter\n );\n }\n\n private fixedCenterBehavior(payload: GetConnectionLineRequest): ILine {\n return new Line(\n payload.outputRect.gravityCenter,\n payload.inputRect.gravityCenter\n );\n }\n\n private fixedOutboundBehaviour(payload: GetConnectionLineRequest): ILine {\n return new Line(\n positionFixedOutbound[ payload.outputSide === EFConnectableSide.AUTO ? EFConnectableSide.BOTTOM : payload.outputSide ](payload.outputRect as IRoundedRect),\n positionFixedOutbound[ payload.inputSide === EFConnectableSide.AUTO ? EFConnectableSide.TOP : payload.inputSide ](payload.inputRect as IRoundedRect)\n );\n }\n}\n\nconst positionFixedOutbound = {\n [ EFConnectableSide.TOP ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.y = rect.y;\n result.x = rect.x + rect.width / 2;\n return result;\n },\n [ EFConnectableSide.BOTTOM ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.y = rect.y + rect.height;\n result.x = rect.x + rect.width / 2;\n return result;\n },\n [ EFConnectableSide.LEFT ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.x = rect.x;\n result.y = rect.y + rect.height / 2;\n return result;\n },\n [ EFConnectableSide.RIGHT ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.x = rect.x + rect.width;\n result.y = rect.y + rect.height / 2;\n return result;\n },\n};\n\n\n\n\n","export class GetScaledNodeRectsWithFlowPositionRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/core';\nimport { GetScaledNodeRectsWithFlowPositionRequest } from './get-scaled-node-rects-with-flow-position.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\nimport { FNodeBase } from '../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetScaledNodeRectsWithFlowPositionRequest)\nexport class GetScaledNodeRectsWithFlowPositionExecution implements IExecution<GetScaledNodeRectsWithFlowPositionRequest, IRect | null> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetScaledNodeRectsWithFlowPositionRequest): IRect | null {\n return RectExtensions.union(this.getNodesRects());\n }\n\n private getNodesRects(): IRect[] {\n return this.getNodes().map((x) => {\n const rect = RectExtensions.fromElement(x.hostElement);\n return RectExtensions.initialize(x.position.x, x.position.y, rect.width, rect.height);\n });\n }\n\n private getNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n}\n","export class GetInputRectInFlowRequest {\n constructor(\n public fInputId: string\n ) {\n }\n}\n","import { EFConnectableSide } from '../../f-connectors';\nimport { IRoundedRect } from '../intersections';\n\nexport class GetInputRectInFlowResponse {\n constructor(\n public rect: IRoundedRect,\n public fConnectableSide: EFConnectableSide\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../infrastructure';\nimport { GetInputRectInFlowRequest } from './get-input-rect-in-flow-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetInputRectInFlowResponse } from './get-input-rect-in-flow-response';\nimport { InputNotFound } from '../../errors';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\nimport { IRoundedRect } from '../intersections';\n\n@Injectable()\n@FExecutionRegister(GetInputRectInFlowRequest)\nexport class GetInputRectInFlowExecution implements IExecution<GetInputRectInFlowRequest, GetInputRectInFlowResponse> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n ) {\n }\n\n public handle(request: GetInputRectInFlowRequest): GetInputRectInFlowResponse {\n\n const input = this.fComponentsStore.fInputs.find((x) => x.id === request.fInputId);\n\n if (!input) {\n throw InputNotFound(request.fInputId);\n }\n\n return new GetInputRectInFlowResponse(\n this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(input.hostElement)),\n input.fConnectableSide\n );\n }\n}\n","export class GetNodesRectRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/core';\nimport { GetNodesRectRequest } from './get-nodes-rect.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\nimport { FNodeBase } from '../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetNodesRectRequest)\nexport class GetNodesRectExecution implements IExecution<GetNodesRectRequest, IRect | null> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetNodesRectRequest): IRect | null {\n return RectExtensions.union(this.getNodesRects());\n }\n\n private getNodesRects(): IRect[] {\n return this.getNodes().map((x) => RectExtensions.fromElement(x.hostElement));\n }\n\n private getNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n}\n","export class GetOutputRectInFlowRequest {\n constructor(\n public fOutputId: string\n ) {\n }\n}\n","import { EFConnectableSide } from '../../f-connectors';\nimport { IRoundedRect } from '../intersections';\n\nexport class GetOutputRectInFlowResponse {\n constructor(\n public rect: IRoundedRect,\n public fConnectableSide: EFConnectableSide\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../infrastructure';\nimport { GetOutputRectInFlowRequest } from './get-output-rect-in-flow-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetOutputRectInFlowResponse } from './get-output-rect-in-flow-response';\nimport { OutputNotFound } from '../../errors';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\nimport { IRoundedRect } from '../intersections';\n\n@Injectable()\n@FExecutionRegister(GetOutputRectInFlowRequest)\nexport class GetOutputRectInFlowExecution implements IExecution<GetOutputRectInFlowRequest, GetOutputRectInFlowResponse> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n ) {\n }\n\n public handle(request: GetOutputRectInFlowRequest): GetOutputRectInFlowResponse {\n\n let output = this.fComponentsStore.fOutputs.find((x) => x.id === request.fOutputId);\n\n if (!output) {\n output = this.fComponentsStore.fOutlets.find((x) => x.id === request.fOutputId);\n }\n\n if (!output) {\n throw OutputNotFound(request.fOutputId);\n }\n\n const result = this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(output.hostElement));\n return new GetOutputRectInFlowResponse(result, output.fConnectableSide);\n }\n}\n","import { IPoint } from '@foblex/core';\n\nexport class GetPositionInFlowRequest {\n constructor(\n public position: IPoint\n ) {\n }\n}\n","import { IHandler, IPoint, ITransformModel, Point } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { GetPositionInFlowRequest } from './get-position-in-flow-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\n\n@Injectable()\n@FExecutionRegister(GetPositionInFlowRequest)\nexport class GetPositionInFlowExecution implements IExecution<GetPositionInFlowRequest, IPoint> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetPositionInFlowRequest): IPoint {\n return Point.fromPoint(request.position).elementTransform(this.flowHost)\n .sub(this.transform.scaledPosition).sub(this.transform.position).div(this.transform.scale);\n }\n}\n","export class GetSelectionRequest {\n\n}\n","import { GetSelectionRequest } from './get-selection.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\nimport { FDraggableDataContext, FSelectionChangeEvent } from '../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(GetSelectionRequest)\nexport class GetSelectionExecution implements IExecution<GetSelectionRequest, FSelectionChangeEvent> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(): FSelectionChangeEvent {\n\n let selectedNodes: string[] = [];\n let selectedConnections: string[] = [];\n\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n if (x.hostElement.classList.contains('f-node')) {\n selectedNodes.push(x.hostElement.dataset['fNodeId']!)\n } else {\n selectedConnections.push(x.hostElement.id);\n }\n });\n\n return new FSelectionChangeEvent(selectedNodes, selectedConnections);\n }\n}\n","import { IHandler, IRect, ITransformModel } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../infrastructure';\nimport { IsConnectionUnderNodeRequest } from './is-connection-under-node.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext, NodeDragHandler } from '../../f-draggable';\nimport { FNodeBase } from '../../f-node';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FConnectionBase } from '../../f-connection';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(IsConnectionUnderNodeRequest)\nexport class IsConnectionUnderNodeExecution implements IExecution<IsConnectionUnderNodeRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator,\n // private getOutgoingConnectionsHandler: GetOutgoingConnectionsHandler,\n // private getIncomingConnectionsHandler: GetIncomingConnectionsHandler\n ) {\n }\n\n public handle(): void {\n\n const isValid = this.isValidRequest();\n if (!isValid) {\n return;\n }\n\n const fNode = (this.fDraggableDataContext.draggableItems[ 0 ] as NodeDragHandler).fNode;\n\n const outputsOfNode = this.getOutputsForNode(fNode);\n const inputsOfNode = this.getInputsForNode(fNode);\n\n const isCantBeConnectedByOutput = outputsOfNode.some((x) => !x.canBeConnected);\n\n const isCantBeConnectedByInput = this.fComponentsStore.fConnections.some((x) => {\n return inputsOfNode.find((input) => input.id === x.fInputId);\n });\n\n if (!isCantBeConnectedByInput && outputsOfNode.length && !isCantBeConnectedByOutput && inputsOfNode.length) {\n const output = outputsOfNode[ 0 ];\n const input = inputsOfNode[ 0 ];\n // const outgoingConnections = this.getOutgoingConnectionsHandler.handle([ output ]);\n // const incomingConnections = this.getIncomingConnectionsHandler.handle([ input ]);\n // if (outgoingConnections.length === 0 && incomingConnections.length === 0) {\n // const connections = this.findConnectionsUnderNode(fNode);\n // if (connections.length) {\n // //TODO: need to implement\n // }\n // }\n }\n }\n\n private isValidRequest(): boolean {\n const result =\n this.fDraggableDataContext.draggableItems.length === 1 &&\n this.fDraggableDataContext.draggableItems[ 0 ] instanceof NodeDragHandler;\n\n return result;\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private findConnectionsUnderNode(node: FNodeBase): FConnectionBase[] {\n const nodeRect = this.fMediator.send<IRect>(new GetElementRectInFlowRequest(node.hostElement));\n return this.fComponentsStore.fConnections.filter((x) => {\n // const intersection = [];// RectExtensions.intersectionWithVector(nodeRect, x.line.point1, x.line.point2, 0, 0, 0, 0);\n return ([]).length > 0\n });\n }\n}\n// @Injectable()\n// export class GetIncomingConnectionsHandler implements IHandler<FConnectorBase[], FConnectionBase[]> {\n//\n// private get fConnections(): FConnectionBase[] {\n// return this.fComponentsStore.fConnections;\n// }\n//\n// constructor(\n// private fComponentsStore: FComponentsStore,\n// ) {\n// }\n//\n// public handle(inputs: FConnectorBase[]): FConnectionBase[] {\n// const inputsIds = inputs.map((x) => x.id);\n// return this.fConnections.filter((x) => {\n// return inputsIds.includes(x.fInputId);\n// })!;\n// }\n// }\n// @Injectable()\n// export class GetOutgoingConnectionsHandler implements IHandler<FConnectorBase[], FConnectionBase[]> {\n//\n// private get fConnections(): FConnectionBase[] {\n// return this.fComponentsStore.fConnections;\n// }\n//\n// constructor(\n// private fComponentsStore: FComponentsStore,\n// ) {\n// }\n//\n// public handle(outputs: FConnectorBase[]): FConnectionBase[] {\n// const outputsIds = outputs.map((x) => x.id);\n// return this.fConnections.filter((x) => {\n// return outputsIds.includes(x.fOutputId);\n// })!;\n// }\n// }\n","export class RedrawConnectionsRequest {\n}\n","import { ILine } from '@foblex/core';\nimport { Injectable } from '@angular/core';\nimport { RedrawConnectionsRequest } from './redraw-connections-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetConnectionLineRequest } from '../get-connection-line';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FConnectionBase } from '../../f-connection';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../infrastructure';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\nimport { CreateConnectionMarkersRequest } from '../create-connection-markers';\nimport { IConnectorShape } from '../intersections';\n\n@Injectable()\n@FExecutionRegister(RedrawConnectionsRequest)\nexport class RedrawConnectionsExecution implements IExecution<RedrawConnectionsRequest, void> {\n\n constructor(\n private readonly fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n ) {\n }\n\n public handle(request: RedrawConnectionsRequest): void {\n this.resetConnectors();\n\n if (this.fComponentsStore.fTempConnection) {\n this.setMarkers(this.fComponentsStore.fTempConnection);\n }\n\n this.fComponentsStore.fConnections.forEach((connection) => {\n const output = this.fComponentsStore.fOutputs.find((x) => x.id === connection.fOutputId);\n const input = this.fComponentsStore.fInputs.find((x) => x.id === connection.fInputId);\n if (output && input) {\n this.setupConnection(output, input, connection);\n }\n });\n }\n\n private resetConnectors(): void {\n this.fComponentsStore.fOutputs.forEach((output) => output.setConnected(false));\n this.fComponentsStore.fInputs.forEach((input) => input.setConnected(false));\n }\n\n private setupConnection(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): void {\n output.setConnected(true);\n input.setConnected(true);\n\n const line = this.getLine(output, input, connection);\n\n this.setMarkers(connection);\n\n connection.setLine(line.point1, output.fConnectableSide, line.point2, input.fConnectableSide);\n\n connection.initialize();\n connection.isSelected() ? connection.select() : null;\n }\n\n private getLine(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): ILine {\n const outputRect = this.fMediator.send<IConnectorShape>(new GetElementRectInFlowRequest(output.hostElement));\n const inputRect = this.fMediator.send<IConnectorShape>(new GetElementRectInFlowRequest(input.hostElement));\n return this.fMediator.send(new GetConnectionLineRequest(\n outputRect,\n inputRect,\n connection.fBehavior,\n output.fConnectableSide,\n input.fConnectableSide\n )\n );\n }\n\n private setMarkers(connection: FConnectionBase): void {\n this.fMediator.send(\n new CreateConnectionMarkersRequest(connection)\n );\n }\n}\n","export class SelectRequest {\n\n constructor(\n public nodes: string[],\n public connections: string[]\n ) {\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { SelectRequest } from './select.request';\nimport { Injectable } from '@angular/core';\nimport { FDraggableDataContext } from '../../f-draggable';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\n\n@Injectable()\n@FExecutionRegister(SelectRequest)\nexport class SelectExecution implements IExecution<SelectRequest, void> {\n\n constructor(\n private fDataContext: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n });\n this.fDraggableDataContext.selectedItems = [];\n\n request.nodes.forEach((key) => {\n const node = this.fDataContext.fNodes.find((x) => x.fId === key);\n if(node) {\n node.select();\n this.fDraggableDataContext.selectedItems.push(node);\n }\n });\n\n request.connections.forEach((key) => {\n const connection = this.fDataContext.fConnections.find((x) => x.fId === key);\n if(connection) {\n connection.select();\n this.fDraggableDataContext.selectedItems.push(connection);\n }\n });\n\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class SelectAllRequest {\n\n}\n","import { SelectAllRequest } from './select-all.request';\nimport { Injectable } from '@angular/core';\nimport { FDraggableDataContext } from '../../f-draggable';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\n\n@Injectable()\n@FExecutionRegister(SelectAllRequest)\nexport class SelectAllExecution implements IExecution<SelectAllRequest, void> {\n\n constructor(\n private fDataContext: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectAllRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n });\n this.fDraggableDataContext.selectedItems = [];\n this.fDataContext.fNodes.forEach((x) => {\n x.select();\n this.fDraggableDataContext.selectedItems.push(x);\n });\n this.fDataContext.fConnections.forEach((x) => {\n x.select();\n this.fDraggableDataContext.selectedItems.push(x);\n });\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","import { FNodeBase } from '../../f-node';\n\nexport class SelectAndUpdateNodeLayerRequest {\n\n constructor(\n public node: FNodeBase\n ) {\n }\n}\n","export class MoveFrontElementsBeforeTargetElementRequest {\n\n constructor(\n public fItemsContainer: HTMLElement, // fGroupsContainer || fNodesContainer || fConnectionsContainer\n public allElements: Element[],\n public elementsThatShouldBeInFront: Element[],\n public targetIndex: number\n ) {\n }\n}\n","import { MoveFrontElementsBeforeTargetElementRequest } from './move-front-elements-before-target-element.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '../../../infrastructure';\n\n@Injectable()\n@FExecutionRegister(MoveFrontElementsBeforeTargetElementRequest)\nexport class MoveFrontElementsBeforeTargetElementExecution implements IExecution<MoveFrontElementsBeforeTargetElementRequest, void> {\n\n public handle(request: MoveFrontElementsBeforeTargetElementRequest): void {\n const elementsToMove: Element[] = [];\n for (let i = request.targetIndex + 1; i < request.allElements.length; i++) {\n const element = request.allElements[ i ];\n if (!request.elementsThatShouldBeInFront.includes(element)) {\n elementsToMove.push(element);\n }\n }\n elementsToMove.forEach((x) => {\n request.fItemsContainer.removeChild(x);\n request.fItemsContainer.insertBefore(x, request.allElements[ request.targetIndex ]);\n });\n }\n}\n","import { ISelectable } from '../../f-connection';\nexport class UpdateItemAndChildrenLayersRequest {\n\n constructor(\n public item: ISelectable,\n public itemContainer: HTMLElement,\n ) {\n }\n}\n","import { UpdateItemAndChildrenLayersRequest } from './update-item-and-children-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../infrastructure';\nimport { FComponentsStore } from '../../f-storage';\nimport { FNodeBase } from '../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../get-deep-children-nodes-and-groups';\nimport { MoveFrontElementsBeforeTargetElementRequest } from './move-front-elements-before-target-element';\n\n@Injectable()\n@FExecutionRegister(UpdateItemAndChildrenLayersRequest)\nexport class UpdateItemAndChildrenLayersExecution implements IExecution<UpdateItemAndChildrenLayersRequest, void> {\n\n private get fGroupsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement;\n }\n\n private get fNodesContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement;\n }\n\n private get fConnectionsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fConnectionsContainer.nativeElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator\n ) {\n }\n\n public handle(request: UpdateItemAndChildrenLayersRequest): void {\n\n switch (request.itemContainer) {\n case this.fGroupsContainer:\n this.handleGroup(request);\n break;\n case this.fNodesContainer:\n this.handleNode(request);\n break;\n case this.fConnectionsContainer:\n this.handleConnection(request);\n break;\n default:\n throw new Error('Unknown container');\n }\n }\n\n private handleGroup(request: UpdateItemAndChildrenLayersRequest): void {\n const childrenNodesAndGroups = this.getChildrenNodesAndGroups(request.item.fId);\n const childrenGroups = this.getChildrenGroups(childrenNodesAndGroups);\n this.updateLayers(this.fGroupsContainer, request.item.hostElement as HTMLElement, childrenGroups);\n const childrenNodes = this.getChildrenNodes(childrenNodesAndGroups);\n if (childrenNodes.length) {\n this.updateLayers(this.fNodesContainer, childrenNodes[ 0 ], childrenNodes);\n }\n }\n\n private handleNode(request: UpdateItemAndChildrenLayersRequest): void {\n const childrenNodesAndGroups = this.getChildrenNodesAndGroups(request.item.fId);\n const childrenNodes = this.getChildrenNodes(childrenNodesAndGroups);\n this.updateLayers(request.itemContainer, request.item.hostElement as HTMLElement, childrenNodes);\n }\n\n private handleConnection(request: UpdateItemAndChildrenLayersRequest): void {\n this.updateLayers(request.itemContainer, request.item.hostElement as HTMLElement, []);\n }\n\n private updateLayers(itemContainer: HTMLElement, item: HTMLElement, elementsThatShouldBeInFront: HTMLElement[]): void {\n const allElements = Array.from(itemContainer.children) as HTMLElement[];\n const targetIndex = allElements.findIndex((x) => x === item);\n if (this.isAnythingNeedToBeMoved(allElements, targetIndex, elementsThatShouldBeInFront)) {\n this.fMediator.send(\n new MoveFrontElementsBeforeTargetElementRequest(itemContainer, allElements, elementsThatShouldBeInFront, targetIndex)\n );\n }\n }\n\n private isAnythingNeedToBeMoved(allElements: HTMLElement[], targetIndex: number, elementsThatShouldBeInFront: HTMLElement[]): boolean {\n for (let i = targetIndex + 1; i < allElements.length; i++) {\n if (!elementsThatShouldBeInFront.includes(allElements[ i ])) {\n return true;\n }\n }\n return false;\n }\n\n private getChildrenGroups(elements: HTMLElement[]): HTMLElement[] {\n const allElements = Array.from(this.fGroupsContainer.children) as HTMLElement[];\n return elements.filter((x) => this.fGroupsContainer.contains(x))\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodes(elements: HTMLElement[]): HTMLElement[] {\n const allElements = Array.from(this.fNodesContainer.children) as HTMLElement[];\n return elements.filter((x) => this.fNodesContainer.contains(x))\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodesAndGroups(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId)).map((x) => x.hostElement);\n }\n}\n","import { IHandler } from '@foblex/core';\nimport { SelectAndUpdateNodeLayerRequest } from './select-and-update-node-layer.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator } from '../../infrastructure';\nimport { FNodeBase } from '../../f-node';\nimport { FDraggableDataContext } from '../../f-draggable';\nimport { UpdateItemAndChildrenLayersRequest } from '../update-item-and-children-layers';\n\n@Injectable()\n@FExecutionRegister(SelectAndUpdateNodeLayerRequest)\nexport class SelectAndUpdateNodeLayerExecution implements IHandler<SelectAndUpdateNodeLayerRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator\n ) {\n }\n public handle(request: SelectAndUpdateNodeLayerRequest): void {\n this.selectNodeIfNotSelected(request.node);\n\n this.fMediator.send<void>(\n new UpdateItemAndChildrenLayersRequest(request.node, request.node.hostElement.parentElement as HTMLElement)\n );\n }\n\n private selectNodeIfNotSelected(node: FNodeBase) {\n if (!this.fDraggableDataContext.selectedItems.includes(node) && !node.fSelectionDisabled) {\n this.fDraggableDataContext.selectedItems.push(node);\n node.select();\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","export class SortNodeLayersRequest {\n\n}\n","import { SortNodeLayersRequest } from './sort-node-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../get-deep-children-nodes-and-groups';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(SortNodeLayersRequest)\nexport class SortNodeLayersExecution implements IExecution<SortNodeLayersRequest, void> {\n\n private get fGroupsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement;\n }\n\n private get fNodesContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement;\n }\n\n private get fNodesContainerElements(): HTMLElement[] {\n return Array.from(this.fNodesContainer.children) as HTMLElement[];\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n private fBrowser: BrowserService,\n ) {\n }\n\n public handle(request: SortNodeLayersRequest): void {\n this.getGroups().forEach((parent: FNodeBase) => {\n this.moveChildrenNodes(this.getSortedChildrenNodes(parent));\n });\n }\n\n private getGroups(): FNodeBase[] {\n return this.fComponentsStore.fNodes.filter((x) => this.fGroupsContainer.contains(x.hostElement));\n }\n\n private getSortedChildrenNodes(\n parent: FNodeBase,\n ): HTMLElement[] {\n const allElements = this.fNodesContainerElements;\n return this.getChildrenNodes(parent.fId)\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodes(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId))\n .filter((x) => this.fNodesContainer.contains(x.hostElement)).map((x) => x.hostElement);\n }\n\n private moveChildrenNodes(\n sortedChildrenGroups: HTMLElement[],\n ): void {\n const fragment = this.fBrowser.document.createDocumentFragment();\n sortedChildrenGroups.forEach((childGroup: HTMLElement) => {\n fragment.appendChild(childGroup); // Append automatically removes the element from its current position\n });\n this.fNodesContainer.appendChild(fragment);\n }\n}\n","export class SortItemsByParentRequest {\n\n constructor(\n public fItemsContainer: HTMLElement // fGroupsContainer || fNodesContainer\n ) {\n }\n}\n","import { SortItemsByParentRequest } from './sort-items-by-parent.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../../infrastructure';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../get-deep-children-nodes-and-groups';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(SortItemsByParentRequest)\nexport class SortItemsByParentExecution implements IExecution<SortItemsByParentRequest, void> {\n\n private fItemsContainer!: HTMLElement;\n\n private get fItemsFromContainer(): HTMLElement[] {\n return Array.from(this.fItemsContainer.children) as HTMLElement[];\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: SortItemsByParentRequest): void {\n this.fItemsContainer = request.fItemsContainer;\n this.getItems().forEach((parent: FNodeBase) => {\n this.moveChildrenItems(this.getSortedChildrenItems(parent), parent);\n });\n }\n\n private getItems(): FNodeBase[] {\n return this.fComponentsStore.fNodes.filter((x) => this.fItemsContainer.contains(x.hostElement));\n }\n\n private getSortedChildrenItems(\n parent: FNodeBase,\n ): HTMLElement[] {\n const allElements = this.fItemsFromContainer;\n const parentIndex = allElements.indexOf(parent.hostElement);\n return this.getChildrenGroups(parent.fId)\n .filter((child: HTMLElement) => allElements.indexOf(child) < parentIndex)\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenGroups(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId))\n .filter((x) => this.fItemsContainer.contains(x.hostElement)).map((x) => x.hostElement);\n }\n\n private moveChildrenItems(\n sortedChildrenItems: HTMLElement[],\n parent: FNodeBase,\n ): void {\n let nextSibling = parent.hostElement.nextElementSibling;\n\n const fragment = this.fBrowser.document.createDocumentFragment();\n\n sortedChildrenItems.forEach((child: HTMLElement) => {\n fragment.appendChild(child); // Append automatically removes the element from its current position\n });\n this.fItemsContainer.insertBefore(fragment, nextSibling);\n }\n}\n","export class SortItemLayersRequest {\n\n}\n","import { SortItemLayersRequest } from './sort-item-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FFlowMediator, IExecution } from '../../infrastructure';\nimport { SortNodeLayersRequest } from './sort-node-layers-by-groups';\nimport { SortItemsByParentRequest } from './sort-items-by-parent';\nimport { FComponentsStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(SortItemLayersRequest)\nexport class SortItemLayersExecution implements IExecution<SortItemLayersRequest, void> {\n\n constructor(\n private fMediator: FFlowMediator,\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: SortItemLayersRequest): void {\n this.fMediator.send(new SortItemsByParentRequest(this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement));\n this.fMediator.send(new SortNodeLayersRequest());\n this.fMediator.send(new SortItemsByParentRequest(this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement));\n }\n}\n","export class SubscribeOnTransformChangesRequest {\n\n}\n","import { SubscribeOnTransformChangesRequest } from './subscribe-on-transform-changes.request';\nimport { Injectable } from '@angular/core';\nimport { merge, Observable } from 'rxjs';\nimport { FComponentsStore, FTransformStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '../../infrastructure';\n\n@Injectable()\n@FExecutionRegister(SubscribeOnTransformChangesRequest)\nexport class SubscribeOnTransformChangesExecution\n implements IExecution<SubscribeOnTransformChangesRequest, Observable<void>> {\n\n constructor(\n private fTransformStore: FTransformStore,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: SubscribeOnTransformChangesRequest): Observable<void> {\n return merge(\n this.fTransformStore.changes,\n this.fComponentsStore.componentsData$,\n this.fComponentsStore.componentsCount$\n );\n }\n}\n","export function castToEnum<T>(value: any, varname: string, enm: any): T {\n const result = enm[ value.toUpperCase() as keyof typeof enm ]\n || getKeyByValue(enm, value.toLowerCase());\n if (result === undefined) {\n throw new Error(`Unknown ${ varname }: ${ value }. Accepted values: ${ Object.keys(enm).join(', ') }`);\n }\n return result;\n}\n\nfunction getKeyByValue(object: any, value: any) {\n return Object.keys(object).find(key => object[ key ] === value);\n}\n","import { BrowserService } from '@foblex/platform';\n\nexport function createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","export function deepCloneNode<T extends (HTMLElement | SVGElement)>(node: T): T {\n const clone = node.cloneNode(true) as T;\n const descendantsWithId = clone.querySelectorAll('[id]');\n const nodeName = node.nodeName.toLowerCase();\n\n clone.removeAttribute('id');\n\n for (let i = 0; i < descendantsWithId.length; i++) {\n descendantsWithId[ i ].removeAttribute('id');\n }\n\n if (nodeName === 'canvas') {\n transferCanvasData(node as HTMLCanvasElement, clone as HTMLCanvasElement);\n } else if (nodeName === 'input' || nodeName === 'select' || nodeName === 'textarea') {\n transferInputData(node as HTMLInputElement, clone as HTMLInputElement);\n }\n\n transferData('canvas', node, clone, transferCanvasData);\n transferData('input, textarea, select', node, clone, transferInputData);\n return clone;\n}\n\nfunction transferData<T extends Element>(\n selector: string,\n node: HTMLElement | SVGElement,\n clone: HTMLElement | SVGElement,\n callback: (source: T, clone: T) => void,\n) {\n const descendantElements = node.querySelectorAll<T>(selector);\n\n if (descendantElements.length) {\n const cloneElements = clone.querySelectorAll<T>(selector);\n\n for (let i = 0; i < descendantElements.length; i++) {\n callback(descendantElements[ i ], cloneElements[ i ]);\n }\n }\n}\n\nlet cloneUniqueId = 0;\n\nfunction transferInputData(\n source: Element & { value: string },\n clone: Element & { value: string; name: string; type: string },\n) {\n if (clone.type !== 'file') {\n clone.value = source.value;\n }\n\n if (clone.type === 'radio' && clone.name) {\n clone.name = `mat-clone-${ clone.name }-${ cloneUniqueId++ }`;\n }\n}\n\nfunction transferCanvasData(source: HTMLCanvasElement, clone: HTMLCanvasElement) {\n const context = clone.getContext('2d');\n\n if (context) {\n try {\n context.drawImage(source, 0, 0);\n } catch {\n }\n }\n}\n","export function getValueFromDataAttr<T>(element: HTMLElement, attr: string, cls: string): T {\n return getClosestTarget(element, cls).dataset[attr] as T;\n}\n\nfunction getClosestTarget(element: HTMLElement | SVGElement, cls: string): HTMLElement {\n return element.closest(cls) as HTMLElement;\n}\n","export function isElementWithClass(element: HTMLElement | SVGElement, cls: string): boolean {\n const target = getClosestDragHandle(element, cls);\n return !!target && !target.classList.contains(cls + '-disabled');\n}\n\nfunction getClosestDragHandle(element: HTMLElement | SVGElement, cls: string): HTMLElement {\n return element.closest(cls) as HTMLElement;\n}\n","import { GetConnectionLineExecution } from './get-connection-line';\nimport { RedrawConnectionsExecution } from './redraw-connections';\nimport { GetOutputRectInFlowExecution } from './get-output-rect-in-flow';\nimport { GetSelectionExecution } from './get-selection';\nimport { SelectAllExecution } from './select-all';\nimport { ClearSelectionExecution } from './clear-selection';\nimport { GetNodesRectExecution } from './get-nodes-rect';\nimport { GetElementRectInFlowExecution } from './get-element-rect-in-flow';\nimport { GetInputRectInFlowExecution } from './get-input-rect-in-flow';\nimport { SelectExecution } from './select';\nimport {\n MoveFrontElementsBeforeTargetElementExecution,\n UpdateItemAndChildrenLayersExecution\n} from './update-item-and-children-layers';\nimport { GetPositionInFlowExecution } from './get-position-in-flow';\nimport { CreateConnectionMarkersExecution } from './create-connection-markers';\nimport { GetCanBeSelectedItemsExecution } from './get-can-be-selected-items';\nimport { IsConnectionUnderNodeExecution } from './is-connection-under-node';\nimport { SelectAndUpdateNodeLayerExecution } from './select-and-update-node-layer';\nimport { GetScaledNodeRectsWithFlowPositionExecution } from './get-scaled-node-rects-with-flow-position';\nimport { EmitTransformChangesExecution } from './emit-transform-changes';\nimport { SubscribeOnTransformChangesExecution } from './subscribe-on-transform-changes';\nimport { SortItemLayersExecution, SortItemsByParentExecution, SortNodeLayersExecution } from './sort-item-layers';\nimport { GetDeepChildrenNodesAndGroupsExecution } from './get-deep-children-nodes-and-groups';\n\nexport const COMMON_PROVIDERS = [\n\n ClearSelectionExecution,\n\n CreateConnectionMarkersExecution,\n\n EmitTransformChangesExecution,\n\n GetCanBeSelectedItemsExecution,\n\n GetDeepChildrenNodesAndGroupsExecution,\n\n GetConnectionLineExecution,\n\n GetElementRectInFlowExecution,\n\n GetScaledNodeRectsWithFlowPositionExecution,\n\n GetNodesRectExecution,\n\n GetOutputRectInFlowExecution,\n\n GetPositionInFlowExecution,\n\n GetSelectionExecution,\n\n IsConnectionUnderNodeExecution,\n\n RedrawConnectionsExecution,\n\n SelectExecution,\n\n SelectAllExecution,\n\n SelectAndUpdateNodeLayerExecution,\n\n SortItemLayersExecution,\n\n SortItemsByParentExecution,\n\n SortNodeLayersExecution,\n\n SubscribeOnTransformChangesExecution,\n\n UpdateItemAndChildrenLayersExecution,\n\n MoveFrontElementsBeforeTargetElementExecution,\n\n GetInputRectInFlowExecution,\n];\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef, Input, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport {\n IPoint, ISize, ITransformModel,\n PointExtensions, SizeExtensions, TransformModelExtensions\n} from '@foblex/core';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { startWith, Subject, Subscription } from 'rxjs';\nimport { createSVGElement } from '../../domain';\nimport { BrowserService } from '@foblex/platform';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-rect-pattern\",\n template: ``,\n host: {\n '[attr.id]': 'id'\n },\n providers: [\n { provide: F_BACKGROUND_PATTERN, useExisting: FRectPatternComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FRectPatternComponent implements OnInit, OnDestroy, IFBackgroundPattern {\n\n private _subscription$: Subscription = new Subscription();\n\n private _stateChanges: Subject<void> = new Subject<void>();\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n private _vColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set vColor(value: string) {\n this._vColor = value;\n this._stateChanges.next();\n }\n\n private _hColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set hColor(value: string) {\n this._vColor = value;\n this._stateChanges.next();\n }\n\n private _vSize: number = 20;\n\n @Input()\n public set vSize(value: number) {\n this._vSize = value;\n this._stateChanges.next();\n }\n\n private _hSize: number = 20;\n\n @Input()\n public set hSize(value: number) {\n this._hSize = value;\n this._stateChanges.next();\n }\n\n private _transform: ITransformModel = TransformModelExtensions.default();\n\n private _position: IPoint = PointExtensions.initialize();\n\n private _size: ISize = SizeExtensions.initialize(this._hSize, this._vSize);\n\n private _pattern!: SVGPatternElement;\n private _vLine!: SVGLineElement;\n private _hLine!: SVGLineElement;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fBrowser: BrowserService\n ) {\n this.createPattern();\n }\n\n private createPattern(): void {\n this._pattern = createSVGElement('pattern', this.fBrowser);\n this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');\n this.hostElement.appendChild(this._pattern);\n\n this._vLine = createSVGElement('line', this.fBrowser);\n this._pattern.appendChild(this._vLine);\n\n this._hLine = createSVGElement('line', this.fBrowser);\n this._pattern.appendChild(this._hLine);\n }\n\n public ngOnInit(): void {\n this._subscription$.add(this.subscribeToStateChanges());\n }\n\n private subscribeToStateChanges(): Subscription {\n return this._stateChanges.pipe(startWith(null)).subscribe(() => {\n this.redraw();\n });\n }\n\n private calculatePattern(): void {\n this._position.x = this._transform.position.x + this._transform.scaledPosition.x;\n this._position.y = this._transform.position.y + this._transform.scaledPosition.y;\n this._size = SizeExtensions.initialize(this._hSize * this._transform.scale, this._vSize * this._transform.scale);\n }\n\n private redraw(): void {\n this.calculatePattern();\n this.redrawPattern();\n\n this.redrawLine(this._vLine, this._vColor, this._size.width, 0, this._size.width, this._size.height);\n this.redrawLine(this._hLine, this._hColor, 0, this._size.height, this._size.width, this._size.height);\n }\n\n private redrawPattern(): void {\n this._pattern.setAttribute('x', `${ this._position.x }`);\n this._pattern.setAttribute('y', `${ this._position.y }`);\n this._pattern.setAttribute('width', `${ this._size.width }`);\n this._pattern.setAttribute('height', `${ this._size.height }`);\n }\n\n private redrawLine(line: SVGLineElement, color: string, x1: number, y1: number, x2: number, y2: number): void {\n line.setAttribute('stroke', `${ color }`);\n line.setAttribute('x1', `${ x1 }`);\n line.setAttribute('x2', `${ x2 }`);\n line.setAttribute('y1', `${ y1 }`);\n line.setAttribute('y2', `${ y2 }`);\n }\n\n public setTransform(transform: ITransformModel): void {\n this._transform = transform;\n this._stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this._subscription$.unsubscribe();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef, Input, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport {\n IPoint,\n ITransformModel,\n PointExtensions,\n TransformModelExtensions\n} from '@foblex/core';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { startWith, Subject, Subscription } from 'rxjs';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-circle-pattern\",\n template: ``,\n host: {\n '[attr.id]': 'id'\n },\n providers: [\n { provide: F_BACKGROUND_PATTERN, useExisting: FCirclePatternComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FCirclePatternComponent implements OnInit, OnDestroy, IFBackgroundPattern {\n\n private _subscription$: Subscription = new Subscription();\n\n private _stateChanges: Subject<void> = new Subject<void>();\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n\n private _color: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set color(value: string) {\n this._color = value;\n this._stateChanges.next();\n }\n\n private _radius: number = 20;\n private _scaledRadius: number = 20;\n\n @Input()\n public set radius(value: number) {\n this._radius = value;\n this._stateChanges.next();\n }\n\n private _transform: ITransformModel = TransformModelExtensions.default();\n\n private _position: IPoint = PointExtensions.initialize();\n\n private _pattern!: SVGPatternElement;\n private _circle!: SVGCircleElement;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fBrowser: BrowserService\n ) {\n this.createPattern();\n }\n\n private createPattern(): void {\n this._pattern = createSVGElement('pattern', this.fBrowser);\n this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');\n this.hostElement.appendChild(this._pattern);\n\n this._circle = createSVGElement('circle', this.fBrowser);\n this._pattern.appendChild(this._circle);\n }\n\n public ngOnInit(): void {\n this._subscription$.add(this.subscribeToStateChanges());\n }\n\n private subscribeToStateChanges(): Subscription {\n return this._stateChanges.pipe(startWith(null)).subscribe(() => {\n this.redraw();\n });\n }\n\n private calculatePattern(): void {\n this._position.x = this._transform.position.x + this._transform.scaledPosition.x;\n this._position.y = this._transform.position.y + this._transform.scaledPosition.y;\n this._scaledRadius = this._radius * this._transform.scale;\n }\n\n private redraw(): void {\n this.calculatePattern();\n this.redrawPattern();\n this.redrawElement();\n }\n\n private redrawPattern(): void {\n this._pattern.setAttribute('x', `${ this._position.x }`);\n this._pattern.setAttribute('y', `${ this._position.y }`);\n this._pattern.setAttribute('width', `${ this._scaledRadius }`);\n this._pattern.setAttribute('height', `${ this._scaledRadius }`);\n }\n\n private redrawElement(): void {\n this._circle.setAttribute('fill', this._color);\n this._circle.setAttribute('cx', `${ this._scaledRadius / 2 }`);\n this._circle.setAttribute('cy', `${ this._scaledRadius / 2 }`);\n this._circle.setAttribute('r', `${ this._scaledRadius / this._radius }`);\n }\n\n public setTransform(transform: ITransformModel): void {\n this._transform = transform;\n this._stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this._subscription$.unsubscribe();\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement, ITransformModel } from '@foblex/core';\n\nexport const F_BACKGROUND = new InjectionToken<FBackgroundBase>('F_BACKGROUND');\n\n@Directive()\nexport abstract class FBackgroundBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract isBackgroundElement(element: HTMLElement | SVGElement): boolean;\n\n public abstract setTransform(transform: ITransformModel): void;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ContentChild,\n ElementRef, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport { F_BACKGROUND, FBackgroundBase } from './f-background-base';\nimport { ITransformModel, TransformModelExtensions } from '@foblex/core';\nimport { F_BACKGROUND_PATTERN } from './domain';\nimport { FComponentsStore } from '../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../domain';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-background\",\n templateUrl: \"./f-background.component.html\",\n styleUrls: [ \"./f-background.component.scss\" ],\n host: {\n 'class': 'f-component f-background'\n },\n providers: [ { provide: F_BACKGROUND, useExisting: FBackgroundComponent } ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FBackgroundComponent extends FBackgroundBase implements OnInit, AfterContentInit, OnDestroy {\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @ContentChild(F_BACKGROUND_PATTERN, { static: false })\n public fBackgroundPattern: FBackgroundBase | undefined;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fBackground = this;\n }\n\n public ngAfterContentInit(): void {\n const children = this.fBackgroundPattern?.hostElement.getElementsByTagName('pattern') || [];\n const pattern = children.length ? children[ 0 ] : undefined;\n if (pattern) {\n const defs = createSVGElement('defs', this.fBrowser);\n pattern.id = 'f-background-marker-' + uniqueId++;\n this.fBackgroundPattern?.hostElement.remove();\n defs.appendChild(pattern);\n this.hostElement?.firstChild?.appendChild(defs);\n const rect = createSVGElement('rect', this.fBrowser);\n rect.setAttribute('fill', 'url(#' + pattern.id + ')');\n rect.setAttribute('width', '100%');\n rect.setAttribute('height', '100%');\n this.hostElement.firstChild?.appendChild(rect);\n const transform = this.fComponentsStore.fCanvas?.transform || TransformModelExtensions.default();\n this.fBackgroundPattern?.setTransform(transform);\n }\n }\n\n public override isBackgroundElement(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setTransform(transform: ITransformModel): void {\n this.fBackgroundPattern?.setTransform(transform);\n }\n\n public ngOnDestroy() {\n this.fComponentsStore.fBackground = undefined;\n }\n}\n","<svg><ng-content></ng-content></svg>\n","import { FBackgroundComponent } from './f-background.component';\nimport { FRectPatternComponent } from './f-rect-pattern';\nimport { FCirclePatternComponent } from './f-circle-pattern';\n\nexport const F_BACKGROUND_PROVIDERS = [\n\n FBackgroundComponent,\n\n FRectPatternComponent,\n\n FCirclePatternComponent\n];\n","import { IPoint } from '@foblex/core';\n\nexport class FCanvasChangeEvent {\n constructor(\n public readonly position: IPoint,\n public readonly scale: number,\n ) {\n }\n}\n","import {\n IHasHostElement,\n ITransformModel, PointExtensions,\n TransformModelExtensions,\n ICanChangePosition, ICanChangeZoom, ICanFitToParent, ICanOneToOneCentering,\n mixinChangePosition,\n mixinChangeZoom,\n mixinFitToParent,\n mixinOneToOneCentering, IPoint\n} from '@foblex/core';\nimport { Directive, ElementRef, EventEmitter, InjectionToken } from '@angular/core';\nimport { FCanvasChangeEvent } from './domain';\nimport { FNodeBase } from '../f-node';\n\nexport const F_CANVAS = new InjectionToken<FCanvasBase>('F_CANVAS');\n\nconst MIXIN_BASE = mixinChangePosition(\n mixinFitToParent(\n mixinOneToOneCentering(\n mixinChangeZoom(\n class {\n constructor(\n public transform: ITransformModel\n ) {\n }\n }))));\n\n@Directive()\nexport abstract class FCanvasBase\n extends MIXIN_BASE\n implements IHasHostElement, ICanChangePosition, ICanFitToParent, ICanOneToOneCentering, ICanChangeZoom {\n\n public abstract fCanvasChange: EventEmitter<FCanvasChangeEvent>;\n\n public abstract fNodes: FNodeBase[];\n\n public abstract hostElement: HTMLElement;\n\n public abstract fGroupsContainer: ElementRef<HTMLElement>;\n\n public abstract fNodesContainer: ElementRef<HTMLElement>;\n\n public abstract fConnectionsContainer: ElementRef<HTMLElement>;\n\n protected constructor() {\n super(TransformModelExtensions.default());\n }\n\n public abstract redraw(): void;\n\n public abstract redrawWithAnimation(): void;\n\n public completeDrag(): void {\n this.fCanvasChange.emit(\n new FCanvasChangeEvent(this.getCanvasPosition(), this.transform.scale)\n );\n }\n\n private getCanvasPosition(): IPoint {\n return PointExtensions.sum(this.transform.position, this.transform.scaledPosition);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild,\n} from \"@angular/core\";\nimport {\n FCanvasBase, F_CANVAS\n} from './f-canvas-base';\nimport { IPoint, IRect, Point, PointExtensions, RectExtensions, TransformModelExtensions } from '@foblex/core';\nimport { FCanvasChangeEvent } from './domain';\nimport { FComponentsStore } from '../f-storage';\nimport { FNodeBase } from '../f-node';\nimport { FFlowMediator } from '../infrastructure';\nimport { EmitTransformChangesRequest, GetNodesRectRequest } from '../domain';\n\n@Component({\n selector: 'f-canvas',\n templateUrl: './f-canvas.component.html',\n styleUrls: [ './f-canvas.component.scss' ],\n exportAs: 'fComponent',\n host: {\n 'class': 'f-component f-canvas',\n },\n providers: [ { provide: F_CANVAS, useExisting: FCanvasComponent } ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FCanvasComponent extends FCanvasBase implements OnInit {\n\n @Output()\n public override fCanvasChange: EventEmitter<FCanvasChangeEvent> = new EventEmitter<FCanvasChangeEvent>();\n\n @Input()\n public set position(value: IPoint | undefined) {\n if (!value) {\n return;\n }\n const position = PointExtensions.sum(this.transform.position, this.transform.scaledPosition);\n if (!PointExtensions.isEqual(position, value)) {\n this.transform.position = value;\n this.transform.scaledPosition = PointExtensions.initialize();\n this.redraw();\n }\n }\n\n @Input()\n public set scale(value: number | undefined) {\n if (!value) {\n return;\n }\n this.transform.scale = value;\n this.redraw();\n }\n\n public override get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @ViewChild('fGroupsContainer', { static: true })\n public override fGroupsContainer!: ElementRef<HTMLElement>;\n\n @ViewChild('fNodesContainer', { static: true })\n public override fNodesContainer!: ElementRef<HTMLElement>;\n\n @ViewChild('fConnectionsContainer', { static: true })\n public override fConnectionsContainer!: ElementRef<HTMLElement>;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FFlowMediator,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n this.fComponentsStore.fCanvas = this;\n }\n\n public override redraw(): void {\n this.fComponentsStore.fBackground?.setTransform(this.transform);\n this.hostElement.setAttribute(\"style\", `transform: ${ TransformModelExtensions.toString(this.transform) }`);\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public override redrawWithAnimation(): void {\n this.fComponentsStore.fBackground?.setTransform(this.transform);\n this.hostElement.setAttribute(\"style\", `transition: transform 0.15s ease-in-out; transform: ${ TransformModelExtensions.toString(this.transform) }`);\n setTimeout(() => {\n this.redraw();\n }, 150);\n }\n\n public fitToScreen(toCenter: IPoint = PointExtensions.initialize(), animated: boolean = true): void {\n const fNodesRect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n\n this.fitToParent(\n fNodesRect,\n RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement),\n this.fNodes.map((x) => {\n return Point.fromPoint(x.position)\n }),\n toCenter\n );\n animated ? this.redrawWithAnimation() : this.redraw();\n this.completeDrag();\n }\n\n public oneToOne(): void {\n const fNodesRect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n this.oneToOneCentering(\n fNodesRect,\n RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement),\n this.fNodes.map((x) => {\n return Point.fromPoint(x.position)\n })\n );\n this.redrawWithAnimation();\n this.completeDrag();\n }\n}\n","<ng-container>\n <div #fGroupsContainer>\n <ng-content select=\"[fGroup]\"></ng-content>\n </div>\n <div #fConnectionsContainer>\n <ng-content select=\"f-connection\"></ng-content>\n <ng-content select=\"f-connection-for-create\"></ng-content>\n </div>\n\n <div #fNodesContainer>\n <ng-content select=\"[fNode]\"></ng-content>\n </div>\n</ng-container>\n","import { FCanvasComponent } from './f-canvas.component';\n\nexport const F_CANVAS_PROVIDERS = [\n\n FCanvasComponent,\n];\n","import { ILineAlignmentRect } from './i-line-alignment-rect';\nimport { BrowserService } from '@foblex/platform';\n\nexport class LineElement {\n\n private readonly element: HTMLElement;\n\n constructor(\n fBrowser: BrowserService,\n private readonly hostElement: HTMLElement,\n ) {\n this.element = fBrowser.document.createElement('div');\n this.hostElement.appendChild(this.element);\n this.element.classList.add('f-line');\n }\n\n public hide(): void {\n this.element.style.display = 'none';\n }\n\n public show(): void {\n this.element.style.display = 'block'\n }\n\n public draw(object: Partial<ILineAlignmentRect>): void {\n this.element.style.position = 'absolute';\n Object.keys(object).forEach((key: string) => {\n // @ts-ignore\n this.element.style[ key ] = object[ key ] + 'px';\n });\n }\n}\n\n","import { ISize, ITransformModel } from '@foblex/core';\nimport { LineElement } from './line-element';\nimport { BrowserService } from '@foblex/platform';\n\nexport class LineService {\n\n private fHorizontalLine: LineElement;\n private fVerticalLine: LineElement;\n\n constructor(fBrowser: BrowserService, private hostElement: HTMLElement) {\n this.fHorizontalLine = new LineElement(fBrowser, this.hostElement);\n this.fVerticalLine = new LineElement(fBrowser, this.hostElement);\n this.fHorizontalLine.hide();\n this.fVerticalLine.hide();\n }\n\n public drawVerticalLine(x: number, size: ISize, transform: ITransformModel): void {\n this.fVerticalLine.show();\n this.fVerticalLine.draw({\n left: x * transform.scale + transform.position.x + transform.scaledPosition.x,\n top: 0,\n width: 1,\n height: size.height\n });\n }\n\n public drawHorizontalLine(y: number, size: ISize, transform: ITransformModel): void {\n this.fHorizontalLine.show();\n this.fHorizontalLine.draw({\n left: 0,\n top: y * transform.scale + transform.position.y + transform.scaledPosition.y,\n width: size.width,\n height: 1\n });\n }\n\n public hideVerticalLine(): void {\n this.fVerticalLine.hide();\n }\n\n public hideHorizontalLine(): void {\n this.fHorizontalLine.hide();\n }\n}\n","import { IRect } from '@foblex/core';\nimport { INearestCoordinateResult } from './i-nearest-coordinate-result';\n\n/**\n * A class to find the nearest coordinate.\n */\nexport class NearestCoordinateFinder {\n\n\n private elements: IRect[];\n private target: IRect;\n\n /**\n * Constructor to initialize the NearestCoordinateFinder.\n * @param elements - The array of IRect elements.\n * @param target - The target IRect element.\n * @param alignThreshold - The threshold to align the elements.\n */\n constructor(elements: IRect[], target: IRect, private alignThreshold: number = 10) {\n this.elements = elements;\n this.target = target;\n }\n\n /**\n * Finds the nearest coordinate on a specified axis.\n * @returns The nearest coordinate and its distance.\n */\n public findNearestCoordinateByX(): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of this.elements) {\n const distanceLeftLeft = this.target.x - element.x;\n const distanceLeftRight = this.target.x - (element.x + element.width);\n const distanceCenterCenter = this.target.gravityCenter.x - element.gravityCenter.x;\n const distanceRightLeft = (this.target.x + this.target.width) - element.x;\n const distanceRightRight = (this.target.x + this.target.width) - (element.x + element.width);\n\n if (\n Math.abs(distanceLeftLeft) <= this.alignThreshold ||\n Math.abs(distanceLeftRight) <= this.alignThreshold ||\n Math.abs(distanceCenterCenter) <= this.alignThreshold ||\n Math.abs(distanceRightLeft) <= this.alignThreshold ||\n Math.abs(distanceRightRight) <= this.alignThreshold\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.x;\n }\n if (Math.abs(distanceLeftLeft) < Math.abs(minDistance)) {\n minDistance = distanceLeftLeft;\n nearest = element.x;\n }\n if (Math.abs(distanceRightRight) < Math.abs(minDistance)) {\n minDistance = distanceRightRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceLeftRight) < Math.abs(minDistance)) {\n minDistance = distanceLeftRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceRightLeft) < Math.abs(minDistance)) {\n minDistance = distanceRightLeft;\n nearest = element.x;\n }\n }\n }\n return { value: nearest, distance: minDistance };\n }\n\n\n /**\n * Finds the nearest coordinate on a specified axis.\n * @returns The nearest coordinate and its distance.\n */\n public findNearestCoordinateByY(): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of this.elements) {\n const distanceTopTop = this.target.y - element.y;\n const distanceTopBottom = this.target.y - (element.y + element.height);\n const distanceCenterCenter = this.target.gravityCenter.y - element.gravityCenter.y;\n const distanceBottomTop = (this.target.y + this.target.height) - element.y;\n const distanceBottomBottom = (this.target.y + this.target.height) - (element.y + element.height);\n\n if (\n Math.abs(distanceTopTop) <= this.alignThreshold ||\n Math.abs(distanceTopBottom) <= this.alignThreshold ||\n Math.abs(distanceCenterCenter) <= this.alignThreshold ||\n Math.abs(distanceBottomTop) <= this.alignThreshold ||\n Math.abs(distanceBottomBottom) <= this.alignThreshold\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.y;\n }\n if (Math.abs(distanceTopTop) < Math.abs(minDistance)) {\n minDistance = distanceTopTop;\n nearest = element.y;\n }\n if (Math.abs(distanceBottomBottom) < Math.abs(minDistance)) {\n minDistance = distanceBottomBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceTopBottom) < Math.abs(minDistance)) {\n minDistance = distanceTopBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceBottomTop) < Math.abs(minDistance)) {\n minDistance = distanceBottomTop;\n nearest = element.y;\n }\n }\n }\n\n return { value: nearest, distance: minDistance };\n }\n}\n\n","import { IHasHostElement, IPoint } from '@foblex/core';\nimport { Directive, InjectionToken } from '@angular/core';\nimport { ILineAlignmentResult } from './domain';\nimport { FNodeBase } from '../f-node';\n\nexport const F_LINE_ALIGNMENT = new InjectionToken<FLineAlignmentBase>('F_LINE_ALIGNMENT');\n\n@Directive()\nexport abstract class FLineAlignmentBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void;\n\n public abstract findNearestCoordinate(difference: IPoint): ILineAlignmentResult;\n\n public abstract handle(difference: IPoint): void;\n\n public abstract complete(): void;\n}\n","import { Component, ElementRef, Input, OnInit } from '@angular/core';\nimport { IPoint, IRect, ISize, ITransformModel, RectExtensions, SizeExtensions } from '@foblex/core';\nimport { ILineAlignmentResult, LineService, NearestCoordinateFinder } from './domain';\nimport { F_LINE_ALIGNMENT, FLineAlignmentBase } from './f-line-alignment-base';\nimport { FComponentsStore } from '../f-storage';\nimport { FDraggableDataContext } from '../f-draggable';\nimport { FNodeBase } from '../f-node';\nimport { GetElementRectInFlowRequest } from '../domain';\nimport { FFlowMediator } from '../infrastructure';\nimport { BrowserService } from '@foblex/platform';\n\n@Component({\n selector: \"f-line-alignment\",\n template: \"\",\n styleUrls: [ \"./f-line-alignment.component.scss\" ],\n exportAs: \"fComponent\",\n host: {\n 'class': 'f-line-alignment f-component'\n },\n providers: [\n { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentComponent }\n ],\n})\nexport class FLineAlignmentComponent extends FLineAlignmentBase implements OnInit {\n\n @Input()\n public fAlignThreshold: number = 10;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n private lineService: LineService;\n\n private size: ISize = SizeExtensions.initialize();\n\n private draggedNodeRect: IRect = RectExtensions.initialize();\n\n private rects: IRect[] = [];\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FFlowMediator,\n fBrowser: BrowserService\n ) {\n super();\n this.lineService = new LineService(fBrowser, this.hostElement);\n }\n\n public ngOnInit(): void {\n this.fDraggableDataContext.fLineAlignment = this;\n }\n\n public override initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void {\n this.size = this.flowHost.getBoundingClientRect();\n this.rects = [];\n const draggedNodeRects = currentNodes.map((x) => {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement));\n });\n this.draggedNodeRect = RectExtensions.union(draggedNodeRects) || RectExtensions.initialize();\n\n const allNodesExcludeCurrents = allNodes.filter((x) => {\n return !currentNodes.includes(x);\n });\n\n this.rects = allNodesExcludeCurrents.map((x) => {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement));\n });\n }\n\n public override handle(difference: IPoint): void {\n this.drawIntersectingLines(difference);\n }\n\n private drawIntersectingLines(difference: IPoint): void {\n const intersect = this.findNearestCoordinate(difference);\n if (intersect.xResult.value !== undefined) {\n this.lineService.drawVerticalLine(intersect.xResult.value, this.size, this.transform);\n } else {\n this.lineService.hideVerticalLine();\n }\n if (intersect.yResult.value !== undefined) {\n this.lineService.drawHorizontalLine(intersect.yResult.value, this.size, this.transform);\n } else {\n this.lineService.hideHorizontalLine();\n }\n }\n\n public findNearestCoordinate(difference: IPoint): ILineAlignmentResult {\n const rect = RectExtensions.addPoint(this.draggedNodeRect, difference);\n const finder = new NearestCoordinateFinder(this.rects, rect, this.fAlignThreshold);\n\n return { xResult: finder.findNearestCoordinateByX(), yResult: finder.findNearestCoordinateByY() };\n }\n\n public override complete(): void {\n this.lineService.hideVerticalLine();\n this.lineService.hideHorizontalLine();\n }\n}\n","import { FLineAlignmentComponent } from './f-line-alignment.component';\n\nexport const F_LINE_ALIGNMENT_PROVIDERS = [\n FLineAlignmentComponent\n];\n","import { IRect, RectExtensions } from '@foblex/core';\n\nexport class FMinimapData {\n\n constructor(\n public element: SVGSVGElement,\n public scale: number = 1,\n public viewBox: IRect = RectExtensions.initialize(0, 0, 0, 0)\n ) {\n }\n}\n","import {\n Directive, ElementRef, Input,\n} from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport { IRect, ISize, RectExtensions, SizeExtensions } from '@foblex/core';\nimport { FFlowMediator } from '../infrastructure';\nimport { FMinimapData } from './domain';\nimport { GetNodesRectRequest } from '../domain';\n\n@Directive({\n selector: 'svg[fMinimapFlow]'\n})\nexport class FMinimapFlowDirective {\n\n public model: FMinimapData;\n\n @Input()\n public fMinSize: number = 1000;\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n public get hostElement(): SVGSVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGSVGElement>,\n private fMediator: FFlowMediator,\n private fComponentsStore: FComponentsStore\n ) {\n this.model = new FMinimapData(this.hostElement);\n }\n\n public update(): void {\n const nodesRect = this.getProcessedNodesRect();\n const minimapRect = this.getMinimapRect();\n\n const scale = this.calculateViewScale(nodesRect, minimapRect);\n const viewBox = this.calculateViewBox(nodesRect, minimapRect, scale);\n this.model = new FMinimapData(this.hostElement, scale, viewBox);\n this.setViewBox(viewBox);\n }\n\n private getProcessedNodesRect(): IRect {\n const normalizedRect = this.normalizeRect(this.getNodesRect());\n return this.ensureMinimumSize(normalizedRect);\n }\n\n private getNodesRect(): IRect {\n const rect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize(0, 0, 0, 0);\n return RectExtensions.elementTransform(rect, this.flowHost)\n }\n\n private getMinimapRect(): IRect {\n return RectExtensions.elementTransform(RectExtensions.fromElement(this.hostElement), this.flowHost);\n }\n\n private normalizeRect(rect: IRect): IRect {\n return RectExtensions.div(rect, this.fComponentsStore.transform.scale);\n }\n\n private ensureMinimumSize(rect: IRect): IRect {\n return RectExtensions.initialize(\n rect.x - (Math.max(rect.width, this.fMinSize) - rect.width) / 2,\n rect.y - (Math.max(rect.height, this.fMinSize) - rect.height) / 2,\n Math.max(rect.width, this.fMinSize),\n Math.max(rect.height, this.fMinSize)\n );\n }\n\n private calculateViewScale(nodesRect: IRect, minimapRect: IRect): number {\n return Math.max(nodesRect.width / minimapRect.width, nodesRect.height / minimapRect.height);\n }\n\n private calculateViewBox(nodesRect: IRect, minimapRect: IRect, scale: number): IRect {\n return this.calculateCenteredViewBox(nodesRect, this.calculateViewSize(minimapRect, scale));\n }\n\n private calculateViewSize(minimapRect: IRect, scale: number): ISize {\n return SizeExtensions.initialize(minimapRect.width * scale || 0, minimapRect.height * scale || 0);\n }\n\n private calculateCenteredViewBox(nodesRect: IRect, viewSize: ISize): IRect {\n const centeredX = nodesRect.x - (viewSize.width - nodesRect.width) / 2;\n const centeredY = nodesRect.y - (viewSize.height - nodesRect.height) / 2;\n return RectExtensions.initialize(centeredX, centeredY, viewSize.width, viewSize.height);\n }\n\n private setViewBox(viewBox: IRect): void {\n this.hostElement.setAttribute('viewBox', `${ viewBox.x } ${ viewBox.y } ${ viewBox.width } ${ viewBox.height }`);\n }\n}\n","import {\n Directive, ElementRef,\n} from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport {\n IRect,\n RectExtensions\n} from '@foblex/core';\nimport { FNodeBase, FNodeDirective } from '../f-node';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../domain';\n\n@Directive({\n selector: 'g[fMinimapCanvas]'\n})\nexport class FMinimapCanvasDirective {\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get flowScale(): number {\n return this.fComponentsStore.transform.scale;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n }\n\n public redraw(): void {\n this.clearCanvas();\n this.fComponentsStore.fNodes.forEach((x) => this.renderNode(x));\n }\n\n private clearCanvas(): void {\n this.hostElement.innerHTML = '';\n }\n\n private renderNode(node: FNodeBase): void {\n const element = createSVGElement('rect', this.fBrowser);\n this.configureNodeElement(element, node);\n this.hostElement.appendChild(element);\n }\n\n private configureNodeElement(element: SVGRectElement, node: FNodeBase): void {\n this.setElementAttributes(element, this.getNodeRect(node));\n this.applyClassList(element, node, node instanceof FNodeDirective);\n }\n\n private getNodeRect(node: FNodeBase): IRect {\n const nodeRectInFlow = RectExtensions.elementTransform(RectExtensions.fromElement(node.hostElement), this.flowHost);\n return RectExtensions.div(nodeRectInFlow, this.flowScale);\n }\n\n private setElementAttributes(element: SVGRectElement, rect: IRect): void {\n element.setAttribute('x', rect.x.toString());\n element.setAttribute('y', rect.y.toString());\n element.setAttribute('width', rect.width.toString());\n element.setAttribute('height', rect.height.toString());\n }\n\n private applyClassList(element: SVGRectElement, node: FNodeBase, isNode: boolean): void {\n element.classList.add('f-component', isNode ? 'f-minimap-node' : 'f-minimap-group');\n if (node.isSelected()) {\n element.classList.add('f-selected');\n }\n }\n}\n","import { Directive, ElementRef } from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport { IRect, RectExtensions } from '@foblex/core';\n\n@Directive({\n selector: 'rect[fMinimapView]',\n host: {\n 'class': 'f-component f-minimap-view',\n }\n})\nexport class FMinimapViewDirective {\n\n public get hostElement(): SVGRectElement {\n return this.elementReference.nativeElement;\n }\n\n private get flowScale(): number {\n return this.fComponentsStore!.transform!.scale!;\n }\n\n constructor(\n private elementReference: ElementRef<SVGRectElement>,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public update(): void {\n const viewBox = RectExtensions.div(RectExtensions.fromElement(this.fComponentsStore.flowHost), this.flowScale);\n this.setAttributes(viewBox);\n }\n\n private setAttributes(viewBox: IRect): void {\n this.hostElement.setAttribute('x', '0');\n this.hostElement.setAttribute('y', '0');\n this.hostElement.setAttribute('width', viewBox.width.toString());\n this.hostElement.setAttribute('height', viewBox.height.toString());\n }\n}\n","import {\n AfterViewInit, ChangeDetectionStrategy, Component,\n ElementRef, Input, OnDestroy, ViewChild,\n} from \"@angular/core\";\nimport { FFlowMediator } from '../infrastructure';\nimport { debounceTime, Observable, Subscription } from 'rxjs';\nimport { SubscribeOnTransformChangesRequest } from '../domain';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { IPointerEvent } from '@foblex/core';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { MinimapDragFinalizeRequest, MinimapDragPreparationRequest } from './domain';\n\n@Component({\n selector: 'f-minimap',\n templateUrl: './f-minimap.component.html',\n styleUrls: [ './f-minimap.component.scss' ],\n exportAs: 'fComponent',\n host: {\n 'class': 'f-component f-minimap',\n },\n providers: [\n { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FMinimapComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FMinimapComponent implements AfterViewInit, OnDestroy, IFDragAndDropPlugin {\n\n private subscriptions$: Subscription = new Subscription();\n\n @ViewChild(FMinimapCanvasDirective, { static: true })\n public fMinimapCanvas!: FMinimapCanvasDirective;\n\n @ViewChild(FMinimapFlowDirective, { static: true })\n public fMinimapFlow!: FMinimapFlowDirective;\n\n @ViewChild(FMinimapViewDirective, { static: true })\n public fMinimapView!: FMinimapViewDirective;\n\n @Input()\n public fMinSize: number = 1000;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FFlowMediator\n ) {\n }\n\n public ngAfterViewInit(): void {\n this.subscriptions$.add(this.subscribeOnTransformChanges());\n }\n\n private subscribeOnTransformChanges(): Subscription {\n return this.getTransformChanges().pipe(debounceTime(5)).subscribe(() => {\n this.fMinimapFlow.update();\n this.fMinimapView.update();\n this.fMinimapCanvas.redraw();\n });\n }\n\n private getTransformChanges(): Observable<void> {\n return this.fMediator.send<Observable<void>>(new SubscribeOnTransformChangesRequest());\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this.fMediator.send(new MinimapDragPreparationRequest(event, this.fMinimapFlow.model));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this.fMediator.send(new MinimapDragFinalizeRequest(event));\n }\n\n public ngOnDestroy(): void {\n this.subscriptions$.unsubscribe();\n }\n}\n","<svg fMinimapFlow width=\"100%\" height=\"100%\" fLockedContext [fMinSize]=\"fMinSize\">\n <g fMinimapCanvas></g>\n <rect fMinimapView x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" stroke=\"none\"/>\n</svg>\n\n","import { FMinimapComponent } from './f-minimap.component';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\n\nexport const F_MINIMAP_PROVIDERS = [\n\n FMinimapComponent,\n\n FMinimapCanvasDirective,\n\n FMinimapViewDirective,\n\n FMinimapFlowDirective,\n];\n","import { IHasHostElement, IRect } from '@foblex/core';\nimport { Directive } from '@angular/core';\n\n@Directive()\nexport abstract class FSelectionAreaBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract hide(): void;\n\n public abstract show(): void;\n\n public abstract draw(object: IRect): void;\n}\n","import { Component, ElementRef, OnInit } from '@angular/core';\nimport { FSelectionAreaBase } from './f-selection-area-base';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { IPointerEvent, IRect } from '@foblex/core';\nimport { FFlowMediator } from '../infrastructure';\nimport { SelectionAreaFinalizeRequest, SelectionAreaPreparationRequest } from './domain';\n\n@Component({\n selector: \"f-selection-area\",\n template: ``,\n styleUrls: [ './f-selection-area.component.scss' ],\n host: {\n 'class': 'f-selection-area f-component'\n },\n providers: [\n { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },\n ],\n})\nexport class FSelectionAreaComponent extends FSelectionAreaBase implements OnInit, IFDragAndDropPlugin {\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FFlowMediator\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.hostElement.style.display = 'none';\n }\n\n public override hide(): void {\n this.hostElement.style.display = 'none';\n }\n\n public override show(): void {\n this.hostElement.style.display = 'block';\n }\n\n public override draw(object: IRect): void {\n const style = this.hostElement.style;\n style.left = object.x + 'px';\n style.top = object.y + 'px';\n style.width = object.width + 'px';\n style.height = object.height + 'px';\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this.fMediator.send(new SelectionAreaPreparationRequest(event, this));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this.fMediator.send(new SelectionAreaFinalizeRequest(event));\n }\n}\n","import { FSelectionAreaComponent } from './f-selection-area.component';\n\nexport const F_SELECTION_AREA_PROVIDERS = [\n\n FSelectionAreaComponent\n];\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '@foblex/core';\n\nexport const F_FLOW = new InjectionToken<FFlowBase>('F_FLOW');\n\nexport abstract class FFlowBase implements IHasHostElement {\n\n public abstract fFlowId: string;\n\n public abstract hostElement: HTMLElement;\n\n public abstract fLoaded: EventEmitter<void>;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ElementRef, EventEmitter,\n Input, OnDestroy, OnInit, Output\n} from '@angular/core';\nimport { F_FLOW, FFlowBase } from './f-flow-base';\nimport { debounceTime, startWith, Subscription } from 'rxjs';\nimport {\n ClearSelectionRequest,\n COMMON_PROVIDERS, GetScaledNodeRectsWithFlowPositionRequest, GetPositionInFlowRequest,\n GetSelectionRequest,\n RedrawConnectionsRequest,\n SelectAllRequest, SelectRequest, SortItemLayersRequest,\n} from '../domain';\nimport { IPoint, IRect } from '@foblex/core';\nimport { FFlowMediator } from '../infrastructure';\nimport {\n F_DRAGGABLE_PROVIDERS,\n FDraggableDataContext, FSelectionChangeEvent\n} from '../f-draggable';\nimport { FConnectionFactory } from '../f-connection';\nimport { FComponentsStore, FTransformStore } from '../f-storage';\nimport { BrowserService } from '@foblex/platform';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: 'f-flow',\n templateUrl: './f-flow.component.html',\n styleUrls: [ './f-flow.component.scss' ],\n host: {\n '[attr.id]': 'fFlowId',\n class: \"f-component f-flow\",\n },\n providers: [\n FFlowMediator,\n FComponentsStore,\n FTransformStore,\n FDraggableDataContext,\n FConnectionFactory,\n ...F_DRAGGABLE_PROVIDERS,\n ...COMMON_PROVIDERS,\n { provide: F_FLOW, useExisting: FFlowComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FFlowComponent extends FFlowBase implements OnInit, AfterContentInit, OnDestroy {\n\n private subscription$: Subscription = new Subscription();\n\n @Input()\n public override fFlowId: string = `f-flow-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Output()\n public override fLoaded: EventEmitter<void> = new EventEmitter<void>();\n\n private isLoaded: boolean = false;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fMediator: FFlowMediator,\n private fBrowser: BrowserService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fFlow = this;\n }\n\n public ngAfterContentInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscription$.add(\n this.subscribeOnElementsChanges()\n );\n this.subscription$.add(\n this.subscribeOnComponentsCountChanges()\n );\n }\n\n private subscribeOnComponentsCountChanges(): Subscription {\n return this.fComponentsStore.componentsCount$.pipe(startWith(null), debounceTime(20)).subscribe(() => {\n this.fMediator.send(new SortItemLayersRequest());\n });\n }\n\n private subscribeOnElementsChanges(): Subscription {\n return this.fComponentsStore.componentsData$.pipe(startWith(null), debounceTime(20)).subscribe(() => {\n this.fMediator.send(new RedrawConnectionsRequest());\n\n if (!this.isLoaded) {\n this.isLoaded = true;\n setTimeout(() => {\n this.fLoaded.emit();\n })\n }\n });\n }\n\n public redraw(): void {\n this.fComponentsStore.componentDataChanged();\n }\n\n public reset(): void {\n this.isLoaded = false;\n }\n\n public getAllNodesRect(): IRect | null {\n return this.fMediator.send<IRect | null>(new GetScaledNodeRectsWithFlowPositionRequest());\n }\n\n public getSelection(): FSelectionChangeEvent {\n return this.fMediator.send<FSelectionChangeEvent>(new GetSelectionRequest());\n }\n\n public getPositionInFlow(position: IPoint): IRect {\n return this.fMediator.send(new GetPositionInFlowRequest(position));\n }\n\n public selectAll(): void {\n this.fMediator.send<void>(new SelectAllRequest());\n }\n\n public select(nodes: string[], connections: string[]): void {\n this.fMediator.send<void>(new SelectRequest(nodes, connections));\n }\n\n public clearSelection(): void {\n this.fMediator.send<void>(new ClearSelectionRequest());\n }\n\n public ngOnDestroy(): void {\n this.subscription$.unsubscribe();\n }\n}\n","<ng-container>\n <ng-content select=\"[fDefinitions]\"></ng-content>\n\n <ng-content select=\"f-background\"></ng-content>\n\n <ng-content select=\"f-line-alignment\"></ng-content>\n\n <ng-content select=\"f-canvas\"></ng-content>\n\n <ng-content select=\"f-selection-area\"></ng-content>\n\n <ng-content select=\"f-minimap\"></ng-content>\n</ng-container>\n","import { FFlowComponent } from './f-flow.component';\n\nexport const F_FLOW_PROVIDERS = [\n FFlowComponent\n];\n","import { EventExtensions, IPoint, Point, RectExtensions } from '@foblex/core';\nimport { InjectionToken } from '@angular/core';\nimport { FCanvasBase } from '../f-canvas';\nimport { FComponentsStore } from '../f-storage';\nimport { isNode } from '../f-node';\n\nexport const F_ZOOM = new InjectionToken<FZoomBase>('F_ZOOM');\n\nexport abstract class FZoomBase {\n\n protected isEnabled: boolean = false;\n\n public abstract minimum: number;\n public abstract maximum: number;\n\n public abstract step: number;\n public abstract dblClickStep: number;\n\n private listeners: Function = EventExtensions.emptyListener();\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get fCanvas(): FCanvasBase {\n return this.fComponentsStore.fCanvas as FCanvasBase;\n }\n\n protected constructor(\n protected fComponentsStore: FComponentsStore\n ) {\n }\n\n protected toggleZoom(): void {\n if (this.isEnabled) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n\n private subscribe(): void {\n this.listeners();\n if (!this.flowHost) {\n return;\n }\n\n this.flowHost.addEventListener('wheel', this.onWheel.bind(this));\n this.flowHost.addEventListener('dblclick', this.onDoubleClick.bind(this));\n this.listeners = () => {\n this.flowHost.removeEventListener('wheel', this.onWheel.bind(this));\n this.flowHost.removeEventListener('dblclick', this.onDoubleClick.bind(this));\n };\n }\n\n public getScale(): number {\n return this.fCanvas.transform.scale || 1;\n }\n\n private onWheel(event: WheelEvent): void {\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (this.fComponentsStore.fDraggable?.isDragStarted || targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n let result: number = this.getScale();\n\n const direction = event.deltaY > 0 ? -1 : 1;\n const step = this.step;\n result = result + step * direction;\n\n result = Math.max(this.minimum, Math.min(result, this.maximum));\n\n const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);\n\n this.fCanvas.setZoom(result, pointerPositionInFlow);\n this.fCanvas.redraw();\n this.fCanvas.completeDrag();\n }\n\n private onDoubleClick(event: MouseEvent): void {\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (this.fComponentsStore.fDraggable?.isDragStarted || isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n let result: number = this.getScale();\n\n const direction = 1;\n const step = this.dblClickStep;\n result = result + step * direction;\n\n result = Math.max(this.minimum, Math.min(result, this.maximum));\n\n const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);\n this.fCanvas.setZoom(result, pointerPositionInFlow);\n this.fCanvas.redrawWithAnimation();\n this.fCanvas.completeDrag();\n }\n\n private onZoomToCenter(deltaY: number, position?: IPoint): void {\n const preventDefault = () => {\n };\n const rect = RectExtensions.fromElement(this.flowHost);\n\n this.onWheel({\n deltaY, preventDefault, clientX: position?.x || rect.gravityCenter.x, clientY: position?.y || rect.gravityCenter.y\n } as WheelEvent);\n }\n\n public zoomIn(position?: IPoint): void {\n this.onZoomToCenter(-1, position);\n }\n\n public zoomOut(position?: IPoint): void {\n this.onZoomToCenter(1, position);\n }\n\n public reset(): void {\n this.fCanvas.resetZoom();\n this.fCanvas.redraw();\n this.fCanvas.completeDrag();\n }\n\n protected unsubscribe(): void {\n this.listeners();\n this.listeners = EventExtensions.emptyListener();\n }\n}\n","import {\n AfterViewInit,\n Directive, Input, OnDestroy\n} from \"@angular/core\";\nimport { BooleanExtensions } from '@foblex/core';\nimport { F_ZOOM, FZoomBase } from './f-zoom-base';\nimport { FComponentsStore } from '../f-storage';\n\n@Directive({\n selector: \"f-canvas[fZoom]\",\n exportAs: 'fComponent',\n host: {\n 'class': 'f-zoom f-component'\n },\n providers: [ { provide: F_ZOOM, useExisting: FZoomDirective } ],\n})\nexport class FZoomDirective extends FZoomBase implements AfterViewInit, OnDestroy {\n\n @Input('fZoom')\n public get fFlowZoom(): boolean {\n return this.isEnabled;\n }\n\n public set fFlowZoom(isEnabled: boolean | undefined | string) {\n const value = BooleanExtensions.castToBoolean(isEnabled);\n if (value !== this.isEnabled) {\n this.isEnabled = value;\n this.toggleZoom();\n }\n }\n\n @Input('fZoomMinimum')\n public override minimum: number = 0.1;\n\n @Input('fZoomMaximum')\n public override maximum: number = 4;\n\n @Input('fZoomStep')\n public override step: number = 0.1;\n\n @Input('fZoomDblClickStep')\n public override dblClickStep: number = 0.5;\n\n constructor(\n fComponentsStore: FComponentsStore,\n ) {\n super(fComponentsStore);\n }\n\n public ngAfterViewInit(): void {\n super.toggleZoom();\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n }\n}\n","import { FZoomDirective } from './f-zoom.directive';\n\nexport const F_ZOOM_PROVIDERS = [\n\n FZoomDirective\n];\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { F_CONNECTION_PROVIDERS, } from './f-connection';\nimport { F_NODE_PROVIDERS } from './f-node';\nimport { F_FLOW_PROVIDERS } from './f-flow';\nimport { F_BACKGROUND_PROVIDERS } from './f-backgroud';\nimport { F_CANVAS_PROVIDERS } from './f-canvas';\nimport { F_CONNECTORS_PROVIDERS } from './f-connectors';\nimport { FDraggableDirective } from './f-draggable';\nimport { F_EXTERNAL_ITEM_PROVIDERS } from './f-external-item';\nimport { F_SELECTION_AREA_PROVIDERS } from './f-selection-area';\nimport { F_LINE_ALIGNMENT_PROVIDERS } from './f-line-alignment';\nimport { F_MINIMAP_PROVIDERS } from './f-minimap';\nimport { F_ZOOM_PROVIDERS } from './f-zoom';\n\n@NgModule({\n declarations: [\n ...F_BACKGROUND_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n ...F_FLOW_PROVIDERS,\n ...F_LINE_ALIGNMENT_PROVIDERS,\n ...F_MINIMAP_PROVIDERS,\n ...F_NODE_PROVIDERS,\n ...F_SELECTION_AREA_PROVIDERS,\n\n FDraggableDirective,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n ...F_BACKGROUND_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n ...F_FLOW_PROVIDERS,\n ...F_LINE_ALIGNMENT_PROVIDERS,\n ...F_MINIMAP_PROVIDERS,\n ...F_NODE_PROVIDERS,\n ...F_SELECTION_AREA_PROVIDERS,\n\n FDraggableDirective,\n ]\n})\nexport class FFlowModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.FDraggableDataContext","i1.FComponentsStore","i2.FDraggableDataContext","sanitizeElementId","i1.FConnectionTextPathDirective","MIXIN_BASE","i1.FConnectionFactory","uniqueId","i2.FComponentsStore","i4.FConnectionTextComponent","i5.FConnectionDragHandleComponent","i6.FConnectionGradientComponent","i7.FConnectionPathComponent","i8.FConnectionSelectionComponent","i2.FFlowMediator","i3","i2","i3.FFlowMediator","i4","i1.FFlowMediator","i2.FConnectionBase","OFFSET","i3.FDraggableDataContext","i4.FFlowMediator","i3.FExternalItemService","i1.FExternalItemService","createSVGElement","i1.FTransformStore","i2.FMinimapCanvasDirective","i3.FMinimapViewDirective","i4.FMinimapFlowDirective","i1.FBackgroundComponent","i2.FRectPatternComponent","i3.FCirclePatternComponent","i4.FCanvasComponent","i5.FZoomDirective","i6.FConnectionTextComponent","i7.FConnectionTextPathDirective","i8.FConnectionDragHandleComponent","i9.FConnectionGradientComponent","i10.FConnectionPathComponent","i11.FConnectionSelectionComponent","i12.FConnectionComponent","i13.FConnectionCenterDirective","i14.FConnectionForCreateComponent","i15.FMarkerDirective","i16.FNodeInputDirective","i17.FNodeOutletDirective","i18.FNodeOutputDirective","i19.FExternalItemDirective","i20.FFlowComponent","i21.FLineAlignmentComponent","i22.FMinimapComponent","i23.FMinimapCanvasDirective","i24.FMinimapViewDirective","i25.FMinimapFlowDirective","i26.FGroupDirective","i27.FNodeDirective","i28.FDragHandleDirective","i29.FResizeHandleDirective","i30.FSelectionAreaComponent"],"mappings":"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"}
|