@foblex/flow 12.6.6 → 12.6.8
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/README.md +1 -1
- package/bundles/foblex-flow.umd.js +2130 -2147
- package/bundles/foblex-flow.umd.js.map +1 -1
- package/{f-backgroud/domain → domain/f-background}/add-pattern-to-background/add-pattern-to-background.request.d.ts +1 -1
- package/domain/f-background/index.d.ts +2 -0
- package/domain/f-canvas/index.d.ts +8 -0
- package/{f-draggable/connections/common → domain/f-connection}/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.d.ts +1 -1
- package/{f-draggable/connections/common → domain/f-connection}/get-connector-with-rect/get-connector-with-rect-request.d.ts +1 -1
- package/{f-draggable/connections/common → domain/f-connection}/get-connector-with-rect/i-connector-with-rect.d.ts +1 -1
- package/{f-draggable/connections/common → domain/f-connection}/index.d.ts +0 -1
- package/domain/f-connection/providers.d.ts +4 -0
- package/domain/get-flow-state/providers.d.ts +1 -1
- package/domain/index.d.ts +3 -0
- package/domain/providers.d.ts +1 -1
- package/esm2015/domain/f-background/add-pattern-to-background/add-pattern-to-background.execution.js +48 -0
- package/esm2015/domain/f-background/add-pattern-to-background/add-pattern-to-background.request.js +6 -0
- package/esm2015/domain/f-background/add-pattern-to-background/index.js +3 -0
- package/esm2015/domain/f-background/index.js +3 -0
- package/esm2015/domain/f-background/providers.js +5 -0
- package/esm2015/{f-canvas/domain → domain/f-canvas}/center-group-or-node/center-group-or-node-request.js +1 -1
- package/esm2015/domain/f-canvas/center-group-or-node/center-group-or-node.execution.js +49 -0
- package/esm2015/{f-canvas/domain → domain/f-canvas}/center-group-or-node/index.js +1 -1
- package/esm2015/{f-canvas/domain → domain/f-canvas}/fit-to-flow/fit-to-flow-request.js +1 -1
- package/esm2015/domain/f-canvas/fit-to-flow/fit-to-flow.execution.js +56 -0
- package/esm2015/{f-canvas/domain → domain/f-canvas}/fit-to-flow/index.js +1 -1
- package/esm2015/domain/f-canvas/index.js +9 -0
- package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-position/index.js +1 -1
- package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-position/input-canvas-position-request.js +1 -1
- package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-position/input-canvas-position.execution.js +1 -1
- package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/index.js +1 -1
- package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/input-canvas-scale-request.js +1 -1
- package/esm2015/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/input-canvas-scale.execution.js +1 -1
- package/esm2015/{f-canvas/domain → domain/f-canvas}/providers.js +1 -1
- package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale/index.js +1 -1
- package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale/reset-scale-request.js +1 -1
- package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale/reset-scale.execution.js +1 -1
- package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/index.js +1 -1
- package/esm2015/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/reset-scale-and-center-request.js +1 -1
- package/esm2015/domain/f-canvas/reset-scale-and-center/reset-scale-and-center.execution.js +51 -0
- package/esm2015/{f-canvas/domain → domain/f-canvas}/update-scale/index.js +1 -1
- package/esm2015/{f-canvas/domain → domain/f-canvas}/update-scale/update-scale-request.js +1 -1
- package/esm2015/{f-canvas/domain → domain/f-canvas}/update-scale/update-scale.execution.js +1 -1
- package/esm2015/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.js +39 -0
- package/esm2015/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.js +8 -0
- package/esm2015/domain/f-connection/find-closest-input-using-snap-threshold/index.js +3 -0
- package/esm2015/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.js +55 -0
- package/esm2015/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.js +6 -0
- package/esm2015/domain/f-connection/get-all-can-be-connected-input-positions/index.js +3 -0
- package/esm2015/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.js +6 -0
- package/esm2015/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.js +28 -0
- package/esm2015/domain/f-connection/get-connector-with-rect/i-connector-with-rect.js +2 -0
- package/esm2015/domain/f-connection/get-connector-with-rect/index.js +4 -0
- package/esm2015/domain/f-connection/index.js +5 -0
- package/esm2015/domain/f-connection/providers.js +9 -0
- package/esm2015/domain/index.js +4 -1
- package/esm2015/domain/providers.js +6 -4
- package/esm2015/f-backgroud/domain/index.js +1 -3
- package/esm2015/f-backgroud/f-background.component.js +3 -3
- package/esm2015/f-canvas/domain/index.js +1 -9
- package/esm2015/f-canvas/f-canvas.component.js +2 -3
- package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.js +2 -2
- package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/index.js +1 -2
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/index.js +1 -2
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/index.js +1 -2
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/index.js +1 -2
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/index.js +1 -2
- package/esm2015/f-draggable/connections/create-connection/create-connection.drag-handler.js +8 -4
- package/esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/index.js +1 -2
- package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.js +85 -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/get-input-under-pointer/index.js +4 -0
- package/esm2015/f-draggable/connections/index.js +2 -2
- package/esm2015/f-draggable/connections/providers.js +20 -12
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/index.js +1 -2
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.js +2 -2
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/index.js +1 -2
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.js +12 -5
- package/esm2015/f-draggable/node/connection-base-drag-handler.js +2 -2
- package/esm2015/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.js +1 -1
- package/esm2015/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.js +1 -1
- package/esm2015/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.js +9 -3
- package/esm2015/f-draggable/node-resize/get-node-resize-restrictions/i-node-resize-restrictions.js +1 -1
- package/esm2015/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.js +3 -6
- package/esm2015/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.js +3 -3
- package/esm2015/f-draggable/node-resize/node-resize.drag-handler.js +5 -4
- package/esm2015/f-draggable/providers.js +5 -5
- package/esm2015/f-external-item/domain/external-item-preparation/external-item-preparation.execution.js +3 -3
- package/esm2015/f-external-item/domain/external-item-preparation/external-item-preparation.validator.js +3 -3
- package/esm2015/f-external-item/domain/external-item.drag-handler.js +1 -1
- package/esm2015/f-flow/f-flow.component.js +5 -6
- package/f-backgroud/domain/index.d.ts +0 -2
- package/f-canvas/domain/index.d.ts +0 -8
- package/f-draggable/connections/create-connection/create-connection-finalize/index.d.ts +0 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/index.d.ts +0 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/index.d.ts +0 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/index.d.ts +0 -1
- package/f-draggable/connections/create-connection/create-connection-preparation/index.d.ts +0 -1
- package/f-draggable/connections/create-connection/create-connection.drag-handler.d.ts +1 -1
- package/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/index.d.ts +0 -1
- package/f-draggable/connections/{common/get-input-under-pointer → get-input-under-pointer}/get-input-under-pointer.execution.d.ts +3 -3
- package/f-draggable/connections/{common/get-input-under-pointer → get-input-under-pointer}/get-input-under-pointer.request.d.ts +2 -2
- package/f-draggable/connections/{common/get-input-under-pointer → get-input-under-pointer}/get-input-under-pointer.validator.d.ts +1 -1
- package/f-draggable/connections/index.d.ts +1 -1
- package/f-draggable/connections/providers.d.ts +4 -1
- package/f-draggable/connections/reassign-connection/reassign-connection-finalize/index.d.ts +0 -1
- package/f-draggable/connections/reassign-connection/reassign-connection-preparation/index.d.ts +0 -1
- package/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.d.ts +1 -1
- package/f-draggable/node/connection-base-drag-handler.d.ts +1 -1
- package/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.d.ts +1 -0
- package/f-draggable/node-resize/get-node-resize-restrictions/i-node-resize-restrictions.d.ts +2 -1
- package/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.d.ts +0 -1
- package/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.d.ts +2 -3
- package/f-draggable/providers.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.validator.d.ts +1 -1
- package/f-external-item/domain/external-item.drag-handler.d.ts +1 -1
- package/f-minimap/domain/providers.d.ts +1 -1
- package/f-node/providers.d.ts +1 -1
- package/fesm2015/foblex-flow.js +947 -965
- package/fesm2015/foblex-flow.js.map +1 -1
- package/package.json +1 -1
- package/esm2015/f-backgroud/domain/add-pattern-to-background/add-pattern-to-background.execution.js +0 -48
- package/esm2015/f-backgroud/domain/add-pattern-to-background/add-pattern-to-background.request.js +0 -6
- package/esm2015/f-backgroud/domain/add-pattern-to-background/index.js +0 -3
- package/esm2015/f-backgroud/domain/providers.js +0 -5
- package/esm2015/f-canvas/domain/center-group-or-node/center-group-or-node.execution.js +0 -49
- package/esm2015/f-canvas/domain/fit-to-flow/fit-to-flow.execution.js +0 -56
- package/esm2015/f-canvas/domain/reset-scale-and-center/reset-scale-and-center.execution.js +0 -51
- package/esm2015/f-draggable/connections/common/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.js +0 -39
- package/esm2015/f-draggable/connections/common/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.js +0 -8
- package/esm2015/f-draggable/connections/common/find-closest-input-using-snap-threshold/index.js +0 -3
- package/esm2015/f-draggable/connections/common/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.js +0 -55
- package/esm2015/f-draggable/connections/common/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.js +0 -6
- package/esm2015/f-draggable/connections/common/get-all-can-be-connected-input-positions/index.js +0 -3
- package/esm2015/f-draggable/connections/common/get-connector-with-rect/get-connector-with-rect-request.js +0 -6
- package/esm2015/f-draggable/connections/common/get-connector-with-rect/get-connector-with-rect.execution.js +0 -28
- package/esm2015/f-draggable/connections/common/get-connector-with-rect/i-connector-with-rect.js +0 -2
- package/esm2015/f-draggable/connections/common/get-connector-with-rect/index.js +0 -4
- package/esm2015/f-draggable/connections/common/get-input-under-pointer/get-input-under-pointer.execution.js +0 -85
- package/esm2015/f-draggable/connections/common/get-input-under-pointer/get-input-under-pointer.request.js +0 -7
- package/esm2015/f-draggable/connections/common/get-input-under-pointer/get-input-under-pointer.validator.js +0 -35
- package/esm2015/f-draggable/connections/common/get-input-under-pointer/index.js +0 -4
- package/esm2015/f-draggable/connections/common/index.js +0 -6
- package/esm2015/f-draggable/connections/common/providers.js +0 -12
- package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/providers.js +0 -7
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/providers.js +0 -5
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/providers.js +0 -5
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/providers.js +0 -7
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/providers.js +0 -13
- package/esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/providers.js +0 -7
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/providers.js +0 -7
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/providers.js +0 -7
- package/f-draggable/connections/common/providers.d.ts +0 -5
- package/f-draggable/connections/create-connection/create-connection-finalize/providers.d.ts +0 -3
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/providers.d.ts +0 -2
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/providers.d.ts +0 -2
- package/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/providers.d.ts +0 -3
- package/f-draggable/connections/create-connection/create-connection-preparation/providers.d.ts +0 -3
- package/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/providers.d.ts +0 -3
- package/f-draggable/connections/reassign-connection/reassign-connection-finalize/providers.d.ts +0 -3
- package/f-draggable/connections/reassign-connection/reassign-connection-preparation/providers.d.ts +0 -3
- /package/{f-backgroud/domain → domain/f-background}/add-pattern-to-background/add-pattern-to-background.execution.d.ts +0 -0
- /package/{f-backgroud/domain → domain/f-background}/add-pattern-to-background/index.d.ts +0 -0
- /package/{f-backgroud/domain → domain/f-background}/providers.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/center-group-or-node/center-group-or-node-request.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/center-group-or-node/center-group-or-node.execution.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/center-group-or-node/index.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/fit-to-flow/fit-to-flow-request.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/fit-to-flow/fit-to-flow.execution.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/fit-to-flow/index.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/input-canvas-position/index.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/input-canvas-position/input-canvas-position-request.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/input-canvas-position/input-canvas-position.execution.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/index.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/input-canvas-scale-request.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/input-canvas-scale/input-canvas-scale.execution.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/providers.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/reset-scale/index.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/reset-scale/reset-scale-request.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/reset-scale/reset-scale.execution.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/index.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/reset-scale-and-center-request.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/reset-scale-and-center/reset-scale-and-center.execution.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/update-scale/index.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/update-scale/update-scale-request.d.ts +0 -0
- /package/{f-canvas/domain → domain/f-canvas}/update-scale/update-scale.execution.d.ts +0 -0
- /package/{f-draggable/connections/common → domain/f-connection}/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.d.ts +0 -0
- /package/{f-draggable/connections/common → domain/f-connection}/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.d.ts +0 -0
- /package/{f-draggable/connections/common → domain/f-connection}/find-closest-input-using-snap-threshold/index.d.ts +0 -0
- /package/{f-draggable/connections/common → domain/f-connection}/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.d.ts +0 -0
- /package/{f-draggable/connections/common → domain/f-connection}/get-all-can-be-connected-input-positions/index.d.ts +0 -0
- /package/{f-draggable/connections/common → domain/f-connection}/get-connector-with-rect/get-connector-with-rect.execution.d.ts +0 -0
- /package/{f-draggable/connections/common → domain/f-connection}/get-connector-with-rect/index.d.ts +0 -0
- /package/f-draggable/connections/{common/get-input-under-pointer → get-input-under-pointer}/index.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"foblex-flow.js","sources":["../../../projects/f-flow/src/f-backgroud/domain/add-pattern-to-background/add-pattern-to-background.request.ts","../../../projects/f-flow/src/domain/create-connection-markers/create-connection-markers-request.ts","../../../projects/f-flow/src/f-storage/f-components-store.ts","../../../projects/f-flow/src/f-storage/f-transform-store.ts","../../../projects/f-flow/src/domain/create-connection-markers/create-connection-markers.execution.ts","../../../projects/f-flow/src/domain/create-rounded-rect-from-element/create-rounded-rect-from-element-request.ts","../../../projects/f-flow/src/domain/create-rounded-rect-from-element/create-rounded-rect-from-element.execution.ts","../../../projects/f-flow/src/domain/emit-transform-changes/emit-transform-changes.request.ts","../../../projects/f-flow/src/domain/emit-transform-changes/emit-transform-changes.execution.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.request.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-draggable-data-context.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas.drag-handler.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/canvas/providers.ts","../../../projects/f-flow/src/f-draggable/connections/common/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.ts","../../../projects/f-flow/src/f-draggable/connections/common/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.ts","../../../projects/f-flow/src/f-draggable/connections/common/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.ts","../../../projects/f-flow/src/f-draggable/connections/common/get-connector-with-rect/get-connector-with-rect-request.ts","../../../projects/f-flow/src/f-draggable/connections/common/get-connector-with-rect/get-connector-with-rect.execution.ts","../../../projects/f-flow/src/f-draggable/connections/common/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.ts","../../../projects/f-flow/src/f-draggable/connections/common/get-input-under-pointer/get-input-under-pointer.request.ts","../../../projects/f-flow/src/f-draggable/connections/common/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/common/get-input-under-pointer/get-input-under-pointer.validator.ts","../../../projects/f-flow/src/f-draggable/connections/common/providers.ts","../../../projects/f-flow/src/f-connectors/e-f-connectable-side.ts","../../../projects/f-flow/src/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.ts","../../../projects/f-flow/src/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.ts","../../../projects/f-flow/src/f-connectors/f-connector-base.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input-base.ts","../../../projects/f-flow/src/f-node/domain/is-group.ts","../../../projects/f-flow/src/f-node/domain/is-node.ts","../../../projects/f-flow/src/f-node/f-drag-handle/f-drag-handle.directive.ts","../../../projects/f-flow/src/f-node/f-resize-handle/e-f-resize-handle-type.ts","../../../projects/f-flow/src/f-node/f-resize-handle/f-resize-handle.directive.ts","../../../projects/f-flow/src/f-node/f-rotate-handle/f-rotate-handle.directive.ts","../../../projects/f-flow/src/mixins/change-selection/change-selection.ts","../../../projects/f-flow/src/mixins/change-visibility/change-visibility.ts","../../../projects/f-flow/src/f-node/f-node-base.ts","../../../projects/f-flow/src/f-node/f-resize-observer.ts","../../../projects/f-flow/src/f-node/f-group.directive.ts","../../../projects/f-flow/src/f-node/f-node.directive.ts","../../../projects/f-flow/src/f-node/providers.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input.directive.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/f-node-outlet-base.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/is-node-outlet.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/f-node-outlet.directive.ts","../../../projects/f-flow/src/f-connectors/f-node-output/f-node-output-base.ts","../../../projects/f-flow/src/f-connectors/f-node-output/is-node-output.ts","../../../projects/f-flow/src/f-connectors/f-node-output/f-node-output.directive.ts","../../../projects/f-flow/src/f-connectors/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/f-create-connection.event.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.request.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/f-reassign-connection.event.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points.handler.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.ts","../../../projects/f-flow/src/f-connection/common/domain/f-bezier.path-builder.ts","../../../projects/f-flow/src/f-connection/common/domain/f-segment.path-builder.ts","../../../projects/f-flow/src/f-connection/common/domain/f-straight.path-builder.ts","../../../projects/f-flow/src/f-connection/common/f-connection-identifiers.ts","../../../projects/f-flow/src/f-connection/common/f-connection.injection-token.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text-path.directive.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/i-connection-text.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text.component.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text.component.html","../../../projects/f-flow/src/f-connection/common/f-drag-handle/f-connection-drag-handle.component.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/i-connection-gradient.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/f-connection-gradient.component.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/f-connection-gradient.component.html","../../../projects/f-flow/src/f-connection/common/f-path/i-connection-path.ts","../../../projects/f-flow/src/f-connection/common/f-path/get-path-marker-id.ts","../../../projects/f-flow/src/f-connection/common/f-path/f-connection-path.component.ts","../../../projects/f-flow/src/f-connection/common/f-selection/f-connection-selection.component.ts","../../../projects/f-flow/src/f-connection/f-connection-builder/f-connection-builders.ts","../../../projects/f-flow/src/f-connection/f-connection-builder/f-connection-factory.ts","../../../projects/f-flow/src/f-connection/common/f-connection-base.ts","../../../projects/f-flow/src/f-connection/common/e-f-connection-behavior.ts","../../../projects/f-flow/src/f-connection/common/e-f-connection-type.ts","../../../projects/f-flow/src/f-connection/f-connection-center/f-connection-center.directive.ts","../../../projects/f-flow/src/f-connection/f-connection-for-create/f-connection-for-create.component.ts","../../../projects/f-flow/src/f-connection/f-connection-for-create/f-connection-for-create.component.html","../../../projects/f-flow/src/f-connection/f-connection/f-connection.component.ts","../../../projects/f-flow/src/f-connection/f-connection/f-connection.component.html","../../../projects/f-flow/src/f-connection/f-marker/e-f-marker-type.ts","../../../projects/f-flow/src/f-connection/f-marker/f-marker-base.ts","../../../projects/f-flow/src/f-connection/f-marker/f-marker.directive.ts","../../../projects/f-flow/src/f-connection/f-snap-connection/f-snap-connection.component.ts","../../../projects/f-flow/src/f-connection/f-snap-connection/f-snap-connection.component.html","../../../projects/f-flow/src/f-connection/providers.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/connections/providers.ts","../../../projects/f-flow/src/f-draggable/domain/get-node-padding/get-node-padding.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-node-padding/get-node-padding.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-parent-nodes/get-parent-nodes.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.ts","../../../projects/f-flow/src/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.ts","../../../projects/f-flow/src/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.ts","../../../projects/f-flow/src/f-draggable/domain/providers.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.request.ts","../../../projects/f-flow/src/f-draggable/node/connection-base-drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection-target.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.request.ts","../../../projects/f-flow/src/f-draggable/node/connection-source.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.ts","../../../projects/f-flow/src/f-draggable/node/node.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/node-resize-by-child.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.request.ts","../../../projects/f-flow/src/domain/is-connection-under-node/is-connection-under-node.request.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/node/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/resize-direction.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/providers.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.request.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.execution.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.validator.ts","../../../projects/f-flow/src/f-draggable/single-select/providers.ts","../../../projects/f-flow/src/f-draggable/f-draggable-base.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.request.ts","../../../projects/f-flow/src/f-external-item/domain/f-create-node.event.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.execution.ts","../../../projects/f-flow/src/f-external-item/domain/external-item.drag-handler.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.validator.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/providers.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.request.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.execution.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.validator.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/providers.ts","../../../projects/f-flow/src/f-external-item/domain/providers.ts","../../../projects/f-flow/src/f-external-item/f-external-item-base.ts","../../../projects/f-flow/src/f-external-item/is-external-item.ts","../../../projects/f-flow/src/f-external-item/f-external-item.service.ts","../../../projects/f-flow/src/f-external-item/f-external-item.directive.ts","../../../projects/f-flow/src/f-external-item/providers.ts","../../../projects/f-flow/src/f-draggable/i-f-drag-and-drop-plugin.ts","../../../projects/f-flow/src/f-draggable/f-draggable.directive.ts","../../../projects/f-flow/src/f-draggable/f-selection-change-event.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.ts","../../../projects/f-flow/src/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.ts","../../../projects/f-flow/src/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap.drag-handler.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/providers.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/providers.ts","../../../projects/f-flow/src/f-minimap/domain/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.ts","../../../projects/f-flow/src/domain/get-can-be-selected-items/get-can-be-selected-items-request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area.drag-handle.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/providers.ts","../../../projects/f-flow/src/f-draggable/providers.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/get-selection/get-selection.request.ts","../../../projects/f-flow/src/domain/f-selection/get-selection/get-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/select/select.request.ts","../../../projects/f-flow/src/domain/f-selection/select/select.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.request.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.execution.ts","../../../projects/f-flow/src/domain/f-selection/providers.ts","../../../projects/f-flow/src/domain/get-element-rect-in-flow/get-element-rect-in-flow-request.ts","../../../projects/f-flow/src/domain/get-element-rect-in-flow/get-element-rect-in-flow.execution.ts","../../../projects/f-flow/src/domain/get-can-be-selected-items/get-can-be-selected-items.execution.ts","../../../projects/f-flow/src/domain/get-connection-line/get-connection-line.request.ts","../../../projects/f-flow/src/domain/get-connection-line/get-connection-line.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state.request.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/providers.ts","../../../projects/f-flow/src/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.request.ts","../../../projects/f-flow/src/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.execution.ts","../../../projects/f-flow/src/domain/get-nodes-rect/get-nodes-rect.request.ts","../../../projects/f-flow/src/domain/get-nodes-rect/get-nodes-rect.execution.ts","../../../projects/f-flow/src/domain/get-position-in-flow/get-position-in-flow-request.ts","../../../projects/f-flow/src/domain/get-position-in-flow/get-position-in-flow.execution.ts","../../../projects/f-flow/src/domain/is-connection-under-node/is-connection-under-node.execution.ts","../../../projects/f-flow/src/domain/redraw-connections/redraw-connections-request.ts","../../../projects/f-flow/src/domain/redraw-connections/redraw-connections.execution.ts","../../../projects/f-flow/src/domain/show-connections-after-calculations/show-connections-after-calculations-request.ts","../../../projects/f-flow/src/domain/show-connections-after-calculations/show-connections-after-calculations.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-item-layers.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-item-layers.execution.ts","../../../projects/f-flow/src/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.request.ts","../../../projects/f-flow/src/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.execution.ts","../../../projects/f-flow/src/domain/constants.ts","../../../projects/f-flow/src/domain/create-dom-element.ts","../../../projects/f-flow/src/f-canvas/domain/center-group-or-node/center-group-or-node-request.ts","../../../projects/f-flow/src/f-canvas/domain/center-group-or-node/center-group-or-node.execution.ts","../../../projects/f-flow/src/f-canvas/domain/fit-to-flow/fit-to-flow-request.ts","../../../projects/f-flow/src/f-canvas/domain/fit-to-flow/fit-to-flow.execution.ts","../../../projects/f-flow/src/f-canvas/domain/input-canvas-position/input-canvas-position-request.ts","../../../projects/f-flow/src/f-canvas/domain/input-canvas-position/input-canvas-position.execution.ts","../../../projects/f-flow/src/f-canvas/domain/input-canvas-scale/input-canvas-scale-request.ts","../../../projects/f-flow/src/f-canvas/domain/input-canvas-scale/input-canvas-scale.execution.ts","../../../projects/f-flow/src/f-canvas/domain/reset-scale/reset-scale-request.ts","../../../projects/f-flow/src/f-canvas/domain/reset-scale/reset-scale.execution.ts","../../../projects/f-flow/src/f-canvas/domain/reset-scale-and-center/reset-scale-and-center-request.ts","../../../projects/f-flow/src/f-canvas/domain/reset-scale-and-center/reset-scale-and-center.execution.ts","../../../projects/f-flow/src/f-canvas/domain/update-scale/update-scale-request.ts","../../../projects/f-flow/src/f-canvas/domain/update-scale/update-scale.execution.ts","../../../projects/f-flow/src/f-canvas/domain/f-canvas-change.event.ts","../../../projects/f-flow/src/f-canvas/domain/providers.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-backgroud/domain/providers.ts","../../../projects/f-flow/src/domain/providers.ts","../../../projects/f-flow/src/f-backgroud/domain/add-pattern-to-background/add-pattern-to-background.execution.ts","../../../projects/f-flow/src/f-backgroud/domain/i-f-background-pattern.ts","../../../projects/f-flow/src/f-backgroud/f-rect-pattern/f-rect-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-circle-pattern/f-circle-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-background-base.ts","../../../projects/f-flow/src/f-backgroud/f-background.component.ts","../../../projects/f-flow/src/f-backgroud/providers.ts","../../../projects/f-flow/src/f-line-alignment/domain/line-element.ts","../../../projects/f-flow/src/f-line-alignment/domain/line-service.ts","../../../projects/f-flow/src/f-line-alignment/domain/nearest-coordinate.ts","../../../projects/f-flow/src/f-line-alignment/f-line-alignment-base.ts","../../../projects/f-flow/src/f-line-alignment/f-line-alignment.component.ts","../../../projects/f-flow/src/f-line-alignment/providers.ts","../../../projects/f-flow/src/f-minimap/domain/check-rect-is-finite.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap-data.ts","../../../projects/f-flow/src/f-minimap/f-minimap-flow.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap-canvas.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap-view.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap.component.ts","../../../projects/f-flow/src/f-minimap/f-minimap.component.html","../../../projects/f-flow/src/f-minimap/providers.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area-base.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area.component.ts","../../../projects/f-flow/src/f-selection-area/providers.ts","../../../projects/f-flow/src/f-flow/f-flow-base.ts","../../../projects/f-flow/src/f-flow/f-flow.component.ts","../../../projects/f-flow/src/f-flow/f-flow.component.html","../../../projects/f-flow/src/f-flow/providers.ts","../../../projects/f-flow/src/f-zoom/f-zoom-base.ts","../../../projects/f-flow/src/f-zoom/f-zoom.directive.ts","../../../projects/f-flow/src/f-zoom/providers.ts","../../../projects/f-flow/src/f-flow.module.ts","../../../projects/f-flow/src/foblex-flow.ts"],"sourcesContent":["import { IFBackgroundPattern } from '../i-f-background-pattern';\n\nexport class AddPatternToBackgroundRequest {\n constructor(\n public fPattern: IFBackgroundPattern | undefined\n ) {\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 { Observable, Subject } from 'rxjs';\nimport { ITransformModel } from '@foblex/2d';\nimport { FConnectionBase, FMarkerBase } from '../f-connection';\nimport { FFlowBase } from '../f-flow';\nimport { FCanvasBase } from '../f-canvas';\nimport { FBackgroundBase } from '../f-backgroud';\nimport { FNodeBase } from '../f-node';\nimport { FConnectorBase } from '../f-connectors';\nimport { FDraggableBase } from '../f-draggable';\n\n@Injectable()\nexport class FComponentsStore {\n\n private readonly componentsDataChanges: Subject<void> = new Subject<void>();\n public get componentsData$(): Observable<void> {\n return this.componentsDataChanges.asObservable();\n }\n\n private readonly componentsCountChanges: Subject<void> = new Subject<void>();\n public get componentsCount$(): Observable<void> {\n return this.componentsCountChanges.asObservable();\n }\n\n public get flowHost(): HTMLElement {\n return this.fFlow?.hostElement!;\n }\n\n public get transform(): ITransformModel {\n return this.fCanvas?.transform!;\n }\n\n public fFlow: FFlowBase | undefined;\n\n public fCanvas: FCanvasBase | undefined;\n\n public fBackground: FBackgroundBase | undefined;\n\n public fNodes: FNodeBase[] = [];\n\n public fConnections: FConnectionBase[] = [];\n\n public fTempConnection: FConnectionBase | undefined;\n\n public fSnapConnection: FConnectionBase | undefined;\n\n public fMarkers: FMarkerBase[] = [];\n\n public fOutputs: FConnectorBase[] = [];\n\n public fInputs: FConnectorBase[] = [];\n\n public fOutlets: FConnectorBase[] = [];\n\n public fDraggable: FDraggableBase | undefined;\n\n public findNode(element: HTMLElement | SVGElement): FNodeBase | undefined {\n return this.fNodes.find(n => n.isContains(element));\n }\n\n public addComponent<T>(collection: T[], component: T): void {\n collection.push(component);\n this.componentsCountChanges.next();\n }\n\n public removeComponent<T>(collection: T[], component: T): void {\n const index = collection.indexOf(component);\n if (index > -1) {\n collection.splice(index, 1);\n this.componentsCountChanges.next();\n }\n }\n\n public componentDataChanged(): void {\n this.componentsDataChanges.next();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class FTransformStore {\n\n public readonly changes: Subject<void> = new Subject<void>();\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionMarkersRequest } from './create-connection-markers-request';\nimport { FConnectionBase, FMarkerBase } from '../../f-connection';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { normalizeDomElementId } from '@foblex/utils';\nimport { FComponentsStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionMarkersRequest)\nexport class CreateConnectionMarkersExecution implements IExecution<CreateConnectionMarkersRequest, void> {\n\n constructor(\n private fBrowser: BrowserService,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: CreateConnectionMarkersRequest): void {\n const element: SVGDefsElement = createSVGElement('defs', this.fBrowser);\n const fConnection = request.fConnection;\n\n this.getMarkers(fConnection).forEach((marker) => {\n\n const markerElement = this.createMarkerElement(marker, fConnection.fId);\n\n const clone = marker.hostElement.cloneNode(true) as HTMLElement;\n clone.setAttribute('height', `${ marker.height }`);\n clone.setAttribute('width', `${ marker.width }`);\n clone.removeAttribute('markerUnits');\n clone.style.display = 'unset';\n markerElement.append(clone);\n\n element.append(markerElement);\n });\n\n fConnection.fDefs.nativeElement.innerHTML = element.innerHTML;\n\n this.makeSafariCompatible(fConnection);\n }\n\n public getMarkers(fConnection: FConnectionBase): FMarkerBase[] {\n return this.fComponentsStore.fMarkers.filter((x) => fConnection.hostElement.contains(x.hostElement));\n }\n\n // Safari does not support markers on path elements if markers are defined after the path element\n private makeSafariCompatible(fConnection: FConnectionBase): void {\n fConnection.fPath.hostElement.replaceWith(fConnection.fPath.hostElement);\n }\n\n private createMarkerElement(marker: FMarkerBase, fConnectionId: string): SVGElement {\n const markerElement = createSVGElement('marker', this.fBrowser);\n\n markerElement.setAttribute('id', normalizeDomElementId(marker.type + '-' + fConnectionId));\n\n markerElement.setAttribute('markerHeight', `${ marker.height }`);\n markerElement.setAttribute('markerWidth', `${ marker.width }`);\n markerElement.setAttribute('orient', `${ marker.orient }`);\n markerElement.setAttribute('refX', `${ marker.refX }`);\n markerElement.setAttribute('refY', `${ marker.refY }`);\n markerElement.setAttribute('markerUnits', `${ marker.markerUnits }`);\n\n return markerElement;\n }\n}\n\nfunction createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","export class CreateRoundedRectFromElementRequest {\n constructor(\n public element: HTMLElement | SVGElement,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateRoundedRectFromElementRequest } from './create-rounded-rect-from-element-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { RoundedRect, RectExtensions } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(CreateRoundedRectFromElementRequest)\nexport class CreateRoundedRectFromElementExecution implements IExecution<CreateRoundedRectFromElementRequest, RoundedRect> {\n\n constructor(\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: CreateRoundedRectFromElementRequest): RoundedRect {\n return this.setRadiusFromElement(RoundedRect.fromRect(RectExtensions.fromElement(request.element)), request.element);\n }\n\n private setRadiusFromElement(rect: RoundedRect, element: HTMLElement | SVGElement): RoundedRect {\n const styles = this.getComputedStyle(element);\n rect.radius1 = this.toPixels(styles.borderTopLeftRadius, element, styles.fontSize);\n rect.radius2 = this.toPixels(styles.borderTopRightRadius, element, styles.fontSize);\n rect.radius3 = this.toPixels(styles.borderBottomRightRadius, element, styles.fontSize);\n rect.radius4 = this.toPixels(styles.borderBottomLeftRadius, element, styles.fontSize);\n return rect;\n }\n\n private getComputedStyle(element: HTMLElement | SVGElement): CSSStyleDeclaration {\n return this.fBrowser.window.getComputedStyle(element);\n }\n\n private toPixels(value: string, element: HTMLElement | SVGElement, fontSize: string): number {\n return this.fBrowser.toPixels(value, element.clientWidth, element.clientHeight, fontSize) || 0\n }\n}\n","export class EmitTransformChangesRequest {\n\n}\n","import { EmitTransformChangesRequest } from './emit-transform-changes.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FTransformStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(EmitTransformChangesRequest)\nexport class EmitTransformChangesExecution\n implements IExecution<EmitTransformChangesRequest, void> {\n\n constructor(\n private fTransformStore: FTransformStore,\n ) {\n }\n\n public handle(request: EmitTransformChangesRequest): void {\n this.fTransformStore.changes.next();\n }\n}\n","export class ClearSelectionRequest {\n\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CanvasMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Point } from '@foblex/2d';\nimport { IDraggableItem } from './i-draggable-item';\nimport { FLineAlignmentBase } from '../f-line-alignment';\nimport { ICanChangeSelection } from '../mixins';\n\n@Injectable()\nexport class FDraggableDataContext {\n\n public selectedItems: ICanChangeSelection[] = [];\n\n public isSelectedChanged: boolean = false;\n\n public onPointerDownScale: number = 1;\n\n public onPointerDownPosition: Point = new Point(0, 0);\n\n public draggableItems: IDraggableItem[] = [];\n\n public fLineAlignment: FLineAlignmentBase | undefined;\n\n public reset(): void {\n this.draggableItems = [];\n this.onPointerDownScale = 1;\n this.onPointerDownPosition = new Point(0, 0);\n }\n\n public markSelectionAsChanged(): void {\n this.isSelectedChanged = true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMoveFinalizeRequest } from './canvas-move-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\n\n@Injectable()\n@FExecutionRegister(CanvasMoveFinalizeRequest)\nexport class CanvasMoveFinalizeExecution implements IExecution<CanvasMoveFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: CanvasMoveFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => x.complete?.());\n }\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class CanvasDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public initialize(): void {\n this.onPointerDownPosition = this.fComponentsStore.fCanvas!.transform.position;\n }\n\n public move(difference: IPoint): void {\n this.fComponentsStore.fCanvas!.setPosition(Point.fromPoint(this.onPointerDownPosition).add(difference));\n this.fComponentsStore.fCanvas!.redraw();\n }\n\n public complete(): void {\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMoveFinalizeRequest } from './canvas-move-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CanvasDragHandler } from '../canvas.drag-handler';\n\n@Injectable()\n@FValidatorRegister(CanvasMoveFinalizeRequest)\nexport class CanvasMoveFinalizeValidator implements IValidator<CanvasMoveFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CanvasMoveFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CanvasDragHandler\n );\n }\n}\n","import { CanvasMoveFinalizeExecution } from './canvas-move-finalize.execution';\nimport { CanvasMoveFinalizeValidator } from './canvas-move-finalize.validator';\n\nexport const CANVAS_MOVE_FINALIZE_PROVIDERS = [\n\n CanvasMoveFinalizeExecution,\n\n CanvasMoveFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CanvasMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMovePreparationRequest } from './canvas-move-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CanvasDragHandler } from '../canvas.drag-handler';\n\n@Injectable()\n@FExecutionRegister(CanvasMovePreparationRequest)\nexport class CanvasMovePreparationExecution implements IExecution<CanvasMovePreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: CanvasMovePreparationRequest): void {\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost);\n this.fDraggableDataContext.draggableItems = [\n new CanvasDragHandler(this.fComponentsStore)\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMovePreparationRequest } from './canvas-move-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FValidatorRegister(CanvasMovePreparationRequest)\nexport class CanvasMovePreparationValidator implements IValidator<CanvasMovePreparationRequest> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CanvasMovePreparationRequest): boolean {\n return !this.fDraggableDataContext.draggableItems.length &&\n (this.isBackgroundElement(request.event.targetElement) || this.isDragOnHost(request.event.targetElement));\n }\n\n private isBackgroundElement(targetElement: HTMLElement): boolean | undefined {\n return this.fComponentsStore.fBackground?.isBackgroundElement(targetElement);\n }\n\n private isDragOnHost(targetElement: HTMLElement): boolean {\n return this.flowHost.contains(targetElement) && !this.getNode(targetElement);\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n let result = this.fComponentsStore.findNode(targetElement);\n if (result && result.fDraggingDisabled) {\n result = undefined;\n }\n return result;\n }\n}\n","import { CanvasMovePreparationExecution } from './canvas-move-preparation.execution';\nimport { CanvasMovePreparationValidator } from './canvas-move-preparation.validator';\n\nexport const CANVAS_MOVE_PREPARATION_PROVIDERS = [\n\n CanvasMovePreparationExecution,\n\n CanvasMovePreparationValidator,\n];\n","import { CANVAS_MOVE_PREPARATION_PROVIDERS } from './canvas-move-preparation';\nimport { CANVAS_MOVE_FINALIZE_PROVIDERS } from './canvas-move-finalize';\n\nexport const CANVAS_PROVIDERS = [\n\n ...CANVAS_MOVE_FINALIZE_PROVIDERS,\n\n ...CANVAS_MOVE_PREPARATION_PROVIDERS,\n];\n","import { IPoint } from '@foblex/2d';\nimport { IConnectorWithRect } from '../get-connector-with-rect';\n\nexport class FindClosestInputUsingSnapThresholdRequest {\n\n constructor(\n public position: IPoint,\n public canBeConnectedInputs: IConnectorWithRect[],\n public snapThreshold: number\n ) {\n }\n}\n","import { FindClosestInputUsingSnapThresholdRequest } from './find-closest-input-using-snap-threshold.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { IConnectorWithRect } from '../get-connector-with-rect';\n\n@Injectable()\n@FExecutionRegister(FindClosestInputUsingSnapThresholdRequest)\nexport class FindClosestInputUsingSnapThresholdExecution\n implements IExecution<FindClosestInputUsingSnapThresholdRequest, IConnectorWithRect | undefined> {\n\n\n public handle(payload: FindClosestInputUsingSnapThresholdRequest): IConnectorWithRect | undefined {\n let result: IConnectorWithRect | undefined;\n let minDistance = Infinity;\n\n for (const element of payload.canBeConnectedInputs) {\n const distance = this.distanceToRectangle(payload.position, element);\n\n if (distance < minDistance) {\n minDistance = distance;\n result = element;\n }\n }\n\n return minDistance < payload.snapThreshold ? result : undefined;\n }\n\n private distanceToRectangle(point: IPoint, inputWithRect: IConnectorWithRect): number {\n const closestX = this.clamp(point.x, inputWithRect.fRect.x, inputWithRect.fRect.x + inputWithRect.fRect.width);\n const closestY = this.clamp(point.y, inputWithRect.fRect.y, inputWithRect.fRect.y + inputWithRect.fRect.height);\n\n const dx = point.x - closestX;\n const dy = point.y - closestY;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n private clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n }\n}\n","export class GetAllCanBeConnectedInputPositionsRequest {\n\n constructor(\n public fOutputId: string,\n ) {\n }\n}\n","import { FConnectorBase } from '../../../../f-connectors';\n\nexport class GetConnectorWithRectRequest {\n\n constructor(\n public connector: FConnectorBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetConnectorWithRectRequest } from './get-connector-with-rect-request';\nimport { IRoundedRect } from '@foblex/2d';\nimport { IConnectorWithRect } from './i-connector-with-rect';\nimport { GetElementRectInFlowRequest } from '../../../../domain';\n\n@Injectable()\n@FExecutionRegister(GetConnectorWithRectRequest)\nexport class GetConnectorWithRectExecution implements IExecution<GetConnectorWithRectRequest, IConnectorWithRect> {\n\n constructor(\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: GetConnectorWithRectRequest): IConnectorWithRect {\n return {\n fConnector: request.connector,\n fRect: this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(request.connector.hostElement))\n }\n }\n}\n","import { GetAllCanBeConnectedInputPositionsRequest } from './get-all-can-be-connected-input-positions.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetConnectorWithRectRequest, IConnectorWithRect } from '../get-connector-with-rect';\nimport { FNodeBase } from '../../../../f-node';\nimport { FConnectorBase } from '../../../../f-connectors';\nimport { FComponentsStore } from '../../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetAllCanBeConnectedInputPositionsRequest)\nexport class GetAllCanBeConnectedInputPositionsExecution\n implements IExecution<GetAllCanBeConnectedInputPositionsRequest, IConnectorWithRect[]> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fInputs(): FConnectorBase[] {\n return this.fComponentsStore.fInputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(payload: GetAllCanBeConnectedInputPositionsRequest): IConnectorWithRect[] {\n return this.getCanBeConnectedInputs(this.getOutput(payload.fOutputId)!).map((x) => {\n return this.fMediator.send(new GetConnectorWithRectRequest(x));\n });\n }\n\n private getOutput(fId: string): FConnectorBase | undefined {\n return this.findOutputById(fId) || this.findOutletById(fId);\n }\n\n private findOutputById(fId: string): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === fId);\n }\n\n private findOutletById(fId: string): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === fId);\n }\n\n private getCanBeConnectedInputs(output: FConnectorBase): FConnectorBase[] {\n return output.isSelfConnectable ?\n this.fInputs.filter((x) => x.canBeConnected) :\n this.filterSelfConnectable(this.fInputs.filter((x) => x.canBeConnected), output);\n }\n\n private filterSelfConnectable(inputs: FConnectorBase[], output: FConnectorBase): FConnectorBase[] {\n return inputs.filter((x) => this.getNodeOfConnector(output)?.hostElement !== this.getNodeOfConnector(x)?.hostElement);\n }\n\n private getNodeOfConnector(connector: FConnectorBase): FNodeBase | undefined {\n return this.fNodes.find((x) => x.isContains(connector.hostElement));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { CreateConnectionDragHandler } from '../../create-connection';\nimport { ReassignConnectionDragHandler } from '../../reassign-connection';\n\nexport class GetInputUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler\n ) {\n }\n}\n","import { IPoint, Point } from '@foblex/2d';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { Injectable } from '@angular/core';\nimport { BrowserService } from '@foblex/platform';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FConnectorBase } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { CreateConnectionDragHandler } from '../../create-connection';\nimport { ReassignConnectionDragHandler } from '../../reassign-connection';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\n\n@Injectable()\n@FExecutionRegister(GetInputUnderPointerRequest)\nexport class GetInputUnderPointerExecution\n implements IExecution<GetInputUnderPointerRequest, FConnectorBase | undefined> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fInputs(): FConnectorBase[] {\n return this.fComponentsStore.fInputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(payload: GetInputUnderPointerRequest): FConnectorBase | undefined {\n const output = (this.getOutput(payload.dragHandler) || this.getOutlet(payload.dragHandler))!;\n const inputsUnderPointer = this.getInputsUnderPointer(payload.event.getPosition(), payload.dragHandler);\n\n const connectors = output.isSelfConnectable ?\n inputsUnderPointer :\n this.filterSelfConnectable(inputsUnderPointer, output)\n return connectors.length > 0 ? connectors[0] : undefined;\n }\n\n private getOutput(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n\n private getInputsUnderPointer(position: IPoint, dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase[] {\n const result = this.getInputsInPosition(position);\n const closestInput = dragHandler.getClosetInput(this.getDifference(position));\n if (closestInput) {\n result.push(closestInput.fConnector);\n }\n const input = this.getFirstConnectableInputOfNodeInPosition(position);\n if (input) {\n result.push(input);\n }\n return result;\n }\n\n private getDifference(position: IPoint): IPoint {\n return Point.fromPoint(position).elementTransform(this.fComponentsStore.flowHost)\n .div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n }\n\n private getInputsInPosition(position: IPoint): FConnectorBase[] {\n return this.getElementsFromPoint(position).map((element) =>\n this.fInputs.find(x => x.isContains(element) && x.canBeConnected)\n ).filter((x) => !!x) as FConnectorBase[];\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n private getFirstConnectableInputOfNodeInPosition(position: IPoint): FConnectorBase | undefined {\n return this.getNodesInPosition(position).map((x) => {\n return this.fInputs.find((i) => x.isContains(i.hostElement) && i.canBeConnected);\n }).find((x) => !!x);\n }\n\n private getNodesInPosition(position: IPoint): FNodeBase[] {\n return this.getElementsFromPoint(position).map((element) => {\n return this.fNodes.find((x) => x.isContains(element) && x.fConnectOnNode)\n }).filter((x) => !!x) as FNodeBase[];\n }\n\n private filterSelfConnectable(inputs: FConnectorBase[], connector: FConnectorBase): FConnectorBase[] {\n return inputs.filter((x) => {\n const targetNode = this.fNodes.find((k) => k.isContains(x.hostElement));\n const sourceNode = this.fNodes.find((k) => k.isContains(connector!.hostElement));\n return sourceNode?.hostElement !== targetNode?.hostElement;\n })\n }\n}\n","export function createErrorClass<T>(impl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n };\n\n const constructor = impl(_super);\n constructor.prototype = Object.create(Error.prototype);\n constructor.prototype.constructor = constructor;\n return constructor;\n}\n","import { createErrorClass } from './create-error-class';\n\nexport interface NotFoundError extends Error {\n}\n\nexport interface NotFoundCtor {\n\n new(message?: string): NotFoundError;\n}\n\nexport const NotFoundError: NotFoundCtor = createErrorClass(\n (_super) =>\n function error(this: any, message: string) {\n _super(this);\n this.message = message || 'The requested resource was not found.';\n this.code = 404;\n }\n);\n","import { createErrorClass } from './create-error-class';\n\nexport interface ConflictError extends Error {\n}\n\nexport interface ConflictErrorCtor {\n\n new(message?: string): ConflictError;\n}\n\nexport const ConflictError: ConflictErrorCtor = createErrorClass(\n (_super) =>\n function error(this: any, message: string) {\n _super(this);\n this.message = message || 'Conflict error occurred.';\n this.code = 409;\n }\n);\n","import { NotFoundError } from './not-found-error';\nimport { ConflictError } from './conflict-error';\n\nexport function OutputNotFound(id: string): Error {\n return new NotFoundError(`Output with fOutputId ${ id } not found. Make sure there is no f-connection to a non-existent fOutput.`);\n}\n\nexport function InputNotFound(id: string): Error {\n return new NotFoundError(`Input with fInputId ${ id } not found. Make sure there is no f-connection to a non-existent fInput.`);\n}\n\nexport function RequiredOutput(): Error {\n return new ConflictError(`The fNode must contain at least one fOutput if there is an fOutlet`);\n}\n","import { Injectable } from '@angular/core';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { OutputNotFound } from '../../../../errors';\nimport { CreateConnectionDragHandler } from '../../create-connection';\nimport { ReassignConnectionDragHandler } from '../../reassign-connection';\nimport { FConnectorBase } from '../../../../f-connectors';\n\n@Injectable()\n@FValidatorRegister(GetInputUnderPointerRequest)\nexport class GetInputUnderPointerValidator implements IValidator<GetInputUnderPointerRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetInputUnderPointerRequest): boolean {\n let output = this.getOutput(request.dragHandler) || this.getOutlet(request.dragHandler);\n if (!output) {\n throw OutputNotFound(request.dragHandler.fConnection.fOutputId);\n }\n return true;\n }\n\n private getOutput(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n}\n","import { FindClosestInputUsingSnapThresholdExecution } from './find-closest-input-using-snap-threshold';\nimport { GetAllCanBeConnectedInputPositionsExecution } from './get-all-can-be-connected-input-positions';\nimport { GetConnectorWithRectExecution } from './get-connector-with-rect';\nimport { GetInputUnderPointerExecution, GetInputUnderPointerValidator } from './get-input-under-pointer';\n\nexport const CONNECTION_DRAG_COMMON_PROVIDERS = [\n\n FindClosestInputUsingSnapThresholdExecution,\n\n GetAllCanBeConnectedInputPositionsExecution,\n\n GetConnectorWithRectExecution,\n\n GetInputUnderPointerExecution,\n GetInputUnderPointerValidator\n];\n","export enum EFConnectableSide {\n\n LEFT = 'left',\n\n RIGHT = 'right',\n\n TOP = 'top',\n\n BOTTOM = 'bottom',\n\n AUTO = 'auto',\n}\n","import { RectExtensions } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { CalculateConnectorConnectableSideRequest } from './calculate-connector-connectable-side-request';\nimport { EFConnectableSide } from '../../e-f-connectable-side';\n\nexport class CalculateConnectorConnectableSideHandler\n implements IHandler<CalculateConnectorConnectableSideRequest, EFConnectableSide> {\n\n public handle(request: CalculateConnectorConnectableSideRequest): EFConnectableSide {\n let result: EFConnectableSide;\n\n if (request.fConnector._fConnectableSide === EFConnectableSide.AUTO) {\n result = this.getSideByDelta(request.fConnector.hostElement, request.fNodeHost);\n } else {\n result = request.fConnector._fConnectableSide;\n }\n return result;\n }\n\n private getSideByDelta(fConnectorHost: HTMLElement | SVGElement, fNodeHost: HTMLElement | SVGElement): EFConnectableSide {\n let result: EFConnectableSide;\n\n const childRect = RectExtensions.fromElement(fConnectorHost);\n const parentRect = fNodeHost.getBoundingClientRect();\n\n const deltaLeft = childRect.gravityCenter.x - parentRect.left;\n const deltaRight = parentRect.right - childRect.gravityCenter.x;\n const deltaTop = childRect.gravityCenter.y - parentRect.top;\n const deltaBottom = parentRect.bottom - childRect.gravityCenter.y;\n\n const minDelta = Math.min(deltaLeft, deltaRight, deltaTop, deltaBottom);\n\n if (minDelta === deltaLeft) {\n result = EFConnectableSide.LEFT;\n } else if (minDelta === deltaRight) {\n result = EFConnectableSide.RIGHT;\n } else if (minDelta === deltaTop) {\n result = EFConnectableSide.TOP;\n } else {\n result = EFConnectableSide.BOTTOM;\n }\n\n return result;\n }\n}\n","import { FConnectorBase } from '../../f-connector-base';\n\nexport class CalculateConnectorConnectableSideRequest {\n\n constructor(\n public fConnector: FConnectorBase,\n public fNodeHost: HTMLElement | SVGElement\n ) {\n }\n}\n","import { Subject } from 'rxjs';\nimport { EFConnectableSide } from './e-f-connectable-side';\nimport { IHasStateChanges } from '../i-has-state-changes';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport abstract class FConnectorBase implements IHasStateChanges, IHasHostElement {\n\n public abstract id: string;\n\n public abstract disabled: boolean;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract canBeConnected: boolean;\n\n public abstract isConnected: boolean;\n\n public isSelfConnectable: boolean = true;\n\n public fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_INPUT = new InjectionToken<FNodeInputBase>('F_NODE_INPUT');\n\n@Directive()\nexport abstract class FNodeInputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public isConnected: boolean = false;\n\n public get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export function isGroup(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fGroup]');\n}\n\n","export function isNode(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNode]');\n}\n\n","import {\n Directive, ElementRef, InjectionToken\n} from \"@angular/core\";\nimport { IHasHostElement } from '../../i-has-host-element';\n\nexport const F_DRAG_HANDLE: InjectionToken<FDragHandleDirective> = new InjectionToken<FDragHandleDirective>('F_DRAG_HANDLE');\n\n@Directive({\n selector: \"[fDragHandle]\",\n host: {\n class: \"f-drag-handle f-component\"\n },\n providers: [ { provide: F_DRAG_HANDLE, useExisting: FDragHandleDirective } ],\n})\nexport class FDragHandleDirective implements IHasHostElement {\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","export enum EFResizeHandleType {\n\n LEFT_TOP = 'left-top',\n\n RIGHT_TOP = 'right-top',\n\n LEFT_BOTTOM = 'left-bottom',\n\n RIGHT_BOTTOM = 'right-bottom',\n}\n","import {\n Directive, ElementRef, HostBinding, InjectionToken, Input\n} from \"@angular/core\";\nimport { EFResizeHandleType } from './e-f-resize-handle-type';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { castToEnum } from '@foblex/utils';\n\nexport const F_RESIZE_HANDLE: InjectionToken<FResizeHandleDirective> = new InjectionToken<FResizeHandleDirective>('F_RESIZE_HANDLE');\n\n@Directive({\n selector: \"[fResizeHandle]\",\n host: {\n class: `f-resize-handle f-component`,\n '[attr.data-f-resize-handle-type]': 'type',\n },\n providers: [ { provide: F_RESIZE_HANDLE, useExisting: FResizeHandleDirective } ],\n})\nexport class FResizeHandleDirective implements IHasHostElement {\n\n public _type: EFResizeHandleType = EFResizeHandleType.LEFT_TOP;\n @Input('fResizeHandleType')\n public set type(type: EFResizeHandleType) {\n this._type = castToEnum(type, 'fResizeHandleType', EFResizeHandleType);\n }\n public get type(): EFResizeHandleType {\n return this._type;\n }\n\n @HostBinding('class')\n public get typeClass(): string {\n return `f-resize-handle-${ EFResizeHandleType[ this.type.toUpperCase() as keyof typeof EFResizeHandleType ] }`;\n }\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","import {\n Directive, ElementRef, InjectionToken, Input\n} from \"@angular/core\";\nimport { IHasHostElement } from '../../i-has-host-element';\n\n// export const F_ROTATE_HANDLE: InjectionToken<FRotateHandleDirective> = new InjectionToken<FRotateHandleDirective>('F_ROTATE_HANDLE');\n//\n// @Directive({\n// selector: \"[fRotateHandle]\",\n// host: {\n// class: `f-rotate-handle f-component`,\n// '[class.f-rotate-handle-disabled]': 'disabled',\n// },\n// providers: [ { provide: F_ROTATE_HANDLE, useExisting: FRotateHandleDirective } ],\n// })\nexport class FRotateHandleDirective implements IHasHostElement {\n\n private isDisabled: boolean = false;\n // @Input('fRotateHandleDisabled')\n // public set disabled(isDisabled: boolean | undefined | string) {\n // this.isDisabled = BooleanExtensions.castToBoolean(isDisabled);\n // }\n public get disabled(): boolean {\n return this.isDisabled;\n }\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { ICanChangeSelection } from './i-can-change-selection';\n\nexport const F_SELECTED_CLASS = 'f-selected';\n\ntype CanChangeSelectionConstructor = Constructor<ICanChangeSelection> & AbstractConstructor<ICanChangeSelection>;\n\nexport function mixinChangeSelection<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeSelectionConstructor & T;\nexport function mixinChangeSelection<T extends Constructor<IHasHostElement>>(base: T): CanChangeSelectionConstructor & T {\n return class extends base {\n\n public fId: string = '';\n\n public fSelectionDisabled: boolean = false;\n\n public deselect(): void {\n this.deselectChild?.();\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.selectChild?.();\n if (!this.isSelected()) {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n\n public selectChild(): void {\n }\n\n public deselectChild(): void {\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { ICanChangeVisibility } from './i-can-change-visibility';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { AbstractConstructor, Constructor } from '../constructor';\n\ntype CanChangeVisibilityConstructor = Constructor<ICanChangeVisibility> & AbstractConstructor<ICanChangeVisibility>;\n\nexport function mixinChangeVisibility<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T;\nexport function mixinChangeVisibility<T extends Constructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T {\n return class extends base {\n\n public show(): void {\n this.hostElement.style.display = \"unset\";\n }\n\n public hide(): void {\n this.hostElement.style.display = \"none\";\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport { IHasStateChanges } from '../i-has-state-changes';\nimport { FConnectorBase } from '../f-connectors';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { ICanChangeSelection, mixinChangeSelection } from '../mixins';\n\nexport const F_NODE = new InjectionToken<FNodeBase>('F_NODE');\n\nconst MIXIN_BASE = mixinChangeSelection(\n class {\n constructor(\n public hostElement: HTMLElement\n ) {\n }\n });\n\nexport abstract class FNodeBase extends MIXIN_BASE implements IHasStateChanges, ICanChangeSelection, IHasHostElement {\n\n public abstract override fId: string;\n\n public abstract fParentId: string | null | undefined;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n\n public abstract positionChange: EventEmitter<IPoint>;\n\n public abstract position: IPoint;\n\n protected _position: IPoint = PointExtensions.initialize();\n\n\n public abstract sizeChange: EventEmitter<IRect>;\n\n public abstract size: ISize;\n\n protected _size: ISize | undefined;\n\n\n public abstract fDraggingDisabled: boolean;\n\n public abstract override fSelectionDisabled: boolean;\n\n public abstract fConnectOnNode: boolean;\n\n public fCanBeResizedByChild: boolean = true;\n\n public abstract fIncludePadding: boolean;\n\n public abstract refresh(): void;\n\n public abstract connectors: FConnectorBase[];\n\n public abstract addConnector(connector: FConnectorBase): void;\n\n public abstract removeConnector(connector: FConnectorBase): void;\n\n protected abstract setStyle(name: string, value: string): void;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public redraw(): void {\n if (this.size) {\n this.setStyle('width', '' + this.size.width + 'px');\n this.setStyle('height', '' + this.size.height + 'px');\n }\n\n this.setStyle('transform', `translate(${ this.position.x }px,${ this.position.y }px)`);\n }\n\n public updatePosition(position: IPoint): void {\n this._position = position;\n }\n\n public updateSize(value: ISize): void {\n this._size = value;\n }\n}\n","import { Observable } from 'rxjs';\n\nexport class FResizeObserver extends Observable<ResizeObserverEntry[]> {\n\n constructor(element: HTMLElement) {\n super(subscriber => {\n const observer = new ResizeObserver(entries => {\n subscriber.next(entries);\n });\n\n observer.observe(element);\n\n return function unsubscribe() {\n observer.unobserve(element);\n observer.disconnect();\n }\n });\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { merge, Subscription } from 'rxjs';\nimport { startWith, debounceTime } from 'rxjs/operators';\nimport { FResizeObserver } from './f-resize-observer';\nimport { FComponentsStore } from '../f-storage';\nimport {\n CalculateConnectorConnectableSideHandler,\n CalculateConnectorConnectableSideRequest,\n FConnectorBase\n} from '../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { EmitTransformChangesRequest } from '../domain';\nimport { BrowserService } from '@foblex/platform';\nimport { IHasHostElement } from '../i-has-host-element';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fGroup]\",\n exportAs: \"fComponent\",\n host: {\n '[attr.data-f-group-id]': 'fId',\n class: \"f-group f-component\",\n '[class.f-group-dragging-disabled]': 'fDraggingDisabled',\n '[class.f-group-selection-disabled]': 'fSelectionDisabled',\n },\n providers: [\n { provide: F_NODE, useExisting: FGroupDirective }\n ],\n})\nexport class FGroupDirective extends FNodeBase\n implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input('fGroupId')\n public override fId: string = `f-group-${ uniqueId++ }`;\n\n @Input('fGroupParentId')\n public override fParentId: string | null | undefined = null;\n\n @Input('fGroupPosition')\n public override set position(value: IPoint) {\n this._position = PointExtensions.castToPoint(value);\n this.refresh();\n }\n public override get position(): IPoint {\n return this._position;\n }\n @Output('fGroupPositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n @Input('fGroupSize')\n public override set size(value: ISize) {\n this._size = value;\n this.refresh();\n }\n public override get size(): ISize {\n return this._size!;\n }\n @Output('fGroupSizeChange')\n public override sizeChange: EventEmitter<IRect> = new EventEmitter<IRect>();\n\n @Input('fGroupDraggingDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input('fGroupSelectionDisabled')\n public override fSelectionDisabled: boolean = false;\n\n @Input()\n public override fIncludePadding: boolean = true;\n\n @Input()\n public override fConnectOnNode: boolean = true;\n\n public override connectors: FConnectorBase[] = [];\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n super(elementReference.nativeElement);\n }\n\n public ngOnInit(): void {\n this.setStyle('position', 'absolute');\n this.setStyle('transform-origin', 'center');\n this.setStyle('user-select', 'none');\n this.setStyle('pointer-events', 'all');\n this.setStyle('left', '0');\n this.setStyle('top', '0');\n super.redraw();\n this.fComponentsStore.addComponent(this.fComponentsStore.fNodes, this);\n }\n\n protected override setStyle(styleName: string, value: string) {\n this.renderer.setStyle(this.hostElement, styleName, value);\n }\n\n public override redraw(): void {\n super.redraw();\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n return merge(new FResizeObserver(this.hostElement as HTMLElement), this.stateChanges).pipe(\n debounceTime(10), startWith(null)\n ).subscribe(() => {\n this.connectors.forEach((fConnector: FConnectorBase) => {\n fConnector.fConnectableSide = new CalculateConnectorConnectableSideHandler().handle(\n new CalculateConnectorConnectableSideRequest(fConnector, this.hostElement)\n );\n });\n this.fComponentsStore.componentDataChanged();\n });\n }\n\n public override addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.stateChanges.next();\n }\n\n public override removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.stateChanges.next();\n }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fNodes, this);\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\nimport { merge, Subscription } from 'rxjs';\nimport { startWith, debounceTime } from 'rxjs/operators';\nimport { FResizeObserver } from './f-resize-observer';\nimport { FComponentsStore } from '../f-storage';\nimport {\n CalculateConnectorConnectableSideHandler,\n CalculateConnectorConnectableSideRequest,\n FConnectorBase\n} from '../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { EmitTransformChangesRequest } from '../domain';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { IHasHostElement } from '../i-has-host-element';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNode]\",\n exportAs: \"fComponent\",\n host: {\n '[attr.data-f-node-id]': 'fId',\n class: \"f-node f-component\",\n '[class.f-node-dragging-disabled]': 'fDraggingDisabled',\n '[class.f-node-selection-disabled]': 'fSelectionDisabled',\n },\n providers: [\n { provide: F_NODE, useExisting: FNodeDirective }\n ],\n})\nexport class FNodeDirective extends FNodeBase implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input('fNodeId')\n public override fId: string = `f-node-${ uniqueId++ }`;\n\n @Input('fNodeParentId')\n public override fParentId: string | null | undefined = null;\n\n @Input('fNodePosition')\n public override set position(value: IPoint) {\n this._position = PointExtensions.castToPoint(value);\n this.refresh();\n }\n\n public override get position(): IPoint {\n return this._position;\n }\n\n @Output('fNodePositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n @Input('fNodeSize')\n public override set size(value: ISize) {\n this._size = value;\n this.refresh();\n }\n\n public override get size(): ISize {\n return this._size!;\n }\n\n @Output('fNodeSizeChange')\n public override sizeChange: EventEmitter<IRect> = new EventEmitter<IRect>();\n\n @Input('fNodeDraggingDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input('fNodeSelectionDisabled')\n public override fSelectionDisabled: boolean = false;\n\n @Input()\n public override fIncludePadding: boolean = true;\n\n //TODO: Add ability to connect to first connectable input if node is under pointer\n @Input()\n public override fConnectOnNode: boolean = true;\n\n public override connectors: FConnectorBase[] = [];\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n super(elementReference.nativeElement);\n }\n\n public ngOnInit(): void {\n this.setStyle('position', 'absolute');\n this.setStyle('transform-origin', 'center');\n this.setStyle('user-select', 'none');\n this.setStyle('pointer-events', 'all');\n this.setStyle('left', '0');\n this.setStyle('top', '0');\n super.redraw();\n this.fComponentsStore.addComponent(this.fComponentsStore.fNodes, this);\n }\n\n protected override setStyle(styleName: string, value: string) {\n this.renderer.setStyle(this.hostElement, styleName, value);\n }\n\n public override redraw(): void {\n super.redraw();\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n return merge(new FResizeObserver(this.hostElement as HTMLElement), this.stateChanges).pipe(\n debounceTime(10), startWith(null)\n ).subscribe(() => {\n this.connectors.forEach((fConnector: FConnectorBase) => {\n fConnector.fConnectableSide = new CalculateConnectorConnectableSideHandler().handle(\n new CalculateConnectorConnectableSideRequest(fConnector, this.hostElement)\n );\n });\n this.fComponentsStore.componentDataChanged();\n });\n }\n\n public override addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.stateChanges.next();\n }\n\n public override removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.stateChanges.next();\n }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fNodes, this);\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","import { FNodeDirective } from './f-node.directive';\nimport { FDragHandleDirective } from './f-drag-handle';\nimport { FResizeHandleDirective } from './f-resize-handle';\nimport { FGroupDirective } from './f-group.directive';\n\nexport const F_NODE_PROVIDERS = [\n\n FGroupDirective,\n\n FNodeDirective,\n\n FDragHandleDirective,\n\n FResizeHandleDirective,\n];\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { F_NODE_INPUT, FNodeInputBase } from './f-node-input-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { FNodeBase, F_NODE } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\nimport { castToBoolean, castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeInput]\",\n exportAs: 'fNodeInput',\n host: {\n '[attr.data-f-input-id]': 'id',\n class: \"f-component f-node-input\",\n '[class.f-node-input-multiple]': 'multiple',\n '[class.f-node-input-disabled]': 'disabled',\n '[class.f-node-input-not-connectable]': '!canBeConnected',\n },\n providers: [ { provide: F_NODE_INPUT, useExisting: FNodeInputDirective } ],\n})\nexport class FNodeInputDirective extends FNodeInputBase implements OnInit, OnDestroy {\n\n @Input('fInputId')\n public override id: any = `f-node-input-${ uniqueId++ }`;\n\n @Input('fInputMultiple')\n public override multiple: boolean = true;\n\n @Input('fInputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n @Input('fInputConnectableSide')\n public set _fSide(value: EFConnectableSide | string) {\n this._fConnectableSide = castToEnum(value, 'fInputConnectableSide', EFConnectableSide);\n this.fNode.refresh();\n }\n\n public get _fSide(): EFConnectableSide {\n return this._fConnectableSide;\n }\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override isConnected: boolean = false;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n this.fComponentsStore.addComponent(this.fComponentsStore.fInputs, this);\n this.fNode.addConnector(this);\n }\n\n public override setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n this.hostElement.classList.toggle('f-node-input-connected', isConnected);\n }\n\n public ngOnDestroy(): void {\n this.fNode.removeConnector(this);\n this.fComponentsStore.removeComponent(this.fComponentsStore.fInputs, this);\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_OUTLET = new InjectionToken<FNodeOutletBase>('F_NODE_OUTLET');\n\n@Directive()\nexport abstract class FNodeOutletBase extends FConnectorBase {\n\n public abstract isConnectionFromOutlet: boolean;\n\n public override isConnected: boolean = false;\n\n private outputs: FConnectorBase[] = [];\n\n public get canBeConnected(): boolean {\n return !this.disabled && this.outputs.some((output) => output.canBeConnected);\n }\n\n public setOutputs(outputs: FConnectorBase[]): void {\n this.outputs = outputs;\n }\n}\n","export function isNodeOutlet(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutlet]');\n}\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { F_NODE_OUTLET, FNodeOutletBase } from './f-node-outlet-base';\nimport { F_NODE, FNodeBase } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { castToBoolean } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutlet]\",\n exportAs: 'fNodeOutlet',\n host: {\n '[attr.data-f-outlet-id]': 'id',\n class: \"f-component f-node-outlet\",\n '[class.f-node-outlet-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective } ],\n})\nexport class FNodeOutletDirective extends FNodeOutletBase implements OnInit, OnDestroy {\n\n @Input('fOutletId')\n public override id: string = `f-node-outlet-${ uniqueId++ }`;\n\n @Input('fOutletDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n public override fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n @Input()\n public override isConnectionFromOutlet: boolean = false\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n if (!this.fNode) {\n throw new Error('fNodeOutlet must be inside fNode Directive');\n }\n this.fComponentsStore.addComponent(this.fComponentsStore.fOutlets, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fOutlets, this);\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_OUTPUT = new InjectionToken<FNodeOutputBase>('F_NODE_OUTPUT');\n\n@Directive()\nexport abstract class FNodeOutputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public isConnected: boolean = false;\n\n public override get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export function isNodeOutput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutput]');\n}\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FNodeOutputBase, F_NODE_OUTPUT } from './f-node-output-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { F_NODE, FNodeBase } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\nimport { castToBoolean, castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutput]\",\n exportAs: 'fNodeOutput',\n host: {\n '[attr.data-f-output-id]': 'id',\n class: \"f-component f-node-output\",\n '[class.f-node-output-multiple]': 'multiple',\n '[class.f-node-output-disabled]': 'disabled',\n '[class.f-node-output-not-connectable]': '!canBeConnected',\n '[class.f-node-output-self-connectable]': 'isSelfConnectable',\n },\n providers: [ { provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective } ],\n})\nexport class FNodeOutputDirective extends FNodeOutputBase implements OnInit, OnDestroy {\n\n @Input('fOutputId')\n public override id: string = `f-node-output-${ uniqueId++ }`;\n\n @Input('fOutputMultiple')\n public override multiple: boolean = false;\n\n @Input('fOutputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n @Input('fOutputConnectableSide')\n public set _fSide(value: EFConnectableSide | string) {\n this._fConnectableSide = castToEnum(value, 'fOutputConnectableSide', EFConnectableSide);\n this.fNode.refresh();\n }\n\n public get _fSide(): EFConnectableSide {\n return this._fConnectableSide;\n }\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override isConnected: boolean = false;\n\n @Input()\n public override isSelfConnectable: boolean = true;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n if (!this.fNode) {\n throw new Error('fNodeOutput must be inside fNode Directive');\n }\n this.fComponentsStore.addComponent(this.fComponentsStore.fOutputs, this);\n this.fNode.addConnector(this);\n }\n\n public override setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n this.hostElement.classList.toggle('f-node-output-connected', isConnected);\n }\n\n public ngOnDestroy(): void {\n this.fNode.removeConnector(this);\n this.fComponentsStore.removeComponent(this.fComponentsStore.fOutputs, this);\n }\n}\n","import { FNodeInputDirective } from './f-node-input';\nimport { FNodeOutletDirective } from './f-node-outlet';\nimport { FNodeOutputDirective } from './f-node-output';\n\nexport const F_CONNECTORS_PROVIDERS = [\n\n FNodeInputDirective,\n\n FNodeOutletDirective,\n\n FNodeOutputDirective\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { FNodeOutletBase } from '../../../../f-connectors';\n\nexport class GetCanBeConnectedOutputByOutletRequest {\n\n constructor(\n public outlet: FNodeOutletBase\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { GetCanBeConnectedOutputByOutletRequest } from './get-can-be-connected-output-by-outlet.request';\nimport { RequiredOutput } from '../../../../errors';\nimport { FExecutionRegister } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetCanBeConnectedOutputByOutletRequest)\nexport class GetCanBeConnectedOutputByOutletExecution\n implements IHandler<GetCanBeConnectedOutputByOutletRequest, FConnectorBase | undefined> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fOutputs(): FConnectorBase[] {\n return this.fComponentsStore.fOutputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetCanBeConnectedOutputByOutletRequest): FConnectorBase | undefined {\n const outputs = this.getConnectableOutputs(this.getNode(request.outlet));\n if (!outputs.length) {\n throw RequiredOutput();\n }\n return outputs.length > 0 ? outputs[ 0 ] : undefined;\n }\n\n private getConnectableOutputs(node: FNodeBase): FConnectorBase[] {\n return this.fOutputs.filter((x) => {\n return node.isContains(x.hostElement) && x.canBeConnected;\n });\n }\n\n private getNode(outlet: FNodeOutletBase): FNodeBase {\n return this.fNodes.find((x) => x.isContains(outlet.hostElement))!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetCanBeConnectedOutputByOutletRequest } from './get-can-be-connected-output-by-outlet.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../f-node';\nimport { FComponentsStore } from '../../../../f-storage';\n\n@Injectable()\n@FValidatorRegister(GetCanBeConnectedOutputByOutletRequest)\nexport class GetCanBeConnectedOutputByOutletValidator implements IValidator<GetCanBeConnectedOutputByOutletRequest> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetCanBeConnectedOutputByOutletRequest): boolean {\n return !!this.fNodes.find((x) => x.isContains(request.outlet.hostElement));\n }\n}\n","import { GetCanBeConnectedOutputByOutletExecution } from './get-can-be-connected-output-by-outlet.execution';\nimport { GetCanBeConnectedOutputByOutletValidator } from './get-can-be-connected-output-by-outlet.validator';\n\nexport const GET_CAN_BE_CONNECTED_OUTPUT_BY_OUTLET_PROVIDERS = [\n\n GetCanBeConnectedOutputByOutletExecution,\n\n GetCanBeConnectedOutputByOutletValidator,\n];\n","import { IPoint } from '@foblex/2d';\n\nexport class FCreateConnectionEvent {\n\n constructor(\n public fOutputId: string,\n public fInputId: string | undefined,\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase, isNodeOutlet } from '../../../../f-connectors';\nimport { CreateConnectionFinalizeRequest } from './create-connection-finalize.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { OutputNotFound } from '../../../../errors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../get-can-be-connected-output-by-outlet';\nimport { FCreateConnectionEvent } from '../f-create-connection.event';\nimport { CreateConnectionDragHandler } from '../create-connection.drag-handler';\nimport { GetInputUnderPointerRequest } from '../../common';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFinalizeRequest)\nexport class CreateConnectionFinalizeExecution\n implements IHandler<CreateConnectionFinalizeRequest, void> {\n\n private get dragHandler(): CreateConnectionDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as CreateConnectionDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFinalizeRequest): void {\n this.emitEvent(request.event);\n this.dragHandler.complete();\n }\n\n private getTargetOutput(output: FConnectorBase | undefined): FConnectorBase {\n if (!output) {\n throw OutputNotFound(this.dragHandler.fConnection.fOutputId);\n }\n return isNodeOutlet(output.hostElement) ? this.fMediator.send<FNodeOutputBase>(\n new GetCanBeConnectedOutputByOutletRequest(output as FNodeOutletBase)\n ) : output;\n }\n\n private getOutput(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === this.dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === this.dragHandler.fConnection.fOutputId);\n }\n\n private emitEvent(event: IPointerEvent): void {\n this.fComponentsStore.fDraggable?.fCreateConnection.emit(\n new FCreateConnectionEvent(\n this.getTargetOutput(this.getOutput() || this.getOutlet()).id,\n this.getInputUnderPointer(event)?.id,\n event.getPosition()\n )\n );\n }\n\n private getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this.fMediator.send<FConnectorBase | undefined>(new GetInputUnderPointerRequest(event, this.dragHandler));\n }\n}\n","import { IDraggableItem } from '../../i-draggable-item';\nimport { GetConnectionLineRequest } from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport { EFConnectableSide, FConnectorBase } from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { RoundedRect, ILine, IPoint, PointExtensions, RectExtensions, Point, } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport {\n FindClosestInputUsingSnapThresholdRequest,\n GetAllCanBeConnectedInputPositionsRequest, GetConnectorWithRectRequest,\n IConnectorWithRect\n} from '../common';\n\nexport class CreateConnectionDragHandler implements IDraggableItem {\n\n private toConnectorRect: RoundedRect = new RoundedRect();\n\n public get fConnection(): FConnectionBase {\n return this.fComponentsStore.fTempConnection!;\n }\n\n private get fSnapConnection(): FSnapConnectionComponent | undefined {\n return this.fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private fOutputWithRect!: IConnectorWithRect;\n\n private canBeConnectedInputs: IConnectorWithRect[] = [];\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n private fOutput: FConnectorBase,\n private onPointerDownPosition: IPoint,\n ) {\n }\n\n public initialize(): void {\n if (this.fSnapConnection) {\n this.fSnapConnection.fOutputId = this.fOutput.id;\n this.fSnapConnection.initialize();\n this.canBeConnectedInputs = this.fMediator.send<IConnectorWithRect[]>(\n new GetAllCanBeConnectedInputPositionsRequest(this.fOutput.id)\n );\n }\n this.fConnection.fOutputId = this.fOutput.id;\n this.fConnection.initialize();\n\n\n this.fOutputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.fOutput));\n\n this.toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.onPointerDownPosition.x, this.onPointerDownPosition.y)\n );\n\n this.fConnection.show();\n this.move(PointExtensions.initialize());\n }\n\n public move(difference: IPoint): void {\n this.drawTempConnection(this.toConnectorRect.addPoint(difference));\n this.drawSnapConnection(this.getClosetInput(difference));\n }\n\n private drawTempConnection(fInputRect: RoundedRect): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputRect,\n this.fConnection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n EFConnectableSide.TOP,\n )\n );\n\n this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, EFConnectableSide.TOP);\n this.fConnection.redraw();\n }\n\n private drawSnapConnection(fInputWithRect: IConnectorWithRect | undefined): void {\n if (fInputWithRect) {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputWithRect.fRect,\n this.fSnapConnection!.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fInputWithRect.fConnector.fConnectableSide\n )\n );\n this.fSnapConnection!.show();\n this.fSnapConnection!.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);\n this.fSnapConnection!.redraw();\n } else {\n this.fSnapConnection?.hide();\n }\n }\n\n public getClosetInput(difference: IPoint): IConnectorWithRect | undefined {\n return this.fMediator.send<IConnectorWithRect | undefined>(\n new FindClosestInputUsingSnapThresholdRequest(\n Point.fromPoint(this.toConnectorRect).add(difference),\n this.canBeConnectedInputs,\n this.fSnapConnection!.fSnapThreshold\n )\n );\n }\n\n public complete(): void {\n this.fConnection.redraw();\n this.fConnection.hide();\n this.fSnapConnection?.hide();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionFinalizeRequest } from './create-connection-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../create-connection.drag-handler';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionFinalizeRequest)\nexport class CreateConnectionFinalizeValidator implements IValidator<CreateConnectionFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CreateConnectionFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CreateConnectionDragHandler\n );\n }\n}\n","import { CreateConnectionFinalizeExecution } from './create-connection-finalize.execution';\nimport { CreateConnectionFinalizeValidator } from './create-connection-finalize.validator';\nexport const CREATE_CONNECTION_FINALIZE_PROVIDERS = [\n\n CreateConnectionFinalizeExecution,\n\n CreateConnectionFinalizeValidator,\n];\n","import { IPoint } from '@foblex/2d';\nimport { FConnectorBase } from '../../../../../f-connectors';\n\nexport class CreateConnectionDragHandlerRequest {\n\n constructor(\n public onPointerDownPosition: IPoint,\n public connector: FConnectorBase\n ) {\n }\n}\n","import { ITransformModel, Point } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionDragHandlerRequest } from './create-connection-drag-handler.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../../create-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionDragHandlerRequest)\nexport class CreateConnectionDragHandlerExecution\n implements IHandler<CreateConnectionDragHandlerRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionDragHandlerRequest): void {\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n const positionRelativeToFlowComponent = Point.fromPoint(request.onPointerDownPosition)\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.onPointerDownPosition = positionRelativeToFlowComponent;\n\n const positionRelativeToCanvasComponent = Point.fromPoint(positionRelativeToFlowComponent).mult(this.transform.scale)\n .sub(this.transform.position).sub(this.transform.scaledPosition).div(this.transform.scale);\n\n this.fDraggableDataContext.draggableItems = [\n new CreateConnectionDragHandler(this.fMediator, this.fComponentsStore, request.connector, positionRelativeToCanvasComponent)\n ];\n }\n}\n","import { CreateConnectionDragHandlerExecution } from './create-connection-drag-handler.execution';\n\nexport const CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS = [\n\n CreateConnectionDragHandlerExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFromOutletPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutletPreparationRequest } from './create-connection-from-outlet-preparation.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase } from '../../../../../f-connectors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../../get-can-be-connected-output-by-outlet';\nimport { RequiredOutput } from '../../../../../errors';\nimport { CreateConnectionDragHandlerRequest } from '../create-connection-drag-handler';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFromOutletPreparationRequest)\nexport class CreateConnectionFromOutletPreparationExecution\n implements IHandler<CreateConnectionFromOutletPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFromOutletPreparationRequest): void {\n const { event } = request;\n const node = this.fComponentsStore.findNode(event.targetElement)!;\n\n const outlet = this.fComponentsStore.fOutlets.find((x) => {\n return x.hostElement.contains(event.targetElement);\n });\n if (!outlet) {\n throw new Error('Outlet not found');\n }\n const nodeOutputs = this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n (outlet as FNodeOutletBase).setOutputs(nodeOutputs);\n\n if (outlet.canBeConnected) {\n\n if ((outlet as FNodeOutletBase).isConnectionFromOutlet) {\n\n this.createDragHandler(event.getPosition(), outlet);\n } else {\n const output = this.fMediator.send<FNodeOutputBase>(\n new GetCanBeConnectedOutputByOutletRequest(outlet as FNodeOutletBase)\n );\n if (!output) {\n throw RequiredOutput();\n }\n this.createDragHandler(event.getPosition(), output);\n }\n }\n }\n\n private createDragHandler(position: IPoint, output: FConnectorBase): void {\n this.fMediator.send(new CreateConnectionDragHandlerRequest(position, output));\n }\n}\n","import { CreateConnectionFromOutletPreparationExecution } from './create-connection-from-outlet-preparation.execution';\n\nexport const CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS = [\n\n CreateConnectionFromOutletPreparationExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFromOutputPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation.request';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { CreateConnectionDragHandlerRequest } from '../create-connection-drag-handler';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFromOutputPreparationRequest)\nexport class CreateConnectionFromOutputPreparationExecution\n implements IHandler<CreateConnectionFromOutputPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFromOutputPreparationRequest): void {\n const { event } = request;\n\n const output = this.fComponentsStore.fOutputs.find((x) => {\n return x.hostElement.contains(event.targetElement);\n });\n if (!output) {\n throw new Error('Output not found');\n }\n if (output.canBeConnected) {\n this.createDragHandler(event.getPosition(), output);\n }\n }\n\n private createDragHandler(position: IPoint, output: FConnectorBase): void {\n this.fMediator.send(new CreateConnectionDragHandlerRequest(position, output));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation.request';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FNodeBase } from '../../../../../f-node';\nimport { FConnectorBase, isNodeOutput } from '../../../../../f-connectors';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionFromOutputPreparationRequest)\nexport class CreateConnectionFromOutputPreparationValidator implements IValidator<CreateConnectionFromOutputPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: CreateConnectionFromOutputPreparationRequest): boolean {\n return this.isNodeOutput(request.event.targetElement, this.getNode(request.event));\n }\n\n private getNode(event: IPointerEvent): FNodeBase {\n return this.fComponentsStore.findNode(event.targetElement)!;\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n return isNodeOutput(targetElement) && !this.getOutlets(node).length;\n }\n\n private getOutlets(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { CreateConnectionFromOutputPreparationExecution } from './create-connection-from-output-preparation.execution';\nimport { CreateConnectionFromOutputPreparationValidator } from './create-connection-from-output-preparation.validator';\n\nexport const CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS = [\n\n CreateConnectionFromOutputPreparationExecution,\n\n CreateConnectionFromOutputPreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, isNodeOutlet, isNodeOutput } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { CreateConnectionPreparationRequest } from './create-connection-preparation.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { CreateConnectionFromOutletPreparationRequest } from './create-connection-from-outlet-preparation';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionPreparationRequest)\nexport class CreateConnectionPreparationExecution\n implements IHandler<CreateConnectionPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionPreparationRequest): void {\n if (isNodeOutlet(request.event.targetElement)) {\n this.fMediator.send<void>(new CreateConnectionFromOutletPreparationRequest(request.event));\n } else if (this.isNodeOutput(request.event.targetElement, this.getNode(request.event))) {\n this.fMediator.send<void>(new CreateConnectionFromOutputPreparationRequest(request.event));\n }\n }\n\n private getNode(event: IPointerEvent): FNodeBase {\n return this.fComponentsStore.findNode(event.targetElement)!;\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n return isNodeOutput(targetElement) && !this.getOutlets(node).length;\n }\n\n private getOutlets(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionPreparationRequest } from './create-connection-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../f-node';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionPreparationRequest)\nexport class CreateConnectionPreparationValidator implements IValidator<CreateConnectionPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CreateConnectionPreparationRequest): boolean {\n return !!this.getNode(request.event) && this.isValidConditions();\n }\n\n private getNode(event: IPointerEvent): FNodeBase | undefined {\n return this.fComponentsStore.findNode(event.targetElement);\n }\n\n private isValidConditions(): boolean {\n return !this.fDraggableDataContext.draggableItems.length && !!this.fComponentsStore.fTempConnection;\n }\n}\n","import { CreateConnectionPreparationExecution } from './create-connection-preparation.execution';\nimport { CreateConnectionPreparationValidator } from './create-connection-preparation.validator';\nimport { CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS } from './create-connection-from-outlet-preparation';\nimport { CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS } from './create-connection-from-output-preparation';\nimport { CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS } from './create-connection-drag-handler';\n\nexport const CREATE_CONNECTION_PREPARATION_PROVIDERS = [\n\n ...CREATE_CONNECTION_DRAG_HANDLER_PROVIDERS,\n\n ...CREATE_CONNECTION_FROM_OUTLET_PREPARATION_PROVIDERS,\n\n ...CREATE_CONNECTION_FROM_OUTPUT_PREPARATION_PROVIDERS,\n\n CreateConnectionPreparationExecution,\n\n CreateConnectionPreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ReassignConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export class FReassignConnectionEvent {\n\n constructor(\n public fConnectionId: string,\n public fOutputId: string,\n public oldFInputId: string,\n public newFInputId: string | undefined\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionFinalizeRequest } from './reassign-connection-finalize.request';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\nimport { FDraggableBase } from '../../../f-draggable-base';\nimport { FReassignConnectionEvent } from '../f-reassign-connection.event';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FConnectorBase } from '../../../../f-connectors';\nimport { GetInputUnderPointerRequest } from '../../common';\n\n@Injectable()\n@FExecutionRegister(ReassignConnectionFinalizeRequest)\nexport class ReassignConnectionFinalizeExecution implements IExecution<ReassignConnectionFinalizeRequest, void> {\n\n private get fDraggable(): FDraggableBase {\n return this.fComponentsStore.fDraggable!;\n }\n\n private get dragHandler(): ReassignConnectionDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as ReassignConnectionDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: ReassignConnectionFinalizeRequest): void {\n this.emitEvent(request.event);\n this.dragHandler.complete();\n }\n\n private emitEvent(event: IPointerEvent): void {\n const input = this.getInputUnderPointer(event);\n if (\n !input || !this.isReassignToDifferentInput(input)\n ) {\n return;\n }\n this.fDraggable.fReassignConnection.emit(\n new FReassignConnectionEvent(\n this.dragHandler.fConnection.fId,\n this.dragHandler.fConnection.fOutputId,\n this.dragHandler.fConnection.fInputId,\n input.id\n )\n );\n }\n\n private getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this.fMediator.send<FConnectorBase | undefined>(new GetInputUnderPointerRequest(event, this.dragHandler));\n }\n\n private isReassignToDifferentInput(inputsUnderPointer: FConnectorBase): boolean {\n return this.dragHandler.fConnection.fInputId !== inputsUnderPointer.id;\n }\n}\n","import { IDraggableItem } from '../../i-draggable-item';\nimport { GetConnectionLineRequest } from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { ILine, IPoint, Point, RectExtensions, RoundedRect } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport {\n FindClosestInputUsingSnapThresholdRequest,\n GetAllCanBeConnectedInputPositionsRequest,\n GetConnectorWithRectRequest,\n IConnectorWithRect\n} from '../common';\n\nexport class ReassignConnectionDragHandler implements IDraggableItem {\n\n public toConnectorRect: RoundedRect = new RoundedRect();\n\n private get fSnapConnection(): FSnapConnectionComponent | undefined {\n return this.fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private fOutputWithRect!: IConnectorWithRect;\n private fInputWithRect!: IConnectorWithRect;\n\n private canBeConnectedInputs: IConnectorWithRect[] = [];\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n public fConnection: FConnectionBase,\n ) {\n }\n\n public initialize(): void {\n if (this.fSnapConnection) {\n this.fSnapConnection.fOutputId = this.fConnection.fOutputId;\n this.fSnapConnection.initialize();\n this.canBeConnectedInputs = this.fMediator.send<IConnectorWithRect[]>(\n new GetAllCanBeConnectedInputPositionsRequest(this.fConnection.fOutputId)\n );\n }\n\n this.fOutputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getOutput()));\n this.fInputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getInput()));\n this.toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.fConnection.line.point2.x, this.fConnection.line.point2.y)\n );\n }\n\n private getOutput(): FConnectorBase {\n return this.fComponentsStore.fOutputs.find((x) => x.id === this.fConnection.fOutputId)!;\n }\n\n private getInput(): FConnectorBase {\n return this.fComponentsStore.fInputs.find((x) => x.id === this.fConnection.fInputId)!\n }\n\n public move(difference: IPoint): void {\n this.drawConnection({ fRect: this.toConnectorRect.addPoint(difference), fConnector: this.fInputWithRect.fConnector });\n this.drawSnapConnection(this.getClosetInput(difference));\n }\n\n private drawConnection(fInputWithRect: IConnectorWithRect): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputWithRect.fRect,\n this.fConnection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fInputWithRect.fConnector.fConnectableSide\n )\n );\n\n this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);\n this.fConnection.redraw();\n }\n\n private drawSnapConnection(fInputWithRect: IConnectorWithRect | undefined): void {\n if (fInputWithRect) {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputWithRect.fRect,\n this.fSnapConnection!.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fInputWithRect.fConnector.fConnectableSide\n )\n );\n this.fSnapConnection!.show();\n this.fSnapConnection!.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);\n this.fSnapConnection!.redraw();\n } else {\n this.fSnapConnection?.hide();\n }\n }\n\n public getClosetInput(difference: IPoint): IConnectorWithRect | undefined {\n return this.fMediator.send<IConnectorWithRect | undefined>(\n new FindClosestInputUsingSnapThresholdRequest(\n Point.fromPoint(this.toConnectorRect).add(difference),\n this.canBeConnectedInputs,\n this.fSnapConnection!.fSnapThreshold\n )\n );\n }\n\n public complete(): void {\n this.drawConnection(this.fInputWithRect);\n this.fSnapConnection?.hide();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionFinalizeRequest } from './reassign-connection-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\n\n@Injectable()\n@FValidatorRegister(ReassignConnectionFinalizeRequest)\nexport class ReassignConnectionFinalizeValidator implements IValidator<ReassignConnectionFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: ReassignConnectionFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ReassignConnectionDragHandler\n );\n }\n}\n","import { ReassignConnectionFinalizeExecution } from './reassign-connection-finalize.execution';\nimport { ReassignConnectionFinalizeValidator } from './reassign-connection-finalize.validator';\n\nexport const REASSIGN_CONNECTION_FINALIZE_PROVIDERS = [\n\n ReassignConnectionFinalizeExecution,\n\n ReassignConnectionFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ReassignConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint, PointExtensions } from '@foblex/2d';\nimport { CalculateCenterBetweenPointsRequest } from './calculate-center-between-points-request';\n\nexport class CalculateCenterBetweenPointsHandler\n implements IHandler<CalculateCenterBetweenPointsRequest, IPoint> {\n\n public handle(request: CalculateCenterBetweenPointsRequest): IPoint {\n const { source, target } = request;\n\n const offsetX = Math.abs(target.x - source.x) / 2;\n const centerX = (target.x < source.x) ? target.x + offsetX : target.x - offsetX;\n\n const offsetY = Math.abs(target.y - source.y) / 2;\n const centerY = (target.y < source.y) ? target.y + offsetY : target.y - offsetY;\n\n return PointExtensions.initialize(centerX, centerY);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class CalculateCenterBetweenPointsRequest {\n\n constructor(\n public source: IPoint,\n public target: IPoint,\n ) {\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { CalculateConnectionCenterRequest } from './calculate-connection-center-request';\n\nexport class CalculateConnectionCenterHandler\n implements IHandler<CalculateConnectionCenterRequest, IPoint> {\n\n public handle(request: CalculateConnectionCenterRequest): IPoint {\n\n const { points } = request;\n let totalDistance = 0;\n let distances: number[] = [];\n\n for (let i = 0; i < points.length - 1; i++) {\n const distance = this.calculateDistance(points[ i ], points[ i + 1 ]);\n distances.push(distance);\n totalDistance += distance;\n }\n\n let accumulatedDistance = 0;\n let centerIndex = 0;\n const halfTotalDistance = totalDistance / 2;\n for (let i = 0; i < distances.length; i++) {\n accumulatedDistance += distances[ i ];\n if (accumulatedDistance >= halfTotalDistance) {\n centerIndex = i;\n break;\n }\n }\n\n const remainingDistanceToCenter = halfTotalDistance - (accumulatedDistance - distances[ centerIndex ]);\n\n return this.findPointAtDistance(points[ centerIndex ], points[ centerIndex + 1 ], remainingDistanceToCenter);\n }\n\n private calculateDistance(pointA: IPoint, pointB: IPoint): number {\n return Math.sqrt(Math.pow(pointB.x - pointA.x, 2) + Math.pow(pointB.y - pointA.y, 2));\n }\n\n private findPointAtDistance(startPoint: IPoint, endPoint: IPoint, distance: number): IPoint {\n const totalDistance = this.calculateDistance(startPoint, endPoint);\n const ratio = distance / totalDistance;\n const x = (1 - ratio) * startPoint.x + ratio * endPoint.x;\n const y = (1 - ratio) * startPoint.y + ratio * endPoint.y;\n return { x, y };\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class CalculateConnectionCenterRequest {\n\n constructor(\n public points: IPoint[],\n ) {\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\n\nexport class FBezierPathBuilder implements IFConnectionBuilder {\n\n private static getConnectorOffset(distance: number, offset: number): number {\n if (distance >= offset) {\n return distance;\n }\n return offset * Math.sqrt(offset - distance);\n }\n\n private static getAnglePoint(side: EFConnectableSide, source: IPoint, target: IPoint, offset: number): IPoint {\n\n let result: IPoint = { x: source.x, y: source.y };\n\n switch (side) {\n case EFConnectableSide.LEFT:\n result.x -= FBezierPathBuilder.getConnectorOffset(source.x - target.x, offset);\n break;\n case EFConnectableSide.RIGHT:\n result.x += FBezierPathBuilder.getConnectorOffset(target.x - source.x, offset);\n break;\n case EFConnectableSide.TOP:\n result.y -= FBezierPathBuilder.getConnectorOffset(source.y - target.y, offset);\n break;\n case EFConnectableSide.BOTTOM:\n result.y += FBezierPathBuilder.getConnectorOffset(target.y - source.y, offset);\n break;\n }\n\n return result;\n }\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, sourceSide, target, targetSide, offset } = request;\n\n const sourceAnglePoint = FBezierPathBuilder.getAnglePoint(sourceSide, source, target, offset);\n\n const targetAnglePoint = FBezierPathBuilder.getAnglePoint(targetSide, target, source, offset);\n\n const path = `M ${ source.x } ${ source.y } C ${ sourceAnglePoint.x } ${ sourceAnglePoint.y }, ${ targetAnglePoint.x } ${ targetAnglePoint.y }, ${ target.x + 0.0002 } ${ target.y + 0.0002 }`;\n\n const connectionCenter = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest([ source, sourceAnglePoint, targetAnglePoint, target ])\n );\n\n return { path, connectionCenter, penultimatePoint: targetAnglePoint };\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/2d';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport {\n CalculateCenterBetweenPointsHandler,\n CalculateCenterBetweenPointsRequest\n} from './calculate-center-between-points';\nimport { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\nimport { IMap } from '../../../domain';\n\nconst CONNECTOR_SIDE_POINT: IMap<IPoint> = {\n\n [ EFConnectableSide.LEFT ]: PointExtensions.initialize(-1, 0),\n\n [ EFConnectableSide.RIGHT ]: PointExtensions.initialize(1, 0),\n\n [ EFConnectableSide.TOP ]: PointExtensions.initialize(0, -1),\n\n [ EFConnectableSide.BOTTOM ]: PointExtensions.initialize(0, 1),\n\n [ EFConnectableSide.AUTO ]: PointExtensions.initialize(0, 0),\n};\n\nexport class FSegmentPathBuilder implements IFConnectionBuilder {\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, sourceSide, target, targetSide } = request;\n\n const { points, center } = this.getPathPoints(\n source,\n sourceSide,\n target,\n targetSide,\n request.offset\n );\n\n const path = this.buildPath(points, request.radius);\n\n const penultimatePoint = points.length > 1 ? points[ points.length - 2 ] : source;\n\n return { path, connectionCenter: center, penultimatePoint };\n }\n\n private getPathPoints(\n source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide, offset: number\n ): { points: IPoint[], center: IPoint } {\n\n const sourceDirection = CONNECTOR_SIDE_POINT[ sourceSide ];\n const targetDirection = CONNECTOR_SIDE_POINT[ targetSide ];\n\n const sourceGap: IPoint = { x: source.x + sourceDirection.x * offset, y: source.y + sourceDirection.y * offset };\n const targetGap: IPoint = { x: target.x + targetDirection.x * offset, y: target.y + targetDirection.y * offset };\n\n const direction = this.getDirection(sourceGap, sourceSide, targetGap);\n const directionAccessor = direction.x !== 0 ? 'x' : 'y';\n const currentDirection = direction[ directionAccessor ];\n\n let points: IPoint[] = [];\n const sourceGapOffset = PointExtensions.initialize();\n const targetGapOffset = PointExtensions.initialize();\n\n const centerBetweenPoints = new CalculateCenterBetweenPointsHandler().handle(\n new CalculateCenterBetweenPointsRequest(source, target)\n );\n\n if (sourceDirection[ directionAccessor ] * targetDirection[ directionAccessor ] === -1) {\n const verticalSplit: IPoint[] = [\n { x: centerBetweenPoints.x, y: sourceGap.y },\n { x: centerBetweenPoints.x, y: targetGap.y },\n ];\n const horizontalSplit: IPoint[] = [\n { x: sourceGap.x, y: centerBetweenPoints.y },\n { x: targetGap.x, y: centerBetweenPoints.y },\n ];\n\n if (sourceDirection[ directionAccessor ] === currentDirection) {\n points = directionAccessor === 'x' ? verticalSplit : horizontalSplit;\n } else {\n points = directionAccessor === 'x' ? horizontalSplit : verticalSplit;\n }\n } else {\n const sourceTarget: IPoint[] = [ { x: sourceGap.x, y: targetGap.y } ];\n const targetSource: IPoint[] = [ { x: targetGap.x, y: sourceGap.y } ];\n\n if (directionAccessor === 'x') {\n points = sourceDirection.x === currentDirection ? targetSource : sourceTarget;\n } else {\n points = sourceDirection.y === currentDirection ? sourceTarget : targetSource;\n }\n\n if (sourceSide === targetSide) {\n const diff = Math.abs(source[ directionAccessor ] - target[ directionAccessor ]);\n\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDirection[ directionAccessor ] === currentDirection) {\n sourceGapOffset[ directionAccessor ] = (sourceGap[ directionAccessor ] > source[ directionAccessor ] ? -1 : 1) * gapOffset;\n } else {\n targetGapOffset[ directionAccessor ] = (targetGap[ directionAccessor ] > target[ directionAccessor ] ? -1 : 1) * gapOffset;\n }\n }\n }\n\n if (sourceSide !== targetSide) {\n const dirAccessorOpposite = directionAccessor === 'x' ? 'y' : 'x';\n const isSameDir = sourceDirection[ directionAccessor ] === targetDirection[ dirAccessorOpposite ];\n const sourceGtTargetOppo = sourceGap[ dirAccessorOpposite ] > targetGap[ dirAccessorOpposite ];\n const sourceLtTargetOppo = sourceGap[ dirAccessorOpposite ] < targetGap[ dirAccessorOpposite ];\n const flipSourceTarget =\n (sourceDirection[ directionAccessor ] === 1 &&\n ((!isSameDir && sourceGtTargetOppo) || (isSameDir && sourceLtTargetOppo))) ||\n (sourceDirection[ directionAccessor ] !== 1 &&\n ((!isSameDir && sourceLtTargetOppo) || (isSameDir && sourceGtTargetOppo)));\n\n if (flipSourceTarget) {\n points = directionAccessor === 'x' ? sourceTarget : targetSource;\n }\n }\n }\n\n const pathPoints = [\n source,\n { x: sourceGap.x + sourceGapOffset.x, y: sourceGap.y + sourceGapOffset.y },\n ...points,\n { x: targetGap.x + targetGapOffset.x, y: targetGap.y + targetGapOffset.y },\n target,\n ];\n\n const center = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest(pathPoints)\n );\n\n return { points: pathPoints, center: center };\n }\n\n private getDirection(source: IPoint, sourceSide: EFConnectableSide, target: IPoint): IPoint {\n if (sourceSide === EFConnectableSide.LEFT || sourceSide === EFConnectableSide.RIGHT) {\n return source.x < target.x ? PointExtensions.initialize(1, 0) : PointExtensions.initialize(-1, 0);\n }\n return source.y < target.y ? PointExtensions.initialize(0, 1) : PointExtensions.initialize(0, -1);\n }\n\n private distance(a: IPoint, b: IPoint): number {\n return Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));\n }\n\n private buildPath(points: IPoint[], borderRadius: number): string {\n let path = '';\n for (let i = 0; i < points.length; i++) {\n const p = points[ i ];\n let segment = '';\n\n if (i > 0 && i < points.length - 1) {\n segment = this.getBend(points[ i - 1 ], p, points[ i + 1 ], borderRadius);\n } else if (i === points.length - 1) {\n segment = this.buildLastLineSegment(i, p);\n } else {\n segment = this.buildMoveOrLineSegment(i, p);\n }\n path += segment;\n }\n\n return path;\n }\n\n private getBend(a: IPoint, b: IPoint, c: IPoint, size: number): string {\n const bendSize = Math.min(this.distance(a, b) / 2, this.distance(b, c) / 2, size);\n const { x, y } = b;\n\n if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {\n return `L${ x } ${ y }`;\n }\n\n if (a.y === y) {\n const xDir = a.x < c.x ? -1 : 1;\n const yDir = a.y < c.y ? 1 : -1;\n return `L ${ x + bendSize * xDir },${ y }Q ${ x },${ y } ${ x },${ y + bendSize * yDir }`;\n }\n\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${ x },${ y + bendSize * yDir }Q ${ x },${ y } ${ x + bendSize * xDir },${ y }`;\n }\n\n private buildMoveOrLineSegment(index: number, point: IPoint): string {\n return `${ index === 0 ? 'M' : 'L' }${ point.x } ${ point.y }`;\n }\n\n private buildLastLineSegment(index: number, point: IPoint): string {\n return `L${ point.x + 0.0002 } ${ point.y + 0.0002 }`;\n }\n}\n","import { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\n\nexport class FStraightPathBuilder implements IFConnectionBuilder {\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, target } = request;\n const path = `M ${ source.x } ${ source.y } L ${ target.x + 0.0002 } ${ target.y + 0.0002 }`;\n\n const connectionCenter = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest([source, target])\n );\n\n return { path, connectionCenter, penultimatePoint: source };\n }\n}\n","import { normalizeDomElementId } from '@foblex/utils';\n\nexport const F_CONNECTION_IDENTIFIERS = {\n\n textId(connectionId: string): string {\n return normalizeDomElementId('connection_text_' + connectionId);\n },\n connectionForSelectionId(connectionId: string): string {\n return normalizeDomElementId('connection_for_selection_' + connectionId);\n },\n connectionId(connectionId: string): string {\n return normalizeDomElementId('connection_' + connectionId);\n },\n gradientId(connectionId: string): string {\n return normalizeDomElementId('connection_gradient_' + connectionId);\n },\n linkToGradient(connectionId: string): string {\n return `url(#${ F_CONNECTION_IDENTIFIERS.gradientId(connectionId) })`;\n },\n linkToConnection(connectionId: string): string {\n return `#${ F_CONNECTION_IDENTIFIERS.connectionId(connectionId) }`;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const F_CONNECTION = new InjectionToken('F_CONNECTION');\n","import { Directive, ElementRef, Inject, OnInit } from '@angular/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { IHasConnectionText } from '../i-has-connection-text';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { BrowserService } from '@foblex/platform';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\n@Directive({\n selector: 'textPath[f-connection-text-path]',\n host: {\n '[attr.href]': 'linkToConnection'\n }\n})\nexport class FConnectionTextPathDirective implements IHasHostElement, OnInit {\n\n public get linkToConnection(): string {\n return F_CONNECTION_IDENTIFIERS.linkToConnection(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGTextPathElement {\n return this.elementReference.nativeElement;\n }\n\n public symbolWidth: number = 8;\n public fontSize: string = '12px';\n\n constructor(\n private elementReference: ElementRef<SVGTextPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionText & IHasConnectionFromTo,\n private fBrowser: BrowserService\n ) {\n }\n\n public ngOnInit(): void {\n this.hostElement.setAttribute('startOffset', '50%');\n this.hostElement.setAttribute('text-anchor', `middle`);\n this.symbolWidth = this.getSymbolWidth(this.base.fText || '');\n }\n\n public getBBox(): DOMRect {\n return this.hostElement.getBBox();\n }\n\n private getFontStyles(element: SVGTextPathElement): { fontSize: string, fontFamily: string } {\n const computedStyles = this.fBrowser.window.getComputedStyle(element);\n return {\n fontSize: computedStyles.fontSize,\n fontFamily: computedStyles.fontFamily\n };\n }\n\n private getSymbolWidth(name: string): number {\n const text = name || 'connection';\n const { fontFamily, fontSize } = this.getFontStyles(this.hostElement);\n this.fontSize = fontSize;\n const canvas = this.fBrowser.document.createElement('canvas');\n let context;\n\n try {\n context = canvas.getContext('2d');\n } catch (e) {\n context = null;\n }\n if (!context) {\n return 0;\n }\n\n context.font = `${ fontSize } ${ fontFamily }`;\n\n const metrics = context.measureText(text);\n const symbolWidth = metrics.width / text.length;\n return symbolWidth;\n }\n}\n\n","import { ILine } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_TEXT = new InjectionToken<IConnectionText>('CONNECTION_TEXT');\n\nexport interface IConnectionText extends IHasHostElement {\n\n redraw(line: ILine): void;\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject, ViewChild\n} from \"@angular/core\";\nimport { ILine, PointExtensions } from '@foblex/2d';\nimport { FConnectionTextPathDirective } from './f-connection-text-path.directive';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionText } from '../i-has-connection-text';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_TEXT, IConnectionText } from './i-connection-text';\n\n@Component({\n selector: \"text[f-connection-text]\",\n templateUrl: \"./f-connection-text.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-text\",\n '[attr.id]': 'textId',\n },\n providers: [ { provide: CONNECTION_TEXT, useExisting: FConnectionTextComponent } ],\n})\nexport class FConnectionTextComponent implements IConnectionText {\n\n public get textId(): string {\n return F_CONNECTION_IDENTIFIERS.textId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGTextElement {\n return this.elementReference.nativeElement;\n }\n\n public get text(): string {\n return this.base.fText || '';\n }\n\n @ViewChild(FConnectionTextPathDirective, { static: true })\n public textPathDirective!: FConnectionTextPathDirective;\n\n constructor(\n private elementReference: ElementRef<SVGTextElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionText & IHasConnectionFromTo,\n ) {\n }\n\n public redraw(line: ILine): void {\n\n const isTextReverse: boolean = FConnectionTextComponent.isTextReverse(line);\n const dyValue = this.calculateDy(this.textPathDirective.fontSize, isTextReverse);\n\n this.hostElement.setAttribute('dy', dyValue);\n\n const textRect = this.textPathDirective.getBBox();\n const textRectCenter = [ textRect.x + textRect.width / 2, textRect.y + textRect.height / 2 ];\n this.hostElement.setAttribute('transform', isTextReverse ? `rotate(180, ${ textRectCenter })` : '');\n const startOffset = FConnectionTextComponent.getTextStartOffset(line, this.base.fText || '', this.textPathDirective.symbolWidth);\n if (startOffset < 0) {\n\n this.hostElement.style.display = 'none';\n } else {\n\n this.hostElement.style.display = 'unset';\n }\n }\n\n private calculateDy(fontSize: string, isTextReverse: boolean): string {\n const fontSizeNumber = parseFloat(fontSize);\n\n const dyValue = isTextReverse ? fontSizeNumber * 1.5 : fontSizeNumber * -0.8;\n\n return dyValue.toString();\n }\n\n private static isTextReverse(line: ILine): boolean {\n return line.point1.x > line.point2.x;\n }\n\n private static getTextStartOffset(line: ILine, name: string, symbolWidth: number): number {\n const vectorLength: number = PointExtensions.hypotenuse(line.point1, line.point2);\n return vectorLength / 2 - ((name || '').length * symbolWidth) / 2;\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:textPath f-connection-text-path>\n {{ text }}\n </svg:textPath>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef\n} from \"@angular/core\";\nimport { IPoint } from '@foblex/2d';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const F_CONNECTION_DRAG_HANDLE_CLASS = 'f-connection-drag-handle';\n\n@Component({\n selector: \"circle[f-connection-drag-handle]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'class'\n }\n})\nexport class FConnectionDragHandleComponent implements IHasHostElement {\n\n public readonly class: string = F_CONNECTION_DRAG_HANDLE_CLASS;\n\n public get hostElement(): SVGCircleElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGCircleElement>\n ) {\n }\n\n public redraw(penultimatePoint: IPoint, endPoint: IPoint): void {\n const point = this.calculateCircleCenter(penultimatePoint, endPoint, 8);\n this.hostElement.setAttribute('cx', point.x.toString());\n this.hostElement.setAttribute('cy', point.y.toString());\n }\n\n private calculateCircleCenter(start: IPoint, end: IPoint, radius: number): IPoint {\n const direction = { x: end.x - start.x, y: end.y - start.y };\n const length = Math.sqrt(direction.x * direction.x + direction.y * direction.y) || 1;\n const unitDirection = { x: direction.x / length, y: direction.y / length };\n const scaledDirection = { x: unitDirection.x * radius, y: unitDirection.y * radius };\n return { x: end.x - scaledDirection.x, y: end.y - scaledDirection.y };\n }\n}\n\n","import { ILine } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_GRADIENT = new InjectionToken<IConnectionGradient>('CONNECTION_GRADIENT');\n\nexport interface IConnectionGradient extends IHasHostElement {\n\n initialize(): void;\n\n redraw(line: ILine): void;\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject } from \"@angular/core\";\nimport { ILine, Point } from '@foblex/2d';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { IHasConnectionColor } from '../i-has-connection-color';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_GRADIENT, IConnectionGradient } from './i-connection-gradient';\n\n@Component({\n selector: \"linearGradient[fConnectionGradient]\",\n templateUrl: \"./f-connection-gradient.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-gradient\",\n '[attr.id]': 'gradientId'\n },\n providers: [ { provide: CONNECTION_GRADIENT, useExisting: FConnectionGradientComponent } ],\n})\nexport class FConnectionGradientComponent implements IConnectionGradient {\n\n public get gradientId(): string {\n return F_CONNECTION_IDENTIFIERS.gradientId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGLinearGradientElement {\n return this.elementReference.nativeElement;\n }\n\n public get stop1Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(0) as SVGStopElement;\n }\n\n public get stop2Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(1) as SVGStopElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGLinearGradientElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionColor & IHasConnectionFromTo,\n ) {\n }\n\n public initialize(): void {\n this.stop1Element.setAttribute('offset', '0%');\n this.stop2Element.setAttribute('offset', '100%');\n }\n\n private updateGradient(): void {\n this.setFromColor(this.base.fStartColor);\n this.setToColor(this.base.fEndColor);\n }\n\n private setFromColor(color: string | undefined): void {\n this.stop1Element.setAttribute('stop-color', color || 'transparent');\n }\n\n private setToColor(color: string | undefined): void {\n this.stop2Element.setAttribute('stop-color', color || 'transparent');\n }\n\n public redraw(line: ILine): void {\n const x: number = line.point2.x - line.point1.x;\n const y: number = line.point2.y - line.point1.y;\n const distance: number = Math.sqrt(x * x + y * y) || 0.01;\n\n const from = new Point(0.5 - (0.5 * x) / distance, 0.5 - (0.5 * y) / distance);\n\n this.hostElement.setAttribute('x1', from.x.toString());\n this.hostElement.setAttribute('y1', from.y.toString());\n\n const to = new Point(0.5 + (0.5 * x) / distance, 0.5 + (0.5 * y) / distance);\n this.hostElement.setAttribute('x2', to.x.toString());\n this.hostElement.setAttribute('y2', to.y.toString());\n this.updateGradient();\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:stop/>\n <svg:stop/>\n</ng-container>\n","import { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_PATH = new InjectionToken<IConnectionPath>('CONNECTION_PATH');\n\nexport interface IConnectionPath extends IHasHostElement {\n\n initialize(): void;\n\n setPath(path: string): void;\n\n select(): void;\n\n deselect(): void;\n}\n","import { normalizeDomElementId } from '@foblex/utils';\n\nexport function getMarkerStartId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerEndId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-marker-end-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedStartId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-selected-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedEndId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-selected-marker-end-${ fConnectionId }`);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject } from \"@angular/core\";\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionColor } from '../i-has-connection-color';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_PATH, IConnectionPath } from './i-connection-path';\nimport {\n getMarkerEndId,\n getMarkerSelectedEndId,\n getMarkerSelectedStartId,\n getMarkerStartId,\n} from './get-path-marker-id';\n\n@Component({\n selector: \"path[f-connection-path]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-path\",\n '[attr.id]': 'attrConnectionId',\n '[attr.data-f-path-id]': 'fPathId',\n '[attr.stroke]': 'linkToGradient',\n },\n providers: [ { provide: CONNECTION_PATH, useExisting: FConnectionPathComponent } ],\n})\nexport class FConnectionPathComponent implements IConnectionPath {\n\n public get fPathId(): string {\n return this.base.fId;\n }\n\n public get linkToGradient(): string {\n return F_CONNECTION_IDENTIFIERS.linkToGradient(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get attrConnectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionColor & IHasConnectionFromTo\n ) {\n }\n\n public initialize(): void {\n this.deselect();\n }\n\n public setPath(path: string): void {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n\n public select(): void {\n this.hostElement.setAttribute('marker-start', `url(#${ getMarkerSelectedStartId(this.base.fId) })`);\n this.hostElement.setAttribute('marker-end', `url(#${ getMarkerSelectedEndId(this.base.fId) })`);\n }\n\n public deselect(): void {\n this.hostElement.setAttribute('marker-start', `url(#${ getMarkerStartId(this.base.fId) })`);\n this.hostElement.setAttribute('marker-end', `url(#${ getMarkerEndId(this.base.fId) })`);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject\n} from \"@angular/core\";\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\n@Component({\n selector: \"path[fConnectionSelection]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-selection\",\n '[attr.id]': 'connectionForSelectionId',\n },\n})\nexport class FConnectionSelectionComponent implements IHasHostElement {\n\n public get connectionForSelectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionForSelectionId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionFromTo,\n ) {\n }\n\n public setPath(path: string) {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n}\n\n","import { InjectionToken } from '@angular/core';\nimport { IFConnectionBuilder } from './i-f-connection-builder';\n\nexport const F_CONNECTION_BUILDERS = new InjectionToken<IFConnectionBuilders>('F_CONNECTION_BUILDERS');\n\nexport interface IFConnectionBuilders {\n [key: string]: IFConnectionBuilder;\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { IFConnectionBuilder } from './i-f-connection-builder';\nimport { EFConnectionType, FBezierPathBuilder, FSegmentPathBuilder, FStraightPathBuilder } from '../common';\nimport { F_CONNECTION_BUILDERS, IFConnectionBuilders } from './f-connection-builders';\nimport { IFConnectionFactoryRequest } from './i-f-connection-factory-request';\nimport { IFConnectionBuilderResponse } from './i-f-connection-builder-response';\nimport { IMap } from '../../domain';\n\n@Injectable()\nexport class FConnectionFactory {\n\n private readonly builders: IMap<IFConnectionBuilder> = {\n\n [ EFConnectionType.STRAIGHT ]: new FStraightPathBuilder(),\n\n [ EFConnectionType.BEZIER ]: new FBezierPathBuilder(),\n\n [ EFConnectionType.SEGMENT ]: new FSegmentPathBuilder(),\n }\n\n constructor(\n @Optional() @Inject(F_CONNECTION_BUILDERS) builders: IFConnectionBuilders\n ) {\n if (builders) {\n this.builders = { ...this.builders, ...builders };\n }\n }\n\n public handle(request: IFConnectionFactoryRequest): IFConnectionBuilderResponse {\n const builder = this.builders[ request.type ];\n if (!builder) {\n throw new Error(`FConnectionBuilder not found for type ${ request.type }`);\n }\n\n return builder.handle(request.payload);\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { ILine, IPoint, LineExtensions, PointExtensions } from '@foblex/2d';\nimport { Subject } from 'rxjs';\nimport { EFConnectionBehavior } from './e-f-connection-behavior';\nimport { EFConnectionType } from './e-f-connection-type';\nimport { IHasConnectionColor } from './i-has-connection-color';\nimport { IHasConnectionFromTo } from './i-has-connection-from-to';\nimport { IHasConnectionText } from './i-has-connection-text';\nimport { IConnectionPath } from './f-path';\nimport { IConnectionGradient } from './f-gradient';\nimport { FConnectionDragHandleComponent } from './f-drag-handle';\nimport { FConnectionSelectionComponent } from './f-selection';\nimport { IConnectionText } from './f-connection-text';\nimport { IHasStateChanges } from '../../i-has-state-changes';\nimport { FMarkerBase } from '../f-marker';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport {\n ICanChangeSelection, ICanChangeVisibility,\n mixinChangeSelection, mixinChangeVisibility\n} from '../../mixins';\n\nconst MIXIN_BASE = mixinChangeSelection(\n mixinChangeVisibility(\n class {\n constructor(\n public hostElement: HTMLElement\n ) {\n }\n }));\n\n@Directive()\nexport abstract class FConnectionBase extends MIXIN_BASE\n implements IHasHostElement, ICanChangeSelection,\n ICanChangeVisibility,\n IHasStateChanges, IHasConnectionColor,\n IHasConnectionFromTo, IHasConnectionText {\n\n public abstract override fId: string;\n\n public abstract fStartColor: string;\n\n public abstract fEndColor: string;\n\n public abstract fOutputId: string;\n\n public abstract fInputId: string;\n\n public abstract fRadius: number;\n\n public abstract fOffset: number;\n\n public path: string = '';\n\n public line: ILine = LineExtensions.initialize();\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract fDraggingDisabled: boolean;\n\n public abstract override fSelectionDisabled: boolean;\n\n public abstract boundingElement: HTMLElement | SVGElement;\n\n public abstract fBehavior: EFConnectionBehavior;\n\n public abstract fType: EFConnectionType;\n\n public abstract fDefs: ElementRef<SVGDefsElement>;\n\n public abstract fPath: IConnectionPath;\n\n public abstract fGradient: IConnectionGradient;\n\n public abstract fDragHandle: FConnectionDragHandleComponent;\n\n public abstract fSelection: FConnectionSelectionComponent;\n\n public abstract fTextComponent: IConnectionText;\n\n public abstract fText: string;\n\n public abstract fConnectionCenter: ElementRef<HTMLDivElement>;\n\n private penultimatePoint: IPoint = PointExtensions.initialize();\n\n protected constructor(\n elementReference: ElementRef<HTMLElement>,\n private cFactory: FConnectionFactory\n ) {\n super(elementReference.nativeElement);\n }\n\n public initialize(): void {\n this.fPath.initialize();\n this.fGradient.initialize();\n this.redraw();\n }\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return (this.hostElement.firstChild?.lastChild as HTMLElement).contains(element);\n }\n\n public setLine(source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide): void {\n this.line = LineExtensions.initialize(source, target);\n const pathResult = this.getPathResult(source, sourceSide, target, targetSide);\n this.path = pathResult.path;\n this.penultimatePoint = pathResult.penultimatePoint || source;\n this.fConnectionCenter?.nativeElement?.setAttribute('style', this.getTransform(pathResult.connectionCenter));\n }\n\n private getPathResult(source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide): any {\n const radius = this.fRadius > 0 ? this.fRadius : 0;\n const offset = this.fOffset > 0 ? this.fOffset : 1;\n return this.cFactory.handle(\n {\n type: this.fType,\n payload: { source, sourceSide, target, targetSide, radius, offset }\n }\n );\n }\n\n private getTransform(position: IPoint): string {\n return `position: absolute; pointerEvents: all; transform: translate(-50%, -50%); left: ${ position.x }px; top: ${ position.y }px`;\n }\n\n public override selectChild(): void {\n this.fPath.select();\n }\n\n public override deselectChild(): void {\n this.fPath.deselect();\n }\n\n public redraw(): void {\n this.fPath.setPath(this.path);\n this.fSelection.setPath(this.path);\n this.fGradient.redraw(this.line);\n this.fDragHandle.redraw(this.penultimatePoint, this.line.point2);\n this.fTextComponent.redraw(this.line);\n }\n}\n","export enum EFConnectionBehavior {\n\n FIXED = 'fixed',\n\n FIXED_CENTER = 'fixed_center',\n\n FLOATING = 'floating',\n}\n","export enum EFConnectionType {\n\n SEGMENT = 'segment',\n\n STRAIGHT = 'straight',\n\n BEZIER = 'bezier',\n}\n","import {\n Directive\n} from \"@angular/core\";\n\n@Directive({\n selector: \"[fConnectionCenter]\"\n})\nexport class FConnectionCenterDirective {\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ContentChildren, ElementRef, Input, OnDestroy, OnInit, QueryList, ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { FComponentsStore } from '../../f-storage';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection-for-create\",\n templateUrl: \"./f-connection-for-create.component.html\",\n styleUrls: [ \"./f-connection-for-create.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-connection-for-create\"\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionForCreateComponent } ],\n})\nexport class FConnectionForCreateComponent\n extends FConnectionBase implements AfterViewInit, OnInit, OnDestroy {\n\n public override fId: string = `f-connection-for-create-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n private _fRadius: number = 8;\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override set fBehavior(value: EFConnectionBehavior | string) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fType(): EFConnectionType {\n return this._type;\n }\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fTempConnection = this;\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.fTempConnection = undefined;\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component, ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n OnInit, QueryList,\n ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH,\n CONNECTION_TEXT,\n FConnectionDragHandleComponent,\n FConnectionSelectionComponent,\n IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FComponentsStore } from '../../f-storage';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection\",\n exportAs: 'fComponent',\n templateUrl: \"./f-connection.component.html\",\n styleUrls: [ \"./f-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'fId',\n class: \"f-component f-connection\",\n '[class.f-connection-selection-disabled]': 'fSelectionDisabled',\n '[class.f-connection-reassign-disabled]': 'fDraggingDisabled',\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionComponent } ],\n})\nexport class FConnectionComponent\n extends FConnectionBase implements OnInit, OnDestroy {\n\n @Input('fConnectionId')\n public override fId: string = `f-connection-${ uniqueId++ }`;\n\n private _fText: string = '';\n @Input()\n public override set fText(value: string) {\n this._fText = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fText(): string {\n return this._fText;\n }\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n private _fOutputId!: string;\n @Input()\n public override set fOutputId(value: string) {\n this._fOutputId = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOutputId(): string {\n return this._fOutputId;\n }\n\n private _fInputId!: string;\n @Input()\n public override set fInputId(value: string) {\n this._fInputId = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fInputId(): string {\n return this._fInputId;\n }\n\n private _fRadius: number = 8;\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n @Input()\n public override set fBehavior(value: string | EFConnectionBehavior) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = value as unknown as EFConnectionType; //castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fType(): EFConnectionType {\n return this._type;\n }\n\n @Input('fReassignDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input()\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.addComponent(this.fComponentsStore.fConnections, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fConnections, this);\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"overflow: visible; display: block; vertical-align: middle;\">\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n","export enum EFMarkerType {\n\n START = 'f-connection-marker-start',\n\n END = 'f-connection-marker-end',\n\n SELECTED_START = 'f-connection-selected-marker-start',\n\n SELECTED_END = 'f-connection-selected-marker-end',\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../i-has-host-element';\n\nexport const F_MARKER = new InjectionToken('F_MARKER');\n\n@Directive()\nexport abstract class FMarkerBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract width: number;\n\n public abstract height: number;\n\n public abstract refX: number;\n\n public abstract refY: number;\n\n public abstract type: string;\n\n public abstract orient: 'auto' | 'auto-start-reverse' | string;\n\n public abstract markerUnits: 'strokeWidth' | 'userSpaceOnUse';\n}\n","import {\n Directive, ElementRef, Input, OnDestroy, OnInit\n} from \"@angular/core\";\nimport { F_MARKER, FMarkerBase } from './f-marker-base';\nimport { EFMarkerType } from './e-f-marker-type';\nimport { FComponentsStore } from '../../f-storage';\n\n@Directive({\n selector: \"svg[fMarker]\",\n host: {\n class: \"f-component f-marker\"\n },\n providers: [ { provide: F_MARKER, useExisting: FMarkerDirective } ],\n})\nexport class FMarkerDirective extends FMarkerBase implements OnInit, OnDestroy {\n\n @Input()\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override width: number = 0;\n\n @Input()\n public override height: number = 0;\n\n @Input()\n public override refX: number = 0;\n\n @Input()\n public override refY: number = 0;\n\n @Input()\n public override type: string = EFMarkerType.START;\n\n @Input()\n public override orient: 'auto' | 'auto-start-reverse' | 'calculated' | string = 'auto';\n\n @Input()\n public override markerUnits: 'strokeWidth' | 'userSpaceOnUse' = 'strokeWidth';\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private elementReference: ElementRef<HTMLElement>,\n ) {\n super();\n this.hostElement.style.display = 'none';\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.addComponent(this.fComponentsStore.fMarkers, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fMarkers, this);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ContentChildren, ElementRef, Input, OnDestroy, OnInit, QueryList, ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { FComponentsStore } from '../../f-storage';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-snap-connection\",\n templateUrl: \"./f-snap-connection.component.html\",\n styleUrls: [ \"./f-snap-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-snap-connection\"\n },\n providers: [ { provide: F_CONNECTION, useExisting: FSnapConnectionComponent } ],\n})\nexport class FSnapConnectionComponent\n extends FConnectionBase implements AfterViewInit, OnInit, OnDestroy {\n\n public override fId: string = `f-snap-connection-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n @Input()\n public fSnapThreshold: number = 20;\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n private _fRadius: number = 8;\n\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override set fBehavior(value: EFConnectionBehavior | string) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fType(): EFConnectionType {\n return this._type;\n }\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fSnapConnection = this;\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.fSnapConnection = undefined;\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n","import {\n FConnectionDragHandleComponent,\n FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent,\n FConnectionTextComponent,\n FConnectionTextPathDirective\n} from './common';\nimport { FConnectionComponent } from './f-connection';\nimport { FConnectionCenterDirective } from './f-connection-center';\nimport { FConnectionForCreateComponent } from './f-connection-for-create';\nimport { FMarkerDirective } from './f-marker';\nimport { FSnapConnectionComponent } from './f-snap-connection';\n\nexport const F_CONNECTION_PROVIDERS = [\n\n FConnectionTextComponent,\n FConnectionTextPathDirective,\n FConnectionDragHandleComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent,\n FConnectionSelectionComponent,\n\n FConnectionComponent,\n FConnectionCenterDirective,\n FConnectionForCreateComponent,\n FMarkerDirective,\n FSnapConnectionComponent\n];\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionPreparationRequest } from './reassign-connection-preparation.request';\nimport { IPoint, ITransformModel, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { UpdateItemAndChildrenLayersRequest } from '../../../../domain';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS, FConnectionBase } from '../../../../f-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ReassignConnectionPreparationRequest)\nexport class ReassignConnectionPreparationExecution implements IExecution<ReassignConnectionPreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ReassignConnectionPreparationRequest): void {\n const connectionToReassign = this.getConnectionHandler(\n this.getDragHandleElement(request.event.getPosition())\n )!;\n if (connectionToReassign.fDraggingDisabled) {\n return;\n }\n\n this.fMediator.send<void>(\n new UpdateItemAndChildrenLayersRequest(\n connectionToReassign, this.fComponentsStore.fCanvas!.fConnectionsContainer.nativeElement\n )\n );\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n\n this.fDraggableDataContext.draggableItems = [\n new ReassignConnectionDragHandler(this.fMediator, this.fComponentsStore, connectionToReassign)\n ];\n }\n\n private getDragHandleElement(position: IPoint): HTMLElement {\n return this.getElementsFromPoint(position).filter((x) => {\n return !!this.getConnectionHandler(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\n }).find((x) => !!x)!;\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n public getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fConnections.find(c => c.isContains(element));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionPreparationRequest } from './reassign-connection-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS, FConnectionBase } from '../../../../f-connection';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IPoint } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FValidatorRegister(ReassignConnectionPreparationRequest)\nexport class ReassignConnectionPreparationValidator implements IValidator<ReassignConnectionPreparationRequest> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ReassignConnectionPreparationRequest): boolean {\n return !!this.getDragHandleElements(request.event.getPosition()).length\n && !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getDragHandleElements(position: IPoint): HTMLElement[] {\n return this.getElementsFromPoint(position).filter((x) => {\n return !!this.getConnectionHandler(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\n });\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n public getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fConnections.find(c => c.isContains(element));\n }\n}\n","import { 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 GET_CAN_BE_CONNECTED_OUTPUT_BY_OUTLET_PROVIDERS\n} from './create-connection';\nimport { CREATE_CONNECTION_FINALIZE_PROVIDERS } from './create-connection';\nimport { CREATE_CONNECTION_PREPARATION_PROVIDERS } from './create-connection';\nimport {\n REASSIGN_CONNECTION_FINALIZE_PROVIDERS,\n REASSIGN_CONNECTION_PREPARATION_PROVIDERS,\n} from './reassign-connection';\nimport { CONNECTION_DRAG_COMMON_PROVIDERS } from './common';\n\nexport const CONNECTIONS_PROVIDERS = [\n\n ...CONNECTION_DRAG_COMMON_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","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNodePaddingRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodePaddingRequest } from './get-node-padding.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(GetNodePaddingRequest)\nexport class GetNodePaddingExecution\n implements IExecution<GetNodePaddingRequest, [ number, number, number, number ]> {\n\n constructor(\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: GetNodePaddingRequest): [ number, number, number, number ] {\n return request.fNode.fIncludePadding ? this.getPaddingData(request.fNode, request.rect) : [ 0, 0, 0, 0 ];\n }\n\n private getPaddingData(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n const style = this.fBrowser.window.getComputedStyle(node.hostElement);\n return [\n this.fBrowser.toPixels(style.paddingLeft, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingTop, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingRight, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingBottom, rect.width, rect.height, style.fontSize)\n ];\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedNodeRectRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedNodeRectRequest } from './get-normalized-node-rect.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedNodeRectRequest)\nexport class GetNormalizedNodeRectExecution\n implements IExecution<GetNormalizedNodeRectRequest, IRect> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetNormalizedNodeRectRequest): IRect {\n return this.normalizeRect(RectExtensions.fromElement(request.fNode.hostElement), request.fNode.position);\n }\n\n private normalizeRect(scaledRect: IRect, position: IPoint): IRect {\n const rect = RectExtensions.div(scaledRect, this.fComponentsStore.fCanvas!.transform.scale);\n\n return RectExtensions.initialize(position.x, position.y, rect.width, rect.height);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedParentNodeRectRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedParentNodeRectRequest } from './get-normalized-parent-node-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { GetNormalizedNodeRectRequest } from '../get-normalized-node-rect';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { GetNodePaddingRequest } from '../get-node-padding';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedParentNodeRectRequest)\nexport class GetNormalizedParentNodeRectExecution\n implements IExecution<GetNormalizedParentNodeRectRequest, IRect> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNormalizedParentNodeRectRequest): IRect {\n let result = RectExtensions.initialize(-Infinity, -Infinity, Infinity, Infinity);\n const parentNode = this.getNode(request.fNode.fParentId);\n if (parentNode) {\n result = this.getParentRect(parentNode);\n }\n return result;\n }\n\n private getNode(fId?: string | null): FNodeBase | undefined {\n return this.fComponentsStore.fNodes.find((x) => x.fId === fId);\n }\n\n private getParentRect(node: FNodeBase): IRect {\n const rect = this.getNormalizedNodeRect(node);\n const padding = this.getNodePadding(node, rect);\n return RectExtensions.initialize(\n rect.x + padding[0],\n rect.y + padding[1],\n rect.width - padding[0] - padding[2],\n rect.height - padding[1] - padding[3]\n );\n }\n\n private getNormalizedNodeRect(node: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(node));\n }\n\n private getNodePadding(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this.fMediator.send<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetParentNodesRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetParentNodesRequest } from './get-parent-nodes.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetParentNodesRequest)\nexport class GetParentNodesExecution\n implements IExecution<GetParentNodesRequest, FNodeBase[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetParentNodesRequest): FNodeBase[] {\n return this.getParentNodes(request.fNode, new Set<string>(), []);\n }\n\n private getParentNodes(fNode: FNodeBase, visited: Set<string>, result: FNodeBase[]): FNodeBase[] {\n if (visited.has(fNode.fId)) {\n throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fNode.fId);\n }\n visited.add(fNode.fId);\n\n const parent = this.fComponentsStore.fNodes.find((x) => x.fId === fNode.fParentId);\n if (!parent) {\n return result;\n }\n\n result.push(parent);\n return this.getParentNodes(parent, visited, result);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class IsArrayHasParentNodeRequest {\n\n constructor(\n public fNode: FNodeBase,\n public fNodes: FNodeBase[]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IsArrayHasParentNodeRequest } from './is-array-has-parent-node.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { GetParentNodesRequest } from '../get-parent-nodes';\n\n@Injectable()\n@FExecutionRegister(IsArrayHasParentNodeRequest)\nexport class IsArrayHasParentNodeExecution\n implements IExecution<IsArrayHasParentNodeRequest, boolean> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: IsArrayHasParentNodeRequest): boolean {\n return this.isParentNodeInArray(this.getParentNodeIds(request.fNode), request.fNodes);\n }\n\n private getParentNodeIds(fNode: FNodeBase): string[] {\n return this.getParentNodes(fNode).map((x) => x.fId);\n }\n\n private getParentNodes(fNode: FNodeBase): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetParentNodesRequest(fNode));\n }\n\n private isParentNodeInArray(parentNodeIds: string[], fNodes: FNodeBase[]): boolean {\n return fNodes.some((x) => parentNodeIds.includes(x.fId));\n }\n}\n\n\n","import { GetNormalizedNodeRectExecution } from './get-normalized-node-rect';\nimport { GetParentNodesExecution } from './get-parent-nodes';\nimport { IsArrayHasParentNodeExecution } from './is-array-has-parent-node';\nimport { GetNormalizedParentNodeRectExecution } from './get-normalized-parent-node-rect';\nimport { GetNodePaddingExecution } from './get-node-padding';\n\nexport const DRAG_AND_DROP_COMMON_PROVIDERS = [\n\n GetNodePaddingExecution,\n\n GetNormalizedNodeRectExecution,\n\n GetNormalizedParentNodeRectExecution,\n\n GetParentNodesExecution,\n\n IsArrayHasParentNodeExecution\n];\n","import { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\n\nexport class PutInputConnectionHandlersToArrayRequest {\n\n constructor(\n public nodeDragHandler: NodeDragHandler,\n public outputIds: string[],\n public result: IDraggableItem[]\n ) {\n }\n}\n","import { IDraggableItem } from '../i-draggable-item';\nimport { FConnectionBase } from '../../f-connection';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { Directive } from '@angular/core';\nimport { INodeMoveRestrictions } from './create-move-nodes-drag-model-from-selection';\nimport { ILine, IPoint } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetConnectorWithRectRequest, IConnectorWithRect } from '../connections';\n\n@Directive()\nexport abstract class ConnectionBaseDragHandler implements IDraggableItem {\n\n protected fOutputWithRect!: IConnectorWithRect;\n protected fInputWithRect!: IConnectorWithRect;\n\n protected constructor(\n protected fMediator: FMediator,\n protected fComponentsStore: FComponentsStore,\n public connection: FConnectionBase,\n ) {\n }\n\n public initialize(): void {\n this.fOutputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getOutput()));\n this.fInputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getInput()));\n }\n\n private getOutput(): FConnectorBase {\n return this.fComponentsStore.fOutputs.find((x) => x.id === this.connection.fOutputId)!;\n }\n\n private getInput(): FConnectorBase {\n return this.fComponentsStore.fInputs.find((x) => x.id === this.connection.fInputId)!\n }\n\n public abstract move(difference: IPoint): void;\n\n protected getDifference(difference: IPoint, restrictions: INodeMoveRestrictions): IPoint {\n return {\n x: Math.min(Math.max(difference.x, restrictions.min.x), restrictions.max.x),\n y: Math.min(Math.max(difference.y, restrictions.min.y), restrictions.max.y)\n }\n }\n\n protected redrawConnection(line: ILine): void {\n this.connection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, this.fInputWithRect.fConnector.fConnectableSide);\n this.connection.redraw();\n }\n}\n","import { ILine, IPoint, RoundedRect } from '@foblex/2d';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport {\n GetConnectionLineRequest,\n} from '../../domain';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { INodeMoveRestrictions } from './create-move-nodes-drag-model-from-selection';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionDragHandler extends ConnectionBaseDragHandler {\n\n private sourceRestrictions!: INodeMoveRestrictions;\n private targetRestrictions!: INodeMoveRestrictions;\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public setOutputRestrictions(min: IPoint, max: IPoint) {\n this.sourceRestrictions = { min, max };\n }\n\n public setInputRestrictions(min: IPoint, max: IPoint) {\n this.targetRestrictions = { min, max };\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n RoundedRect.fromRect(this.fOutputWithRect.fRect).addPoint(this.getDifference({ ...difference }, this.sourceRestrictions)),\n RoundedRect.fromRect(this.fInputWithRect.fRect).addPoint(this.getDifference({ ...difference }, this.targetRestrictions)),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { ILine, IPoint, RoundedRect } from '@foblex/2d';\nimport {\n GetConnectionLineRequest,\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionTargetDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n public minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n RoundedRect.fromRect(this.fOutputWithRect.fRect),\n RoundedRect.fromRect(this.fInputWithRect.fRect).addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PutInputConnectionHandlersToArrayRequest } from './put-input-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\nimport { ConnectionDragHandler } from '../../../connection.drag-handler';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { FConnectionBase } from '../../../../../f-connection';\nimport { ConnectionTargetDragHandler } from '../../../connection-target.drag-handler';\n\n@Injectable()\n@FExecutionRegister(PutInputConnectionHandlersToArrayRequest)\nexport class PutInputConnectionHandlersToArrayExecution\n implements IExecution<PutInputConnectionHandlersToArrayRequest, void> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: PutInputConnectionHandlersToArrayRequest): void {\n this.getInputConnections(request.nodeDragHandler.fNode).forEach((connection) => {\n const index = this.getExistingConnectionHandlerIndex(request.result, connection);\n if (index !== -1) {\n this.updateExistingConnectionHandler(request.result, index, request.nodeDragHandler);\n } else {\n request.result.push(this.createNewConnectionHandler(request.nodeDragHandler, request.outputIds, connection));\n }\n });\n }\n\n public getInputConnections(node: FNodeBase): FConnectionBase[] {\n const inputIds = new Set(this.getInputsForNode(node).map((x) => x.id));\n return this.fConnections.filter((x) => inputIds.has(x.fInputId));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getExistingConnectionHandlerIndex(result: IDraggableItem[], connection: FConnectionBase): number {\n return result.findIndex(\n (x) => x instanceof ConnectionDragHandler && x.connection.fId === connection.fId\n );\n }\n\n private createNewConnectionHandler(nodeDragHandler: NodeDragHandler, outputIds: string[], connection: FConnectionBase): IDraggableItem {\n let result: IDraggableItem;\n if (outputIds.includes(connection.fOutputId)) {\n result = this.getNewConnectionHandler(connection, nodeDragHandler);\n } else {\n result = this.getNewSourceConnectionHandler(connection, nodeDragHandler);\n }\n return result;\n }\n\n private getNewConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionDragHandler {\n const handler = new ConnectionDragHandler(this.fMediator, this.fComponentsStore, connection);\n handler.setInputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n return handler;\n }\n\n private updateExistingConnectionHandler(result: IDraggableItem[], index: number, nodeDragHandler: NodeDragHandler): void {\n (result[ index ] as ConnectionDragHandler).setInputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n\n private getNewSourceConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionTargetDragHandler {\n return new ConnectionTargetDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n}\n\n","import { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\n\nexport class PutOutputConnectionHandlersToArrayRequest {\n\n constructor(\n public nodeDragHandler: NodeDragHandler,\n public inputIds: string[],\n public result: IDraggableItem[]\n ) {\n }\n}\n","import { ILine, IPoint, RoundedRect } from '@foblex/2d';\nimport {\n GetConnectionLineRequest\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionSourceDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n public minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n RoundedRect.fromRect(this.fOutputWithRect.fRect).addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n RoundedRect.fromRect(this.fInputWithRect.fRect),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PutOutputConnectionHandlersToArrayRequest } from './put-output-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\nimport { ConnectionDragHandler } from '../../../connection.drag-handler';\nimport { ConnectionSourceDragHandler } from '../../../connection-source.drag-handler';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { FConnectionBase } from '../../../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(PutOutputConnectionHandlersToArrayRequest)\nexport class PutOutputConnectionHandlersToArrayExecution\n implements IExecution<PutOutputConnectionHandlersToArrayRequest, void> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: PutOutputConnectionHandlersToArrayRequest): void {\n this.getOutputConnections(request.nodeDragHandler.fNode).forEach((connection) => {\n const index = this.getExistingConnectionHandlerIndex(request.result, connection);\n if (index !== -1) {\n this.updateExistingConnectionHandler(request.result, index, request.nodeDragHandler);\n } else {\n request.result.push(this.createNewConnectionHandler(request.nodeDragHandler, request.inputIds, connection));\n }\n });\n }\n\n public getOutputConnections(node: FNodeBase): FConnectionBase[] {\n const outputsIds = new Set(this.getOutputsForNode(node).map((x) => x.id));\n return this.fConnections.filter((x) => outputsIds.has(x.fOutputId));\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getExistingConnectionHandlerIndex(result: IDraggableItem[], connection: FConnectionBase): number {\n return result.findIndex(\n (x) => x instanceof ConnectionDragHandler && x.connection.fId === connection.fId\n );\n }\n\n private createNewConnectionHandler(nodeDragHandler: NodeDragHandler, inputIds: string[], connection: FConnectionBase): IDraggableItem {\n let result: IDraggableItem;\n if (inputIds.includes(connection.fInputId)) {\n result = this.getNewConnectionHandler(connection, nodeDragHandler);\n } else {\n result = this.getNewSourceConnectionHandler(connection, nodeDragHandler);\n }\n return result;\n }\n\n private getNewConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionDragHandler {\n const handler = new ConnectionDragHandler(this.fMediator, this.fComponentsStore, connection);\n handler.setOutputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n return handler;\n }\n\n private updateExistingConnectionHandler(result: IDraggableItem[], index: number, nodeDragHandler: NodeDragHandler): void {\n (result[ index ] as ConnectionDragHandler).setOutputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n\n private getNewSourceConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionSourceDragHandler {\n return new ConnectionSourceDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n}\n\n","import { FNodeBase } from '../../../../../f-node';\n\nexport class GetNodeMoveRestrictionsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public hasParentNodeInSelected: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodeMoveRestrictionsRequest } from './get-node-move-restrictions.request';\nimport { IRect, PointExtensions } from '@foblex/2d';\nimport { INodeMoveRestrictions } from './i-node-move-restrictions';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNormalizedNodeRectRequest, GetNormalizedParentNodeRectRequest } from '../../../../domain';\nimport { FNodeBase } from '../../../../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetNodeMoveRestrictionsRequest)\nexport class GetNodeMoveRestrictionsExecution\n implements IExecution<GetNodeMoveRestrictionsRequest, INodeMoveRestrictions> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNodeMoveRestrictionsRequest): INodeMoveRestrictions {\n if (request.fNode.fParentId && !request.hasParentNodeInSelected) {\n const fParentNodeRect = this.getParentNodeRect(request.fNode);\n const fCurrentNodeRect = this.getCurrentNodeRect(request.fNode);\n return {\n min: PointExtensions.initialize(fParentNodeRect.x - fCurrentNodeRect.x, fParentNodeRect.y - fCurrentNodeRect.y),\n max: PointExtensions.initialize(\n (fParentNodeRect.x + fParentNodeRect.width) - (fCurrentNodeRect.x + fCurrentNodeRect.width),\n (fParentNodeRect.y + fParentNodeRect.height) - (fCurrentNodeRect.y + fCurrentNodeRect.height),\n )\n };\n }\n return { ...DEFAULT_RESTRICTIONS };\n }\n\n private getCurrentNodeRect(fNode: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(fNode));\n }\n\n private getParentNodeRect(fNode: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedParentNodeRectRequest(fNode));\n }\n}\n\nconst DEFAULT_RESTRICTIONS: INodeMoveRestrictions = {\n min: PointExtensions.initialize(-Infinity, -Infinity),\n max: PointExtensions.initialize(Infinity, Infinity)\n};\n","export class CreateMoveNodesDragModelFromSelectionRequest {\n\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { FNodeBase } from '../../f-node';\nimport {\n INodeMoveRestrictions\n} from './create-move-nodes-drag-model-from-selection';\n\nexport class NodeDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n public fNode: FNodeBase,\n public minDistance: IPoint,\n public maxDistance: IPoint,\n ) {\n this.onPointerDownPosition = { ...fNode.position };\n }\n\n public move(difference: IPoint): void {\n const restrictedDifference = this.getDifference(difference, { min: this.minDistance, max: this.maxDistance });\n\n this.redrawNode(this.getNewPosition(restrictedDifference));\n this.fDraggableDataContext.fLineAlignment?.handle(restrictedDifference);\n }\n\n private getNewPosition(difference: IPoint): IPoint {\n return Point.fromPoint(this.onPointerDownPosition).add(difference);\n }\n\n private getDifference(difference: IPoint, restrictions: INodeMoveRestrictions): IPoint {\n return {\n x: Math.min(Math.max(difference.x, restrictions.min.x), restrictions.max.x),\n y: Math.min(Math.max(difference.y, restrictions.min.y), restrictions.max.y)\n }\n }\n\n private redrawNode(position: IPoint): void {\n this.fNode.updatePosition(position);\n this.fNode.redraw();\n }\n\n public complete(): void {\n this.fNode.positionChange.emit(this.fNode.position);\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n//TODO: Implement this class\nexport class NodeResizeByChildDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n\n }\n\n\n public move(difference: IPoint): void {\n\n }\n\n public complete(): void {\n\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from './create-move-nodes-drag-model-from-selection.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { NodeDragHandler } from '../node.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { INodeWithDistanceRestrictions } from './i-node-with-distance-restrictions';\nimport { GetNodeMoveRestrictionsRequest, INodeMoveRestrictions } from './domain/get-node-move-restrictions';\nimport { PutOutputConnectionHandlersToArrayRequest } from './domain/put-output-connection-handlers-to-array';\nimport {\n PutInputConnectionHandlersToArrayRequest\n} from './domain/put-input-connection-handlers-to-array';\nimport { NodeResizeByChildDragHandler } from '../node-resize-by-child.drag-handler';\nimport { GetParentNodesRequest, IsArrayHasParentNodeRequest } from '../../domain';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../../domain';\nimport { flatMap } from '@foblex/utils';\n\n@Injectable()\n@FExecutionRegister(CreateMoveNodesDragModelFromSelectionRequest)\nexport class CreateMoveNodesDragModelFromSelectionExecution\n implements IExecution<CreateMoveNodesDragModelFromSelectionRequest, IDraggableItem[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: CreateMoveNodesDragModelFromSelectionRequest): IDraggableItem[] {\n const itemsToDrag = this.getNodesWithRestrictions(this.getSelectedNodes());\n return this.getDragHandlersWithConnections(\n this.getDragHandlersFromNodes(itemsToDrag),\n this.getAllOutputIds(itemsToDrag),\n this.getAllInputIds(itemsToDrag)\n );\n }\n\n private getSelectedNodes(): FNodeBase[] {\n return this.fDraggableDataContext.selectedItems\n .map((x) => this.fComponentsStore.findNode(x.hostElement))\n .filter((x): x is FNodeBase => !!x);\n }\n\n private getNodesWithRestrictions(selectedNodes: FNodeBase[]): INodeWithDistanceRestrictions[] {\n const result: INodeWithDistanceRestrictions[] = [];\n\n selectedNodes.forEach((x) => {\n const hasParentNodeInSelected = this.fMediator.send<boolean>(new IsArrayHasParentNodeRequest(x, selectedNodes));\n const restrictions = this.fMediator.send<INodeMoveRestrictions>(new GetNodeMoveRestrictionsRequest(x, hasParentNodeInSelected));\n const parentNodes = this.fMediator.send<FNodeBase[]>(new GetParentNodesRequest(x));\n result.push({ node: x, parentNodes, ...restrictions }, ...this.getChildrenItemsToDrag(x, restrictions));\n });\n\n return result;\n }\n\n private getChildrenItemsToDrag(node: FNodeBase, restrictions: INodeMoveRestrictions): INodeWithDistanceRestrictions[] {\n return this.getChildrenNodes(node.fId).map((x) => ({ node: x, ...restrictions }));\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private getAllOutputIds(items: INodeWithDistanceRestrictions[]): string[] {\n return flatMap(items, (item: INodeWithDistanceRestrictions) => this.getOutputsForNode(item.node).map((x) => x.id));\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getAllInputIds(items: INodeWithDistanceRestrictions[]): string[] {\n return flatMap(items, (item: INodeWithDistanceRestrictions) => this.getInputsForNode(item.node).map((x) => x.id));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getDragHandlersFromNodes(items: INodeWithDistanceRestrictions[]): IDraggableItem[] {\n let result: IDraggableItem[] = [];\n\n items.forEach((node) => {\n result.push(\n new NodeDragHandler(this.fDraggableDataContext, node.node, node.min, node.max),\n ...(node.parentNodes || []).map((parent) => new NodeResizeByChildDragHandler(this.fDraggableDataContext))\n );\n });\n return result;\n }\n\n private getDragHandlersWithConnections(\n handlers: IDraggableItem[], outputIds: string[], inputIds: string[]\n ): IDraggableItem[] {\n let result: IDraggableItem[] = handlers;\n handlers.filter((x) => x instanceof NodeDragHandler).forEach((dragHandler) => {\n this.fMediator.send(new PutOutputConnectionHandlersToArrayRequest(dragHandler as NodeDragHandler, inputIds, result));\n this.fMediator.send(new PutInputConnectionHandlersToArrayRequest(dragHandler as NodeDragHandler, outputIds, result));\n });\n return result;\n }\n}\n","import { CreateMoveNodesDragModelFromSelectionExecution } from './create-move-nodes-drag-model-from-selection.execution';\nimport { GetNodeMoveRestrictionsExecution } from './domain/get-node-move-restrictions';\nimport { PutInputConnectionHandlersToArrayExecution } from './domain/put-input-connection-handlers-to-array';\nimport { PutOutputConnectionHandlersToArrayExecution } from './domain/put-output-connection-handlers-to-array';\n\nexport const CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS = [\n\n GetNodeMoveRestrictionsExecution,\n\n PutInputConnectionHandlersToArrayExecution,\n\n PutOutputConnectionHandlersToArrayExecution,\n\n CreateMoveNodesDragModelFromSelectionExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMovePreparationRequest } from './node-move-preparation.request';\nimport { ITransformModel, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { NodeDragHandler } from '../node.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from '../create-move-nodes-drag-model-from-selection';\nimport { SelectAndUpdateNodeLayerRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(NodeMovePreparationRequest)\nexport class NodeMovePreparationExecution implements IExecution<NodeMovePreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: NodeMovePreparationRequest): void {\n this.selectAndUpdateNodeLayer(request.event.targetElement);\n\n const itemsToDrag: IDraggableItem[] = this.createDragModelFromSelection();\n\n this.initializeLineAlignment(this.filterNodesFromDraggableItems(itemsToDrag));\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.draggableItems = itemsToDrag;\n }\n\n private selectAndUpdateNodeLayer(targetElement: HTMLElement) {\n this.fMediator.send(\n new SelectAndUpdateNodeLayerRequest(this.getNode(targetElement))\n );\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase {\n return this.fComponentsStore.findNode(targetElement)!;\n }\n\n private createDragModelFromSelection(): IDraggableItem[] {\n return this.fMediator.send(new CreateMoveNodesDragModelFromSelectionRequest());\n }\n\n private initializeLineAlignment(nodesToDrag: FNodeBase[]): void {\n this.fDraggableDataContext.fLineAlignment?.initialize(\n this.fComponentsStore.fNodes,\n nodesToDrag\n );\n }\n\n private filterNodesFromDraggableItems(items: IDraggableItem[]): FNodeBase[] {\n return items.filter((x) => x instanceof NodeDragHandler).map(x => (x as NodeDragHandler).fNode);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMovePreparationRequest } from './node-move-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\nimport { isClosestElementHasClass } from '@foblex/utils';\n\n@Injectable()\n@FValidatorRegister(NodeMovePreparationRequest)\nexport class NodeMovePreparationValidator implements IValidator<NodeMovePreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeMovePreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isDragHandleElement(request.event.targetElement)\n && this.isNodeCanBeDragged(this.getNode(request.event.targetElement));\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n return this.fComponentsStore.findNode(targetElement);\n }\n\n private isNodeCanBeDragged(node: FNodeBase | undefined): boolean {\n return !!node && !node.fDraggingDisabled;\n }\n\n private isDragHandleElement(targetElement: HTMLElement): boolean {\n return isClosestElementHasClass(targetElement, '.f-drag-handle');\n }\n}\n","import { NodeMovePreparationExecution } from './node-move-preparation.execution';\nimport { NodeMovePreparationValidator } from './node-move-preparation.validator';\n\nexport const NODE_MOVE_PREPARATION_PROVIDERS = [\n\n NodeMovePreparationExecution,\n\n NodeMovePreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export class IsConnectionUnderNodeRequest {\n\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMoveFinalizeRequest } from './node-move-finalize.request';\nimport { IPoint, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n IsConnectionUnderNodeRequest\n} from '../../../domain/is-connection-under-node/is-connection-under-node.request';\n\n@Injectable()\n@FExecutionRegister(NodeMoveFinalizeRequest)\nexport class NodeMoveFinalizeExecution implements IExecution<NodeMoveFinalizeRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: NodeMoveFinalizeRequest): void {\n const difference = this.getDifferenceWithLineAlignment(\n this.getDifferenceBetweenPreparationAndFinalize(request.event.getPosition())\n );\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.move({ ...difference });\n x.complete?.();\n });\n this.fMediator.send(new IsConnectionUnderNodeRequest());\n this.fDraggableDataContext.fLineAlignment?.complete();\n }\n\n private getDifferenceBetweenPreparationAndFinalize(position: IPoint): Point {\n return Point.fromPoint(position).elementTransform(this.flowHost)\n .div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n }\n\n private getDifferenceWithLineAlignment(difference: IPoint): IPoint {\n const intersection = this.fDraggableDataContext.fLineAlignment?.findNearestCoordinate(difference);\n if (intersection) {\n difference.x = intersection.xResult.value ? (difference.x - intersection.xResult.distance!) : difference.x;\n difference.y = intersection.yResult.value ? (difference.y - intersection.yResult.distance!) : difference.y;\n }\n return difference;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMoveFinalizeRequest } from './node-move-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeDragHandler } from '../node.drag-handler';\n\n@Injectable()\n@FValidatorRegister(NodeMoveFinalizeRequest)\nexport class NodeMoveFinalizeValidator implements IValidator<NodeMoveFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeMoveFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) => x instanceof NodeDragHandler);\n }\n}\n","import { NodeMoveFinalizeExecution } from './node-move-finalize.execution';\nimport { NodeMoveFinalizeValidator } from './node-move-finalize.validator';\n\nexport const NODE_MOVE_FINALIZE_PROVIDERS = [\n\n NodeMoveFinalizeExecution,\n\n NodeMoveFinalizeValidator,\n];\n","import { CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS } from './create-move-nodes-drag-model-from-selection';\nimport { NODE_MOVE_FINALIZE_PROVIDERS } from './node-move-finalize';\nimport { NODE_MOVE_PREPARATION_PROVIDERS } from './node-move-preparation';\n\nexport const NODE_PROVIDERS = [\n\n ...CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS,\n\n ...NODE_MOVE_FINALIZE_PROVIDERS,\n\n ...NODE_MOVE_PREPARATION_PROVIDERS,\n];\n","import { IRect } from '@foblex/2d';\n\nexport class ApplyChildResizeRestrictionsRequest {\n\n constructor(\n public rect: IRect,\n public restrictionsRect: IRect,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplyChildResizeRestrictionsRequest } from './apply-child-resize-restrictions.request';\nimport { IRect } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\nconst OFFSET = 0;\n\n@Injectable()\n@FExecutionRegister(ApplyChildResizeRestrictionsRequest)\nexport class ApplyChildResizeRestrictionsExecution\n implements IExecution<ApplyChildResizeRestrictionsRequest, void> {\n\n public handle(request: ApplyChildResizeRestrictionsRequest): void {\n this.applyRestrictions(request.rect, request.restrictionsRect);\n }\n\n private applyRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.left(rect, restrictionsRect);\n this.top(rect, restrictionsRect);\n this.right(rect, restrictionsRect);\n this.bottom(rect, restrictionsRect);\n }\n\n private left(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x > restrictionsRect.x - OFFSET) {\n rect.width += rect.x - restrictionsRect.x - OFFSET;\n rect.x = restrictionsRect.x - OFFSET;\n }\n }\n\n private top(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y > restrictionsRect.y - OFFSET) {\n rect.height += rect.y - restrictionsRect.y - OFFSET;\n rect.y = restrictionsRect.y - OFFSET;\n }\n }\n\n private right(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x + rect.width <= restrictionsRect.x + restrictionsRect.width + OFFSET) {\n rect.width = restrictionsRect.x + restrictionsRect.width - rect.x + OFFSET;\n }\n }\n\n private bottom(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y + rect.height <= restrictionsRect.y + restrictionsRect.height + OFFSET) {\n rect.height = restrictionsRect.y + restrictionsRect.height - rect.y + OFFSET;\n }\n }\n}\n","import { IRect } from '@foblex/2d';\n\nexport class ApplyParentResizeRestrictionsRequest {\n\n constructor(\n public rect: IRect,\n public restrictionsRect: IRect,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplyParentResizeRestrictionsRequest } from './apply-parent-resize-restrictions.request';\nimport { IRect } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\nconst OFFSET = 0;\n\n@Injectable()\n@FExecutionRegister(ApplyParentResizeRestrictionsRequest)\nexport class ApplyParentResizeRestrictionsExecution\n implements IExecution<ApplyParentResizeRestrictionsRequest, void> {\n\n public handle(request: ApplyParentResizeRestrictionsRequest): void {\n this.applyRestrictions(request.rect, request.restrictionsRect);\n }\n\n private applyRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.left(rect, restrictionsRect);\n this.top(rect, restrictionsRect);\n this.right(rect, restrictionsRect);\n this.bottom(rect, restrictionsRect);\n }\n\n private left(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x <= restrictionsRect.x + OFFSET) {\n rect.width -= restrictionsRect.x - rect.x + OFFSET;\n rect.x = restrictionsRect.x + OFFSET;\n }\n }\n\n private top(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y <= restrictionsRect.y + OFFSET) {\n rect.height -= restrictionsRect.y - rect.y + OFFSET;\n rect.y = restrictionsRect.y + OFFSET;\n }\n }\n\n private right(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x + rect.width > restrictionsRect.x + restrictionsRect.width - OFFSET) {\n rect.width = restrictionsRect.x + restrictionsRect.width - rect.x - OFFSET;\n }\n }\n\n private bottom(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y + rect.height > restrictionsRect.y + restrictionsRect.height - OFFSET) {\n rect.height = restrictionsRect.y + restrictionsRect.height - rect.y - OFFSET;\n }\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { EFResizeHandleType } from '../../../f-node';\n\nexport class CalculateChangedPositionRequest {\n\n constructor(\n public originalRect: IRect,\n public changedRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { EFResizeHandleType } from '../../f-node';\n\nexport const RESIZE_DIRECTIONS = {\n\n [ EFResizeHandleType.LEFT_TOP ]: { x: -1, y: -1 },\n\n [ EFResizeHandleType.RIGHT_TOP ]: { x: 1, y: -1 },\n\n [ EFResizeHandleType.RIGHT_BOTTOM ]: { x: 1, y: 1 },\n\n [ EFResizeHandleType.LEFT_BOTTOM ]: { x: -1, y: 1 },\n};\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedPositionRequest } from './calculate-changed-position.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedPositionRequest)\nexport class CalculateChangedPositionExecution\n implements IExecution<CalculateChangedPositionRequest, IRect> {\n\n public handle(request: CalculateChangedPositionRequest): IRect {\n return this.change(request.originalRect, request.difference, RESIZE_DIRECTIONS[request.fResizeHandleType], request.changedRect);\n }\n\n private change(originalRect: IRect, difference: IPoint, direction: IPoint, changedRect: IRect): IRect {\n return RectExtensions.initialize(\n originalRect.x + (direction.x === -1 ? difference.x : 0) + changedRect.x,\n originalRect.y + (direction.y === -1 ? difference.y : 0) + changedRect.y,\n changedRect.width,\n changedRect.height\n );\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { EFResizeHandleType } from '../../../f-node';\n\nexport class CalculateChangedSizeRequest {\n\n constructor(\n public originalRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedSizeRequest)\nexport class CalculateChangedSizeExecution\n implements IExecution<CalculateChangedSizeRequest, IRect> {\n\n public handle(request: CalculateChangedSizeRequest): IRect {\n return this.change(request.originalRect, request.difference, RESIZE_DIRECTIONS[request.fResizeHandleType]);\n }\n\n private change(rect: IRect, difference: IPoint, direction: IPoint): IRect {\n const result = RectExtensions.initialize(\n 0, 0,\n rect.width + direction.x * difference.x,\n rect.height + direction.y * difference.y\n );\n\n if (result.width < 0) {\n result.x = result.width;\n result.width = Math.abs(result.width);\n }\n\n if (result.height < 0) {\n result.y = result.height;\n result.height = Math.abs(result.height);\n }\n\n return RectExtensions.copy(result);\n }\n}\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNormalizedChildrenNodesRectRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedChildrenNodesRectRequest } from './get-normalized-children-nodes-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { GetNodePaddingRequest, GetNormalizedNodeRectRequest } from '../../domain';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedChildrenNodesRectRequest)\nexport class GetNormalizedChildrenNodesRectExecution\n implements IExecution<GetNormalizedChildrenNodesRectRequest, IRect | null> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNormalizedChildrenNodesRectRequest): IRect | null {\n const childNodeRect = RectExtensions.union(\n this.getChildrenNodes(request.fNode.fId).map((x) => this.normalizeRect(x))\n );\n return childNodeRect ?\n this.concatRectWithParentPadding(childNodeRect,\n this.getNodePadding(request.fNode, request.rect)\n ) : null;\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private normalizeRect(node: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(node));\n }\n\n private getNodePadding(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this.fMediator.send<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n\n private concatRectWithParentPadding(rect: IRect, padding: [ number, number, number, number ]): IRect {\n return RectExtensions.initialize(\n rect.x - padding[0],\n rect.y - padding[1],\n rect.width + padding[0] + padding[2],\n rect.height + + padding[1] + padding[3]\n );\n }\n}\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNodeResizeRestrictionsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodeResizeRestrictionsRequest } from './get-node-resize-restrictions.request';\nimport { IRect } from '@foblex/2d';\nimport { INodeResizeRestrictions } from './i-node-resize-restrictions';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNormalizedParentNodeRectRequest } from '../../domain';\nimport { GetNormalizedChildrenNodesRectRequest } from '../get-normalized-children-nodes-rect';\n\n\n@Injectable()\n@FExecutionRegister(GetNodeResizeRestrictionsRequest)\nexport class GetNodeResizeRestrictionsExecution\n implements IExecution<GetNodeResizeRestrictionsRequest, INodeResizeRestrictions> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNodeResizeRestrictionsRequest): INodeResizeRestrictions {\n const childRect = this.fMediator.send<IRect | null>(new GetNormalizedChildrenNodesRectRequest(request.fNode, request.rect));\n const parentRect = this.fMediator.send<IRect>(new GetNormalizedParentNodeRectRequest(request.fNode));\n\n return {\n parentRect,\n childRect,\n }\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeResizeFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizeFinalizeRequest } from './node-resize-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\n\n@Injectable()\n@FExecutionRegister(NodeResizeFinalizeRequest)\nexport class NodeResizeFinalizeExecution implements IExecution<NodeResizeFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: NodeResizeFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","import { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../f-node';\nimport { FMediator } from '@foblex/mediator';\nimport { GetNormalizedNodeRectRequest } from '../domain';\nimport { GetNodeResizeRestrictionsRequest, INodeResizeRestrictions } from './get-node-resize-restrictions';\nimport { ApplyChildResizeRestrictionsRequest } from './apply-child-resize-restrictions';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size';\nimport { CalculateChangedPositionRequest } from './calculate-changed-position';\nimport { ApplyParentResizeRestrictionsRequest } from './apply-parent-resize-restrictions';\n\nexport class NodeResizeDragHandler implements IDraggableItem {\n\n private originalRect!: IRect;\n\n private restrictions!: INodeResizeRestrictions;\n\n private childRestrictions: (rect: IRect, restrictionsRect: IRect) => void = () => {};\n\n constructor(\n private fMediator: FMediator,\n public fNode: FNodeBase,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n\n public initialize(): void {\n this.originalRect = this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(this.fNode));\n\n this.restrictions = this.fMediator.send<INodeResizeRestrictions>(new GetNodeResizeRestrictionsRequest(this.fNode, this.originalRect));\n if(this.restrictions.childRect) {\n this.childRestrictions = (rect: IRect, restrictionsRect: IRect) => {\n this.applyChildRestrictions(rect, restrictionsRect);\n };\n }\n }\n\n public move(difference: IPoint): void {\n const changedRect = this.changePosition(difference, this.changeSize(difference));\n\n this.childRestrictions(changedRect, this.restrictions.childRect!);\n this.applyParentRestrictions(changedRect, this.restrictions.parentRect);\n\n this.fNode.updatePosition(changedRect);\n this.fNode.updateSize(changedRect);\n this.fNode.redraw();\n }\n\n private changeSize(difference: IPoint): IRect {\n return this.fMediator.send<IRect>(\n new CalculateChangedSizeRequest(this.originalRect, difference, this.fResizeHandleType)\n );\n }\n\n private changePosition(difference: IPoint, changedRect: IRect): IRect {\n return this.fMediator.send<IRect>(\n new CalculateChangedPositionRequest(this.originalRect, changedRect, difference, this.fResizeHandleType)\n );\n }\n\n private applyChildRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.fMediator.send(\n new ApplyChildResizeRestrictionsRequest(rect, restrictionsRect)\n );\n }\n\n private applyParentRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.fMediator.send(\n new ApplyParentResizeRestrictionsRequest(rect, restrictionsRect)\n );\n }\n\n public complete(): void {\n this.fNode.sizeChange.emit(\n RectExtensions.initialize(\n this.fNode.position.x, this.fNode.position.y, this.fNode.size.width, this.fNode.size.height\n )\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizeFinalizeRequest } from './node-resize-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\n\n@Injectable()\n@FValidatorRegister(NodeResizeFinalizeRequest)\nexport class NodeResizeFinalizeValidator implements IValidator<NodeResizeFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeResizeFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) =>\n x instanceof NodeResizeDragHandler\n );\n }\n}\n","import { NodeResizeFinalizeExecution } from './node-resize-finalize.execution';\nimport { NodeResizeFinalizeValidator } from './node-resize-finalize.validator';\n\nexport const NODE_RESIZE_FINALIZE_PROVIDERS = [\n\n NodeResizeFinalizeExecution,\n\n NodeResizeFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeResizePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizePreparationRequest } from './node-resize-preparation.request';\nimport { ITransformModel, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n SelectAndUpdateNodeLayerRequest,\n} from '../../../domain';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../../f-node';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\nimport { getDataAttrValueFromClosestElementWithClass } from '@foblex/utils';\n\n@Injectable()\n@FExecutionRegister(NodeResizePreparationRequest)\nexport class NodeResizePreparationExecution implements IExecution<NodeResizePreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: NodeResizePreparationRequest): void {\n this.selectAndUpdateNodeLayer(request.event.targetElement);\n\n const handleType = getDataAttrValueFromClosestElementWithClass(request.event.targetElement, 'fResizeHandleType', '.f-resize-handle');\n const itemsToDrag: IDraggableItem[] = [\n new NodeResizeDragHandler(\n this.fMediator,\n this.getNode(request.event.targetElement),\n EFResizeHandleType[ handleType as keyof typeof EFResizeHandleType ]\n )\n ];\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.draggableItems = itemsToDrag;\n }\n\n private selectAndUpdateNodeLayer(targetElement: HTMLElement) {\n this.fMediator.send(\n new SelectAndUpdateNodeLayerRequest(this.getNode(targetElement))\n );\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase {\n return this.fComponentsStore.findNode(targetElement)!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizePreparationRequest } from './node-resize-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\nimport { isClosestElementHasClass } from '@foblex/utils';\n\n@Injectable()\n@FValidatorRegister(NodeResizePreparationRequest)\nexport class NodeResizePreparationValidator implements IValidator<NodeResizePreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeResizePreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isDragHandleElement(request.event.targetElement)\n && this.isNodeCanBeDragged(this.getNode(request.event.targetElement));\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n return this.fComponentsStore.findNode(targetElement);\n }\n\n private isNodeCanBeDragged(node: FNodeBase | undefined): boolean {\n return !!node && !node.fDraggingDisabled;\n }\n\n private isDragHandleElement(targetElement: HTMLElement): boolean {\n return isClosestElementHasClass(targetElement, '.f-resize-handle');\n }\n}\n","import { NodeResizePreparationExecution } from './node-resize-preparation.execution';\nimport { NodeResizePreparationValidator } from './node-resize-preparation.validator';\n\nexport const NODE_RESIZE_PREPARATION_PROVIDERS = [\n\n NodeResizePreparationExecution,\n\n NodeResizePreparationValidator,\n];\n","import { NODE_RESIZE_FINALIZE_PROVIDERS } from './node-resize-finalize';\nimport { NODE_RESIZE_PREPARATION_PROVIDERS } from './node-resize-preparation';\nimport { GetNodeResizeRestrictionsExecution } from './get-node-resize-restrictions';\nimport { ApplyChildResizeRestrictionsExecution } from './apply-child-resize-restrictions';\nimport { ApplyParentResizeRestrictionsExecution } from './apply-parent-resize-restrictions';\nimport { CalculateChangedSizeExecution } from './calculate-changed-size';\nimport { CalculateChangedPositionExecution } from './calculate-changed-position';\nimport { GetNormalizedChildrenNodesRectExecution } from './get-normalized-children-nodes-rect';\n\nexport const NODE_RESIZE_PROVIDERS = [\n\n ApplyChildResizeRestrictionsExecution,\n\n ApplyParentResizeRestrictionsExecution,\n\n CalculateChangedPositionExecution,\n\n CalculateChangedSizeExecution,\n\n GetNormalizedChildrenNodesRectExecution,\n\n GetNodeResizeRestrictionsExecution,\n\n ...NODE_RESIZE_FINALIZE_PROVIDERS,\n\n ...NODE_RESIZE_PREPARATION_PROVIDERS,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class SingleSelectRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { SingleSelectRequest } from './single-select.request';\nimport { UpdateItemAndChildrenLayersRequest } from '../../domain';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FConnectionBase } from '../../f-connection';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { EOperationSystem, PlatformService } from '@foblex/platform';\nimport { ICanChangeSelection } from '../../mixins';\n\n@Injectable()\n@FExecutionRegister(SingleSelectRequest)\nexport class SingleSelectExecution implements IExecution<SingleSelectRequest, void> {\n\n constructor(\n private fPlatform: PlatformService,\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: SingleSelectRequest): void {\n const { event } = request;\n\n const item = this.getSelectableItem(event);\n if (item) {\n this.fMediator.send<void>(new UpdateItemAndChildrenLayersRequest(item, item.hostElement.parentElement!));\n }\n\n this.isMultiselectEnabled(event) ? this.multiSelect(item) : this.singleSelect(item);\n }\n\n private getSelectableItem(event: IPointerEvent): ICanChangeSelection | undefined {\n return this.fComponentsStore.findNode(event.targetElement) || this.getConnectionHandler(event.targetElement);\n }\n\n private getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fComponentsStore.fConnections.find(c => c.isContains(element) || c.fConnectionCenter?.nativeElement?.contains(element));\n }\n\n private isMultiselectEnabled(event: IPointerEvent): boolean {\n return this.isCommandButton(this.fPlatform.getOS()!, event.originalEvent) ||\n this.isShiftPressed(event.originalEvent);\n }\n\n private isShiftPressed(event: { shiftKey: boolean }): boolean {\n return event.shiftKey;\n }\n\n private isCommandButton(platform: EOperationSystem, event: { metaKey: boolean, ctrlKey: boolean }): boolean {\n return platform === EOperationSystem.MAC_OS ? event.metaKey : event.ctrlKey;\n }\n\n private singleSelect(item: ICanChangeSelection | undefined): void {\n if (item) {\n if (!item.isSelected() && !item.fSelectionDisabled) {\n this.clearSelection();\n this.selectItem(item);\n }\n } else {\n this.clearSelection();\n }\n }\n\n private multiSelect(item: ICanChangeSelection | undefined): void {\n if (item && !item.fSelectionDisabled) {\n item.isSelected() ? this.deselectItem(item) : this.selectItem(item);\n }\n }\n\n private deselectItem(item: ICanChangeSelection): void {\n const index = this.fDraggableDataContext.selectedItems.indexOf(item);\n if (index > -1) {\n this.fDraggableDataContext.selectedItems.splice(index, 1);\n }\n item.deselect();\n this.fDraggableDataContext.markSelectionAsChanged();\n }\n\n private selectItem(item: ICanChangeSelection): void {\n this.fDraggableDataContext.selectedItems.push(item);\n item.select();\n this.fDraggableDataContext.markSelectionAsChanged();\n }\n\n private clearSelection(): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n this.fDraggableDataContext.markSelectionAsChanged();\n });\n this.fDraggableDataContext.selectedItems = [];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { SingleSelectRequest } from './single-select.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n@Injectable()\n@FValidatorRegister(SingleSelectRequest)\nexport class SingleSelectValidator implements IValidator<SingleSelectRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SingleSelectRequest): boolean {\n return this.fComponentsStore.fFlow!.hostElement.contains(request.event.targetElement)\n && !this.fDraggableDataContext.draggableItems.length;\n }\n}\n","import { SingleSelectExecution } from './single-select.execution';\nimport { SingleSelectValidator } from './single-select.validator';\n\nexport const SINGLE_SELECT_PROVIDERS = [\n\n SingleSelectExecution,\n\n SingleSelectValidator\n];\n","import { Directive, EventEmitter, } from '@angular/core';\nimport { FCreateConnectionEvent, FReassignConnectionEvent } from './connections';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FCreateNodeEvent } from '../f-external-item';\nimport { DragAndDropBase, ICanRunOutsideAngular } from '@foblex/drag-toolkit';\n\n@Directive()\nexport abstract class FDraggableBase extends DragAndDropBase {\n\n public abstract fSelectionChange: EventEmitter<FSelectionChangeEvent>;\n\n public abstract fCreateNode: EventEmitter<FCreateNodeEvent>;\n\n public abstract fReassignConnection: EventEmitter<FReassignConnectionEvent>;\n\n public abstract fCreateConnection: EventEmitter<FCreateConnectionEvent>;\n\n protected constructor(\n ngZone: ICanRunOutsideAngular | undefined\n ) {\n super(ngZone);\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ExternalItemFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IRect } from '@foblex/2d';\n\nexport class FCreateNodeEvent<TData = any> {\n\n constructor(\n public rect: IRect,\n public data: TData,\n ) {\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { ExternalItemFinalizeRequest } from './external-item-finalize.request';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\nimport { FCreateNodeEvent } from '../f-create-node.event';\nimport { GetElementRectInFlowRequest } from '../../../domain';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ExternalItemFinalizeRequest)\nexport class ExternalItemFinalizeExecution implements IExecution<ExternalItemFinalizeRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n private get fCreateNode(): EventEmitter<FCreateNodeEvent> {\n return this.fComponentsStore.fDraggable!.fCreateNode;\n }\n\n private get dragHandler(): ExternalItemDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as ExternalItemDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ExternalItemFinalizeRequest): void {\n this.emitEvent(\n this.getExternalItemElementsFromPoint(request.event.getPosition())\n );\n\n this.dragHandler.complete();\n }\n\n private getExternalItemElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y)\n .filter(x => !x.closest('.f-external-item')) as HTMLElement[];\n }\n\n private emitEvent(elements: HTMLElement[]): void {\n if (this.isPointerInCanvasRect(elements)) {\n this.fCreateNode.emit(\n new FCreateNodeEvent(this.getRectInCanvas(), this.dragHandler.externalItem.fData)\n );\n }\n }\n\n private isPointerInCanvasRect(elements: HTMLElement[]): boolean {\n return elements.length ? this.flowHost.contains(elements[ 0 ]) : false;\n }\n\n private getRectInCanvas(): IRect {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(this.dragHandler.placeholder!));\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FExternalItemBase } from '../../f-external-item';\nimport { IDraggableItem } from '../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\nimport { deepCloneNode } from '@foblex/utils';\n\nexport class ExternalItemDragHandler implements IDraggableItem {\n\n public placeholder: HTMLElement | SVGElement | undefined;\n\n private onPointerDownRect: IRect = RectExtensions.initialize();\n\n private difference: IPoint = PointExtensions.initialize();\n\n constructor(\n public externalItem: FExternalItemBase,\n private fBrowser: BrowserService\n ) {\n }\n\n private getStyle(position: IPoint): string {\n return `position: absolute; left: 0; top: 0; transform: translate(${ position.x }px, ${ position.y }px)`;\n }\n\n public initialize(): void {\n this.onPointerDownRect = this.getExternalItemRect();\n this.placeholder = deepCloneNode(this.externalItem.hostElement);\n this.placeholder.setAttribute('style', this.getStyle(Point.fromPoint(this.onPointerDownRect)));\n this.fBrowser.document.body.appendChild(this.placeholder);\n }\n\n private getExternalItemRect(): IRect {\n const rect = this.externalItem.hostElement.getBoundingClientRect();\n const scrollTop = this.fBrowser.window.pageYOffset || this.fBrowser.document.documentElement.scrollTop;\n const scrollLeft = this.fBrowser.window.pageXOffset || this.fBrowser.document.documentElement.scrollLeft;\n const offsetTop = rect.top + scrollTop;\n const offsetLeft = rect.left + scrollLeft;\n return RectExtensions.initialize(offsetLeft, offsetTop, rect.width, rect.height);\n }\n\n public move(difference: IPoint): void {\n this.difference = difference;\n const position = Point.fromPoint(this.onPointerDownRect).add(this.difference);\n this.placeholder!.setAttribute('style', this.getStyle(position));\n }\n\n public complete(): void {\n this.fBrowser.document.body.removeChild(this.placeholder!);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemFinalizeRequest } from './external-item-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\n\n\n@Injectable()\n@FValidatorRegister(ExternalItemFinalizeRequest)\nexport class ExternalItemFinalizeValidator implements IValidator<ExternalItemFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: ExternalItemFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ExternalItemDragHandler\n );\n }\n}\n","import { ExternalItemFinalizeExecution } from './external-item-finalize.execution';\nimport { ExternalItemFinalizeValidator } from './external-item-finalize.validator';\n\nexport const EXTERNAL_ITEM_FINALIZE_PROVIDERS = [\n\n ExternalItemFinalizeExecution,\n\n ExternalItemFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ExternalItemPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemPreparationRequest } from './external-item-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExternalItemBase, FExternalItemService, getExternalItem } from '../../../f-external-item';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ExternalItemPreparationRequest)\nexport class ExternalItemPreparationExecution implements IExecution<ExternalItemPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fExternalItemService: FExternalItemService,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ExternalItemPreparationRequest): void {\n this.fDraggableDataContext.onPointerDownScale = 1;\n\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition()).elementTransform(this.flowHost);\n\n this.fDraggableDataContext.draggableItems = [\n new ExternalItemDragHandler(this.getExternalItem(request.event.targetElement), this.fBrowser)\n ];\n }\n\n private getExternalItem(targetElement: HTMLElement): FExternalItemBase<any> {\n return this.fExternalItemService.getItem(getExternalItem(targetElement))!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemPreparationRequest } from './external-item-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FExternalItemBase, FExternalItemService, getExternalItem, isExternalItem } from '../../../f-external-item';\n\n@Injectable()\n@FValidatorRegister(ExternalItemPreparationRequest)\nexport class ExternalItemPreparationValidator implements IValidator<ExternalItemPreparationRequest> {\n\n\n constructor(\n private fExternalItemService: FExternalItemService\n ) {\n }\n\n public handle(request: ExternalItemPreparationRequest): boolean {\n const externalItem = this.getExternalItem(request.event.targetElement);\n return isExternalItem(request.event.targetElement) && !!externalItem && !externalItem.fDisabled;\n }\n\n private getExternalItem(targetElement: HTMLElement): FExternalItemBase<any> | undefined {\n return this.fExternalItemService.getItem(getExternalItem(targetElement));\n }\n}\n","import { ExternalItemPreparationExecution } from './external-item-preparation.execution';\nimport { ExternalItemPreparationValidator } from './external-item-preparation.validator';\n\nexport const EXTERNAL_ITEM_PREPARATION_PROVIDERS = [\n\n ExternalItemPreparationExecution,\n\n ExternalItemPreparationValidator,\n];\n","import { EXTERNAL_ITEM_PREPARATION_PROVIDERS } from './external-item-preparation';\nimport { EXTERNAL_ITEM_FINALIZE_PROVIDERS } from './external-item-finalize';\n\nexport const F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS = [\n\n ...EXTERNAL_ITEM_FINALIZE_PROVIDERS,\n\n ...EXTERNAL_ITEM_PREPARATION_PROVIDERS,\n];\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_EXTERNAL_ITEM = new InjectionToken<FExternalItemBase>('F_EXTERNAL_ITEM');\n\n@Directive()\nexport abstract class FExternalItemBase<TData = any> implements IHasHostElement {\n\n public abstract fExternalItemId: string;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract fData: TData | undefined;\n\n public abstract fDisabled: boolean;\n}\n","export function isExternalItem(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fExternalItem]');\n}\n\nexport function getExternalItem(element: HTMLElement | SVGElement): HTMLElement | SVGElement {\n return element.closest('[fExternalItem]') as HTMLElement | SVGElement;\n}\n","import { Injectable } from '@angular/core';\nimport { FExternalItemBase } from './f-external-item-base';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FExternalItemService {\n\n private items: FExternalItemBase[] = [];\n\n public registerItem(item: FExternalItemBase): void {\n this.items.push(item);\n }\n\n public getItem(element: HTMLElement | SVGElement): FExternalItemBase | undefined {\n return this.items.find(item => item.hostElement === element);\n }\n\n public removeItem(item: FExternalItemBase): void {\n const index = this.items.indexOf(item);\n if (index !== -1) {\n this.items.splice(index, 1);\n }\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FExternalItemBase, F_EXTERNAL_ITEM } from './f-external-item-base';\nimport { FExternalItemService } from './f-external-item.service';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fExternalItem]\",\n host: {\n '[attr.id]': 'fExternalItemId',\n class: \"f-component f-external-item\",\n '[class.f-external-item-disabled]': 'fDisabled',\n },\n providers: [\n { provide: F_EXTERNAL_ITEM, useExisting: FExternalItemDirective }\n ],\n})\nexport class FExternalItemDirective<TData> extends FExternalItemBase<TData> implements OnInit, OnDestroy {\n\n @Input()\n public override fExternalItemId: string = `f-external-item-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override fData: TData | undefined;\n\n @Input()\n public override fDisabled: boolean = false;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fExternalItemService: FExternalItemService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fExternalItemService.registerItem(this);\n this.disablePointerEvents(Array.from(this.hostElement.children) as HTMLElement[]);\n }\n\n private disablePointerEvents(children: HTMLElement[]): void {\n children.forEach((x) => {\n x.style.pointerEvents = 'none';\n this.disablePointerEvents(Array.from(x.children) as HTMLElement[]);\n });\n }\n\n public ngOnDestroy(): void {\n this.fExternalItemService.removeItem(this);\n }\n}\n","import { FExternalItemDirective } from './f-external-item.directive';\n\nexport const F_EXTERNAL_ITEM_PROVIDERS = [\n FExternalItemDirective\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_DRAG_AND_DROP_PLUGIN: InjectionToken<IFDragAndDropPlugin> = new InjectionToken<IFDragAndDropPlugin>('F_DRAG_AND_DROP_PLUGIN');\n\nexport interface IFDragAndDropPlugin {\n\n onSelect?(event: Event): void;\n\n onPointerDown?(event: IPointerEvent): void;\n\n prepareDragSequence?(event: IPointerEvent): void;\n\n onPointerUp?(event: IPointerEvent): void;\n}\n","import {\n AfterViewInit, ContentChildren,\n Directive,\n ElementRef,\n EventEmitter, Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit, Optional, Output, QueryList\n} from \"@angular/core\";\nimport { FDraggableBase } from './f-draggable-base';\nimport { FComponentsStore } from '../f-storage';\nimport { FDraggableDataContext } from './f-draggable-data-context';\nimport { Subscription } from 'rxjs';\nimport { IPoint, Point } from '@foblex/2d';\nimport { NodeMoveFinalizeRequest, NodeMovePreparationRequest } from './node';\nimport { CanvasMoveFinalizeRequest, CanvasMovePreparationRequest } from './canvas';\nimport {\n FCreateConnectionEvent,\n FReassignConnectionEvent,\n ReassignConnectionPreparationRequest,\n ReassignConnectionFinalizeRequest,\n CreateConnectionPreparationRequest,\n CreateConnectionFinalizeRequest\n} from './connections';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FMediator } from '@foblex/mediator';\nimport { EmitTransformChangesRequest, GetSelectionRequest } from '../domain';\nimport {\n ExternalItemFinalizeRequest,\n ExternalItemPreparationRequest,\n FCreateNodeEvent,\n isExternalItem\n} from '../f-external-item';\nimport { SingleSelectRequest } from './single-select';\nimport { NodeResizeFinalizeRequest, NodeResizePreparationRequest } from './node-resize';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from './i-f-drag-and-drop-plugin';\nimport { BrowserService } from '@foblex/platform';\nimport { ICanRunOutsideAngular, IPointerEvent } from '@foblex/drag-toolkit';\n\n@Directive({\n selector: \"f-flow[fDraggable]\",\n exportAs: 'fDraggable'\n})\nexport class FDraggableDirective extends FDraggableBase implements OnInit, AfterViewInit, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input('fDraggableDisabled')\n public override disabled: boolean = false;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Output()\n public override fSelectionChange: EventEmitter<FSelectionChangeEvent> = new EventEmitter<FSelectionChangeEvent>();\n\n // @Output()\n // public override fConnectionIntersectNode: EventEmitter<ConnectionIntersectNodeEvent> = new EventEmitter<ConnectionIntersectNodeEvent>();\n\n @Output()\n public override fCreateNode: EventEmitter<FCreateNodeEvent> = new EventEmitter<FCreateNodeEvent>();\n\n @Output()\n public override fReassignConnection: EventEmitter<FReassignConnectionEvent> = new EventEmitter<FReassignConnectionEvent>();\n\n @Output()\n public override fCreateConnection: EventEmitter<FCreateConnectionEvent> = new EventEmitter<FCreateConnectionEvent>();\n\n @ContentChildren(F_DRAG_AND_DROP_PLUGIN, { descendants: true })\n private plugins!: QueryList<IFDragAndDropPlugin>;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fDraggableDataContext: FDraggableDataContext,\n @Inject(NgZone) @Optional() ngZone: ICanRunOutsideAngular,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n super(ngZone);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fDraggable = this;\n }\n\n public ngAfterViewInit(): void {\n super.subscribe(this.fBrowser.document);\n }\n\n public override onPointerDown(event: IPointerEvent): boolean {\n this.fDraggableDataContext.reset();\n let result: boolean = event.isMouseLeftButton();\n\n this.plugins.forEach((p) => {\n p.onPointerDown?.(event);\n });\n\n this.fMediator.send<void>(new SingleSelectRequest(event));\n\n this.fMediator.send<void>(new ReassignConnectionPreparationRequest(event));\n\n this.fMediator.send<void>(new CreateConnectionPreparationRequest(event));\n\n if (!result) {\n this.finalizeDragSequence();\n }\n return result;\n }\n\n protected override prepareDragSequence(event: IPointerEvent) {\n\n this.plugins.forEach((p) => {\n p.prepareDragSequence?.(event);\n });\n\n this.fMediator.send<void>(new NodeResizePreparationRequest(event));\n\n this.fMediator.send<void>(new NodeMovePreparationRequest(event));\n\n this.fMediator.send<void>(new CanvasMovePreparationRequest(event));\n\n this.fMediator.send<void>(new ExternalItemPreparationRequest(event));\n\n this.fDraggableDataContext.draggableItems.forEach((item) => {\n item.initialize?.();\n });\n\n if (this.fDraggableDataContext.draggableItems.length > 0) {\n this.hostElement.classList.add('f-dragging');\n this.emitSelectionChangeEvent();\n }\n }\n\n protected override onSelect(event: Event): void {\n\n this.plugins.forEach((p) => {\n p.onSelect?.(event);\n });\n\n if (this.isTargetItemExternal(event)) {\n event.preventDefault();\n }\n }\n\n private isTargetItemExternal(event: Event): boolean {\n let isTargetItemExternal = this.isExternalItem(event.target as HTMLElement);\n let isTargetParentItemExternal = this.isExternalItem((event.target as Node).parentNode as HTMLElement);\n return isTargetItemExternal || isTargetParentItemExternal;\n }\n\n private isExternalItem(target: HTMLElement): boolean {\n let result = false;\n try {\n result = isExternalItem(target);\n } catch (e) {\n }\n return result;\n }\n\n public override onPointerMove(event: IPointerEvent): void {\n const pointerPositionInCanvas = Point.fromPoint(event.getPosition()).elementTransform(this.hostElement);\n const difference: IPoint = pointerPositionInCanvas.div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n this.fDraggableDataContext.draggableItems.forEach((item) => {\n item.move({ ...difference });\n });\n }\n\n public override onPointerUp(event: IPointerEvent): void {\n\n this.plugins.forEach((p) => {\n p.onPointerUp?.(event);\n });\n\n this.fMediator.send<void>(new ReassignConnectionFinalizeRequest(event));\n\n this.fMediator.send<void>(new CreateConnectionFinalizeRequest(event));\n\n this.fMediator.send<void>(new NodeResizeFinalizeRequest(event));\n\n this.fMediator.send<void>(new NodeMoveFinalizeRequest(event));\n\n this.fMediator.send<void>(new CanvasMoveFinalizeRequest(event));\n\n this.fMediator.send<void>(new ExternalItemFinalizeRequest(event));\n\n this.hostElement.classList.remove('f-dragging');\n\n this.fDraggableDataContext.reset();\n }\n\n protected override finalizeDragSequence(): void {\n this.emitSelectionChangeEvent();\n }\n\n private emitSelectionChangeEvent(): void {\n if (\n !this.fDraggableDataContext.isSelectedChanged\n ) {\n return;\n }\n this.fSelectionChange.emit(this.fMediator.send<FSelectionChangeEvent>(new GetSelectionRequest()));\n this.fDraggableDataContext.isSelectedChanged = false;\n this.fMediator.send<void>(new EmitTransformChangesRequest());\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n this.subscriptions$.unsubscribe();\n }\n}\n\n","export class FSelectionChangeEvent {\n\n constructor(\n public nodes: string[],\n public connections: string[],\n ) {\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FMinimapData } from '../f-minimap-data';\n\nexport class MinimapDragPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public minimap: FMinimapData\n ) {\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { FMinimapData } from '../f-minimap-data';\n\nexport class CalculateFlowPointFromMinimapPointRequest {\n\n constructor(\n public flowRect: IRect,\n public canvasPosition: IPoint,\n public eventPoint: IPoint,\n public minimap: FMinimapData\n ) {\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FMinimapData } from '../f-minimap-data';\n\n@Injectable()\n@FExecutionRegister(CalculateFlowPointFromMinimapPointRequest)\nexport class CalculateFlowPointFromMinimapPointExecution\n implements IExecution<CalculateFlowPointFromMinimapPointRequest, IPoint> {\n\n private get canvasScale(): number {\n return this.fComponentsStore.fCanvas!.transform.scale;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(payload: CalculateFlowPointFromMinimapPointRequest): IPoint {\n return PointExtensions.sub(\n payload.canvasPosition,\n PointExtensions.sub(\n this.getPositionInViewBox(payload.eventPoint, payload.minimap),\n this.getNormalizedFlowCenter(payload.flowRect)\n )\n );\n }\n\n private getNormalizedFlowCenter(flowRect: IRect): IPoint {\n return Point.fromPoint(flowRect.gravityCenter).sub(flowRect);\n }\n\n private getPositionInViewBox(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n const eventPointInFlow = this.normalizeEventPoint(eventPoint, minimap);\n return PointExtensions.sum(\n eventPointInFlow,\n RectExtensions.mult(minimap.viewBox, this.canvasScale)\n );\n }\n\n public normalizeEventPoint(point: IPoint, minimap: FMinimapData): Point {\n return this.getEventPointInMinimap(point, minimap)\n .mult(minimap.scale).mult(this.canvasScale);\n }\n\n private getEventPointInMinimap(eventPoint: IPoint, minimap: FMinimapData): Point {\n return Point.fromPoint(eventPoint).elementTransform(minimap.element as unknown as HTMLElement);\n }\n}\n","import { IPoint, IRect, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { IDraggableItem } from '../../f-draggable';\nimport { FMediator } from '@foblex/mediator';\nimport { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point';\nimport { FMinimapData } from './f-minimap-data';\n\nexport class FMinimapDragHandler implements IDraggableItem {\n\n private lastDifference: IPoint | null = null;\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private flowRect: IRect,\n private canvasPosition: IPoint,\n private eventPoint: IPoint,\n private minimap: FMinimapData\n ) {\n }\n\n public initialize(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.add('f-scaled-animate');\n }\n\n public move(difference: IPoint): void {\n if (this.lastDifference && this.isSamePoint(difference, this.lastDifference)) {\n return;\n }\n\n this.lastDifference = difference;\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(Point.fromPoint(this.eventPoint).add(difference)));\n this.fComponentsStore.fCanvas!.redraw();\n }\n\n private isSamePoint(point1: IPoint, point2: IPoint): boolean {\n return point1.x === point2.x && point1.y === point2.y;\n }\n\n private getNewPosition(eventPoint: IPoint): IPoint {\n return this.fMediator.send<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.flowRect, this.canvasPosition, eventPoint, this.minimap\n ));\n }\n\n public complete(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.remove('f-scaled-animate');\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragPreparationRequest } from './minimap-drag-preparation.request';\nimport { IPoint, IRect, Point, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { CalculateFlowPointFromMinimapPointRequest } from '../calculate-flow-point-from-minimap-point';\nimport { FMinimapData } from '../f-minimap-data';\n\n@Injectable()\n@FExecutionRegister(MinimapDragPreparationRequest)\nexport class MinimapDragPreparationExecution implements IExecution<MinimapDragPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: MinimapDragPreparationRequest): void {\n const eventPoint = request.event.getPosition();\n const startCanvasPosition = Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position);\n\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(eventPoint, request.minimap));\n this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(eventPoint).elementTransform(this.flowHost);\n this.fDraggableDataContext.draggableItems = [\n new FMinimapDragHandler(\n this.fComponentsStore, this.fMediator, this.getFlowRect(),\n startCanvasPosition, eventPoint, request.minimap,\n )\n ];\n }\n\n private getNewPosition(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n return this.fMediator.send<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.getFlowRect(),\n Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position),\n eventPoint, minimap,\n ));\n }\n\n private getFlowRect(): IRect {\n return RectExtensions.fromElement(this.flowHost);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragPreparationRequest } from './minimap-drag-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FValidatorRegister(MinimapDragPreparationRequest)\nexport class MinimapDragPreparationValidator implements IValidator<MinimapDragPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: MinimapDragPreparationRequest): boolean {\n return !this.fDraggableDataContext.draggableItems.length &&\n !!request.event.targetElement.closest('.f-minimap') &&\n this.fComponentsStore.flowHost.contains(request.event.targetElement);\n }\n}\n","import { MinimapDragPreparationExecution } from './minimap-drag-preparation.execution';\nimport { MinimapDragPreparationValidator } from './minimap-drag-preparation.validator';\n\nexport const MINIMAP_DRAG_PREPARATION_PROVIDERS = [\n\n MinimapDragPreparationExecution,\n\n MinimapDragPreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class MinimapDragFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragFinalizeRequest } from './minimap-drag-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(MinimapDragFinalizeRequest)\nexport class MinimapDragFinalizeExecution implements IExecution<MinimapDragFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: MinimapDragFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragFinalizeRequest } from './minimap-drag-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\n\n@Injectable()\n@FValidatorRegister(MinimapDragFinalizeRequest)\nexport class MinimapDragFinalizeValidator implements IValidator<MinimapDragFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: MinimapDragFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FMinimapDragHandler\n );\n }\n}\n","import { MinimapDragFinalizeExecution } from './minimap-drag-finalize.execution';\nimport { MinimapDragFinalizeValidator } from './minimap-drag-finalize.validator';\n\nexport const MINIMAP_DRAG_FINALIZE_PROVIDERS = [\n\n MinimapDragFinalizeExecution,\n\n MinimapDragFinalizeValidator,\n];\n","import { MINIMAP_DRAG_PREPARATION_PROVIDERS } from './minimap-drag-preparation';\nimport { MINIMAP_DRAG_FINALIZE_PROVIDERS } from './minimap-drag-finalize';\nimport { CalculateFlowPointFromMinimapPointExecution } from './calculate-flow-point-from-minimap-point';\n\nexport const F_MINIMAP_DRAG_AND_DROP_PROVIDERS = [\n\n CalculateFlowPointFromMinimapPointExecution,\n\n ...MINIMAP_DRAG_FINALIZE_PROVIDERS,\n\n ...MINIMAP_DRAG_PREPARATION_PROVIDERS,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class SelectionAreaFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaFinalizeRequest } from './selection-area-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaFinalizeRequest)\nexport class SelectionAreaFinalizeExecution implements IExecution<SelectionAreaFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectionAreaFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","export class GetCanBeSelectedItemsRequest {\n}\n","import { IPoint, Point, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { EmitTransformChangesRequest, ISelectableWithRect } from '../../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { GetCanBeSelectedItemsRequest } from '../../domain/get-can-be-selected-items/get-can-be-selected-items-request';\nimport { FDraggableDataContext, IDraggableItem } from '../../f-draggable';\nimport { FSelectionAreaBase } from '../f-selection-area-base';\nimport { ICanChangeSelection } from '../../mixins';\n\nexport class SelectionAreaDragHandle implements IDraggableItem {\n\n private canBeSelected: ISelectableWithRect[] = [];\n\n private selectedByMove: ICanChangeSelection[] = [];\n\n private get canvasPosition(): Point {\n return Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position).add(this.fComponentsStore.fCanvas!.transform.scaledPosition);\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fSelectionArea: FSelectionAreaBase,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public initialize(): void {\n this.canBeSelected = this.fMediator.send(new GetCanBeSelectedItemsRequest());\n\n this.fSelectionArea.show();\n this.fSelectionArea.draw(\n RectExtensions.initialize(\n this.fDraggableDataContext.onPointerDownPosition.x,\n this.fDraggableDataContext.onPointerDownPosition.y\n )\n );\n }\n\n public move(difference: IPoint): void {\n const currentPoint = Point.fromPoint(difference).add(this.fDraggableDataContext.onPointerDownPosition);\n const x: number = Math.min(this.fDraggableDataContext.onPointerDownPosition.x, currentPoint.x);\n const y: number = Math.min(this.fDraggableDataContext.onPointerDownPosition.y, currentPoint.y);\n\n const width = Math.abs(difference.x);\n const height = Math.abs(difference.y);\n\n this.fSelectionArea.draw(\n RectExtensions.initialize(x, y, width, height)\n );\n this.selectedByMove = [];\n this.canBeSelected.forEach((item) => {\n item.element.deselect();\n\n const itemRect = RectExtensions.addPoint(item.rect, this.canvasPosition);\n\n const isIntersect = RectExtensions.intersectionWithRect(itemRect, RectExtensions.initialize(x, y, width, height));\n if (isIntersect) {\n\n item.element.select();\n this.selectedByMove.push(item.element);\n }\n });\n this.fMediator.send<void>(new EmitTransformChangesRequest());\n }\n\n public complete(): void {\n this.fSelectionArea.hide();\n this.fDraggableDataContext.selectedItems.push(...this.selectedByMove);\n if (this.selectedByMove.length > 0) {\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaFinalizeRequest } from './selection-area-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\n\n@Injectable()\n@FValidatorRegister(SelectionAreaFinalizeRequest)\nexport class SelectionAreaFinalizeValidator implements IValidator<SelectionAreaFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SelectionAreaFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) =>\n x instanceof SelectionAreaDragHandle\n );\n }\n}\n","import { SelectionAreaFinalizeExecution } from './selection-area-finalize.execution';\nimport { SelectionAreaFinalizeValidator } from './selection-area-finalize.validator';\n\nexport const SELECTION_AREA_FINALIZE_PROVIDERS = [\n\n SelectionAreaFinalizeExecution,\n\n SelectionAreaFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FSelectionAreaBase } from '../../f-selection-area-base';\n\nexport class SelectionAreaPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fSelectionArea: FSelectionAreaBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaPreparationRequest } from './selection-area-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaPreparationRequest)\nexport class SelectionAreaPreparationExecution implements IExecution<SelectionAreaPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: SelectionAreaPreparationRequest): void {\n this.fDraggableDataContext.draggableItems = [\n new SelectionAreaDragHandle(\n this.fComponentsStore, request.fSelectionArea, this.fDraggableDataContext, this.fMediator\n )\n ];\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaPreparationRequest } from './selection-area-preparation.request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\n\n@Injectable()\n@FValidatorRegister(SelectionAreaPreparationRequest)\nexport class SelectionAreaPreparationValidator implements IValidator<SelectionAreaPreparationRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SelectionAreaPreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isShiftPressed(request.event.originalEvent);\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private isShiftPressed(event: { shiftKey: boolean }): boolean {\n return event.shiftKey;\n }\n}\n","import { SelectionAreaPreparationExecution } from './selection-area-preparation.execution';\nimport { SelectionAreaPreparationValidator } from './selection-area-preparation.validator';\n\nexport const SELECTION_AREA_PREPARATION_PROVIDERS = [\n\n SelectionAreaPreparationExecution,\n\n SelectionAreaPreparationValidator,\n];\n","import { SELECTION_AREA_FINALIZE_PROVIDERS } from './selection-area-finalize';\nimport { SELECTION_AREA_PREPARATION_PROVIDERS } from './selection-area-preparation';\n\nexport const F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS = [\n\n ...SELECTION_AREA_FINALIZE_PROVIDERS,\n\n ...SELECTION_AREA_PREPARATION_PROVIDERS\n];\n","import { CANVAS_PROVIDERS } from './canvas';\nimport { CONNECTIONS_PROVIDERS } from './connections/providers';\nimport { SINGLE_SELECT_PROVIDERS } from './single-select';\nimport { NODE_PROVIDERS } from './node';\nimport { NODE_RESIZE_PROVIDERS } from './node-resize';\nimport { F_MINIMAP_DRAG_AND_DROP_PROVIDERS } from '../f-minimap/domain/providers';\nimport { F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS } from '../f-external-item/domain/providers';\nimport { F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS } from '../f-selection-area/domain/providers';\nimport { DRAG_AND_DROP_COMMON_PROVIDERS } from './domain';\n\nexport const F_DRAGGABLE_PROVIDERS = [\n\n ...CANVAS_PROVIDERS,\n\n ...CONNECTIONS_PROVIDERS,\n\n ...DRAG_AND_DROP_COMMON_PROVIDERS,\n\n ...SINGLE_SELECT_PROVIDERS,\n\n ...F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS,\n\n ...NODE_PROVIDERS,\n\n ...NODE_RESIZE_PROVIDERS,\n\n ...F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS,\n\n ...F_MINIMAP_DRAG_AND_DROP_PROVIDERS\n];\n","import { ClearSelectionRequest } from './clear-selection.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(ClearSelectionRequest)\nexport class ClearSelectionExecution implements IExecution<ClearSelectionRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: ClearSelectionRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => x.deselect());\n this.fDraggableDataContext.selectedItems = [];\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class GetSelectionRequest {\n\n}\n","import { GetSelectionRequest } from './get-selection.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext, FSelectionChangeEvent } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(GetSelectionRequest)\nexport class GetSelectionExecution implements IExecution<GetSelectionRequest, FSelectionChangeEvent> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(): FSelectionChangeEvent {\n\n let selectedNodes: string[] = [];\n let selectedConnections: string[] = [];\n\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n if (x.hostElement.classList.contains('f-node')) {\n selectedNodes.push(x.hostElement.dataset['fNodeId']!)\n } else {\n selectedConnections.push(x.hostElement.id);\n }\n });\n\n return new FSelectionChangeEvent(selectedNodes, selectedConnections);\n }\n}\n","export class SelectRequest {\n\n constructor(\n public nodes: string[],\n public connections: string[]\n ) {\n }\n}\n","import { SelectRequest } from './select.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectRequest)\nexport class SelectExecution implements IExecution<SelectRequest, void> {\n\n constructor(\n private fDataContext: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n });\n this.fDraggableDataContext.selectedItems = [];\n\n request.nodes.forEach((key) => {\n const node = this.fDataContext.fNodes.find((x) => x.fId === key);\n if(node) {\n node.select();\n this.fDraggableDataContext.selectedItems.push(node);\n }\n });\n\n request.connections.forEach((key) => {\n const connection = this.fDataContext.fConnections.find((x) => x.fId === key);\n if(connection) {\n connection.select();\n this.fDraggableDataContext.selectedItems.push(connection);\n }\n });\n\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class SelectAllRequest {\n\n}\n","import { SelectAllRequest } from './select-all.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectAllRequest)\nexport class SelectAllExecution implements IExecution<SelectAllRequest, void> {\n\n constructor(\n private fDataContext: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectAllRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n });\n this.fDraggableDataContext.selectedItems = [];\n this.fDataContext.fNodes.forEach((x) => {\n x.select();\n this.fDraggableDataContext.selectedItems.push(x);\n });\n this.fDataContext.fConnections.forEach((x) => {\n x.select();\n this.fDraggableDataContext.selectedItems.push(x);\n });\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class SelectAndUpdateNodeLayerRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","export class MoveFrontElementsBeforeTargetElementRequest {\n\n constructor(\n public fItemsContainer: HTMLElement, // fGroupsContainer || fNodesContainer || fConnectionsContainer\n public allElements: Element[],\n public elementsThatShouldBeInFront: Element[],\n public targetIndex: number\n ) {\n }\n}\n","import { MoveFrontElementsBeforeTargetElementRequest } from './move-front-elements-before-target-element.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(MoveFrontElementsBeforeTargetElementRequest)\nexport class MoveFrontElementsBeforeTargetElementExecution implements IExecution<MoveFrontElementsBeforeTargetElementRequest, void> {\n\n public handle(request: MoveFrontElementsBeforeTargetElementRequest): void {\n const elementsToMove: Element[] = [];\n for (let i = request.targetIndex + 1; i < request.allElements.length; i++) {\n const element = request.allElements[ i ];\n if (!request.elementsThatShouldBeInFront.includes(element)) {\n elementsToMove.push(element);\n }\n }\n elementsToMove.forEach((x) => {\n request.fItemsContainer.removeChild(x);\n request.fItemsContainer.insertBefore(x, request.allElements[ request.targetIndex ]);\n });\n }\n}\n","import { ICanChangeSelection } from '../../mixins';\n\nexport class UpdateItemAndChildrenLayersRequest {\n\n constructor(\n public item: ICanChangeSelection,\n public itemContainer: HTMLElement,\n ) {\n }\n}\n","export class GetDeepChildrenNodesAndGroupsRequest {\n\n constructor(\n public fId: string\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetDeepChildrenNodesAndGroupsRequest } from './get-deep-children-nodes-and-groups.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FNodeBase } from '../../f-node';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetDeepChildrenNodesAndGroupsRequest)\nexport class GetDeepChildrenNodesAndGroupsExecution\n implements IExecution<GetDeepChildrenNodesAndGroupsRequest, FNodeBase[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetDeepChildrenNodesAndGroupsRequest): FNodeBase[] {\n return this.getChildrenNodes(request.fId);\n }\n\n private getChildrenNodes(fId: string, visited: Set<string> = new Set()): FNodeBase[] {\n if (visited.has(fId)) {\n throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fId);\n }\n visited.add(fId);\n\n const result = this.fComponentsStore.fNodes.filter((x) => x.fParentId === fId);\n result.forEach((x) => {\n result.push(...this.getChildrenNodes(x.fId, visited));\n });\n return result;\n }\n}\n","import { UpdateItemAndChildrenLayersRequest } from './update-item-and-children-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport { FNodeBase } from '../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../get-deep-children-nodes-and-groups';\nimport { MoveFrontElementsBeforeTargetElementRequest } from './move-front-elements-before-target-element';\n\n@Injectable()\n@FExecutionRegister(UpdateItemAndChildrenLayersRequest)\nexport class UpdateItemAndChildrenLayersExecution implements IExecution<UpdateItemAndChildrenLayersRequest, void> {\n\n private get fGroupsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement;\n }\n\n private get fNodesContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement;\n }\n\n private get fConnectionsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fConnectionsContainer.nativeElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: UpdateItemAndChildrenLayersRequest): void {\n\n switch (request.itemContainer) {\n case this.fGroupsContainer:\n this.handleGroup(request);\n break;\n case this.fNodesContainer:\n this.handleNode(request);\n break;\n case this.fConnectionsContainer:\n this.handleConnection(request);\n break;\n default:\n throw new Error('Unknown container');\n }\n }\n\n private handleGroup(request: UpdateItemAndChildrenLayersRequest): void {\n const childrenNodesAndGroups = this.getChildrenNodesAndGroups(request.item.fId);\n const childrenGroups = this.getChildrenGroups(childrenNodesAndGroups);\n this.updateLayers(this.fGroupsContainer, request.item.hostElement as HTMLElement, childrenGroups);\n const childrenNodes = this.getChildrenNodes(childrenNodesAndGroups);\n if (childrenNodes.length) {\n this.updateLayers(this.fNodesContainer, childrenNodes[ 0 ], childrenNodes);\n }\n }\n\n private handleNode(request: UpdateItemAndChildrenLayersRequest): void {\n const childrenNodesAndGroups = this.getChildrenNodesAndGroups(request.item.fId);\n const childrenNodes = this.getChildrenNodes(childrenNodesAndGroups);\n this.updateLayers(request.itemContainer, request.item.hostElement as HTMLElement, childrenNodes);\n }\n\n private handleConnection(request: UpdateItemAndChildrenLayersRequest): void {\n this.updateLayers(request.itemContainer, request.item.hostElement as HTMLElement, []);\n }\n\n private updateLayers(itemContainer: HTMLElement, item: HTMLElement, elementsThatShouldBeInFront: HTMLElement[]): void {\n const allElements = Array.from(itemContainer.children) as HTMLElement[];\n const targetIndex = allElements.findIndex((x) => x === item);\n if (this.isAnythingNeedToBeMoved(allElements, targetIndex, elementsThatShouldBeInFront)) {\n this.fMediator.send(\n new MoveFrontElementsBeforeTargetElementRequest(itemContainer, allElements, elementsThatShouldBeInFront, targetIndex)\n );\n }\n }\n\n private isAnythingNeedToBeMoved(allElements: HTMLElement[], targetIndex: number, elementsThatShouldBeInFront: HTMLElement[]): boolean {\n for (let i = targetIndex + 1; i < allElements.length; i++) {\n if (!elementsThatShouldBeInFront.includes(allElements[ i ])) {\n return true;\n }\n }\n return false;\n }\n\n private getChildrenGroups(elements: HTMLElement[]): HTMLElement[] {\n const allElements = Array.from(this.fGroupsContainer.children) as HTMLElement[];\n return elements.filter((x) => this.fGroupsContainer.contains(x))\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodes(elements: HTMLElement[]): HTMLElement[] {\n const allElements = Array.from(this.fNodesContainer.children) as HTMLElement[];\n return elements.filter((x) => this.fNodesContainer.contains(x))\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodesAndGroups(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId)).map((x) => x.hostElement);\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { SelectAndUpdateNodeLayerRequest } from './select-and-update-node-layer.request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { UpdateItemAndChildrenLayersRequest } from '../../update-item-and-children-layers';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(SelectAndUpdateNodeLayerRequest)\nexport class SelectAndUpdateNodeLayerExecution implements IHandler<SelectAndUpdateNodeLayerRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n public handle(request: SelectAndUpdateNodeLayerRequest): void {\n this.selectNodeIfNotSelected(request.fNode);\n\n this.fMediator.send<void>(\n new UpdateItemAndChildrenLayersRequest(request.fNode, request.fNode.hostElement.parentElement as HTMLElement)\n );\n }\n\n private selectNodeIfNotSelected(fNode: FNodeBase) {\n if (!this.fDraggableDataContext.selectedItems.includes(fNode) && !fNode.fSelectionDisabled) {\n this.fDraggableDataContext.selectedItems.push(fNode);\n fNode.select();\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","import { ClearSelectionExecution } from './clear-selection';\nimport { GetSelectionExecution } from './get-selection';\nimport { SelectExecution } from './select';\nimport { SelectAllExecution } from './select-all';\nimport {\n SelectAndUpdateNodeLayerExecution\n} from './select-and-update-node-layer/select-and-update-node-layer.execution';\n\nexport const F_SELECTION_FEATURES = [\n\n ClearSelectionExecution,\n\n GetSelectionExecution,\n\n SelectExecution,\n\n SelectAllExecution,\n\n SelectAndUpdateNodeLayerExecution\n];\n","export class GetElementRectInFlowRequest {\n constructor(\n public element: HTMLElement | SVGElement\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetElementRectInFlowRequest } from './get-element-rect-in-flow-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport { IRoundedRect, RoundedRect, IPoint, ISize, Point, SizeExtensions, ITransformModel } from '@foblex/2d';\nimport { CreateRoundedRectFromElementRequest } from '../create-rounded-rect-from-element';\n\n@Injectable()\n@FExecutionRegister(GetElementRectInFlowRequest)\nexport class GetElementRectInFlowExecution implements IExecution<GetElementRectInFlowRequest, IRoundedRect> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetElementRectInFlowRequest): IRoundedRect {\n const systemRect = this.fMediator.send<IRoundedRect>(new CreateRoundedRectFromElementRequest(request.element));\n const position = this.transformElementPositionInFlow(systemRect);\n const size = this.transformElementSizeInFlow(systemRect);\n\n return new RoundedRect(\n position.x, position.y, size.width, size.height,\n systemRect.radius1, systemRect.radius2, systemRect.radius3, systemRect.radius4\n );\n }\n\n private transformElementPositionInFlow(rect: IRoundedRect): IPoint {\n return Point.fromPoint(rect).elementTransform(this.flowHost).sub(this.transform.scaledPosition).sub(this.transform.position).div(this.transform.scale);\n }\n\n private transformElementSizeInFlow(rect: IRoundedRect): ISize {\n return SizeExtensions.initialize(rect.width / this.transform.scale, rect.height / this.transform.scale);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IRect, ITransformModel, RectExtensions } from '@foblex/2d';\nimport { ISelectableWithRect } from './i-selectable-with-rect';\nimport { GetCanBeSelectedItemsRequest } from './get-can-be-selected-items-request';\nimport { FNodeBase } from '../../f-node';\nimport { FConnectionBase } from '../../f-connection';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(GetCanBeSelectedItemsRequest)\nexport class GetCanBeSelectedItemsExecution implements IExecution<void, ISelectableWithRect[]> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(): ISelectableWithRect[] {\n return [ ...this.getNodesWithRects(), ...this.getConnectionsWithRects() ].filter((x) => {\n return !this.fDraggableDataContext.selectedItems.includes(x.element);\n });\n }\n\n private getNodesWithRects(): ISelectableWithRect[] {\n return this.fNodes.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n rect: RectExtensions.mult(\n this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement)),\n this.transform.scale\n )\n };\n });\n }\n\n private getConnectionsWithRects(): ISelectableWithRect[] {\n return this.fConnections.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n rect: RectExtensions.mult(\n this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.boundingElement)),\n this.transform.scale\n )\n };\n });\n }\n}\n","import { EFConnectionBehavior } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { IRoundedRect } from '@foblex/2d';\n\nexport class GetConnectionLineRequest {\n\n constructor(\n public outputRect: IRoundedRect,\n public inputRect: IRoundedRect,\n public behavior: EFConnectionBehavior | string,\n public outputSide: EFConnectableSide,\n public inputSide: EFConnectableSide,\n ) {\n\n }\n}\n","import { GetConnectionLineRequest } from './get-connection-line.request';\nimport { Injectable } from '@angular/core';\nimport { EFConnectionBehavior } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetIntersections, ILine, IPoint, IRect, IRoundedRect, Line, Point } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(GetConnectionLineRequest)\nexport class GetConnectionLineExecution implements IExecution<GetConnectionLineRequest, ILine> {\n\n private behaviorHandlers = {\n\n [ EFConnectionBehavior.FLOATING.toString() ]: this.floatingBehavior,\n\n [ EFConnectionBehavior.FIXED_CENTER.toString() ]: this.fixedCenterBehavior,\n\n [ EFConnectionBehavior.FIXED.toString() ]: this.fixedOutboundBehaviour,\n }\n\n public handle(payload: GetConnectionLineRequest): ILine {\n return this.behaviorHandlers[ payload.behavior ](payload);\n }\n\n private floatingBehavior(payload: GetConnectionLineRequest): ILine {\n const fromResult = GetIntersections.getRoundedRectIntersections(payload.outputRect.gravityCenter, payload.inputRect.gravityCenter, payload.outputRect)[ 0 ];\n const toResult = GetIntersections.getRoundedRectIntersections(payload.inputRect.gravityCenter, payload.outputRect.gravityCenter, payload.inputRect)[ 0 ];\n return new Line(\n fromResult ? fromResult : payload.outputRect.gravityCenter,\n toResult ? toResult : payload.inputRect.gravityCenter\n );\n }\n\n private fixedCenterBehavior(payload: GetConnectionLineRequest): ILine {\n return new Line(\n payload.outputRect.gravityCenter,\n payload.inputRect.gravityCenter\n );\n }\n\n private fixedOutboundBehaviour(payload: GetConnectionLineRequest): ILine {\n return new Line(\n positionFixedOutbound[ payload.outputSide === EFConnectableSide.AUTO ? EFConnectableSide.BOTTOM : payload.outputSide ](payload.outputRect as IRoundedRect),\n positionFixedOutbound[ payload.inputSide === EFConnectableSide.AUTO ? EFConnectableSide.TOP : payload.inputSide ](payload.inputRect as IRoundedRect)\n );\n }\n}\n\nconst positionFixedOutbound = {\n [ EFConnectableSide.TOP ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.y = rect.y;\n result.x = rect.x + rect.width / 2;\n return result;\n },\n [ EFConnectableSide.BOTTOM ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.y = rect.y + rect.height;\n result.x = rect.x + rect.width / 2;\n return result;\n },\n [ EFConnectableSide.LEFT ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.x = rect.x;\n result.y = rect.y + rect.height / 2;\n return result;\n },\n [ EFConnectableSide.RIGHT ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.x = rect.x + rect.width;\n result.y = rect.y + rect.height / 2;\n return result;\n },\n};\n\n\n\n\n","export class GetFlowStateConnectionsRequest {\n\n}\n","import { Injectable } from '@angular/core';\nimport { GetFlowStateConnectionsRequest } from './get-flow-state-connections-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IFFlowStateConnection } from '../i-f-flow-state-connection';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateConnectionsRequest)\nexport class GetFlowStateConnectionsExecution implements IExecution<GetFlowStateConnectionsRequest, IFFlowStateConnection[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetFlowStateConnectionsRequest): IFFlowStateConnection[] {\n return this.fComponentsStore.fConnections.map((x) => {\n return {\n id: x.fId,\n fOutputId: x.fOutputId,\n fInputId: x.fInputId,\n fType: x.fType,\n fBehavior: x.fBehavior,\n isSelected: x.isSelected()\n }\n });\n }\n}\n","import { Type } from '@angular/core';\n\nexport class GetFlowStateNodesRequest {\n\n constructor(\n public type: Type<any>\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetFlowStateNodesRequest } from './get-flow-state-nodes-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IFFlowStateNode } from '../i-f-flow-state-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IFFlowStateConnector } from '../i-f-flow-state-connector';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateNodesRequest)\nexport class GetFlowStateNodesExecution implements IExecution<GetFlowStateNodesRequest, IFFlowStateNode[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetFlowStateNodesRequest): IFFlowStateNode[] {\n return this.fComponentsStore.fNodes.filter((x) => x instanceof request.type).map((x) => {\n return {\n id: x.fId,\n parent: x.fParentId,\n position: x.position,\n size: x.size,\n fOutputs: this.getOutputs(x.hostElement),\n fInputs: this.getInputs(x.hostElement),\n isSelected: x.isSelected()\n };\n });\n }\n\n private getOutputs(hostElement: HTMLElement): IFFlowStateConnector[] {\n return this.fComponentsStore.fOutputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {\n return {\n id: x.id,\n fConnectableSide: x.fConnectableSide\n }\n });\n }\n\n private getInputs(hostElement: HTMLElement): IFFlowStateConnector[] {\n return this.fComponentsStore.fInputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {\n return {\n id: x.id,\n fConnectableSide: x.fConnectableSide\n }\n });\n }\n}\n","export class GetFlowStateRequest {\n}\n","import { GetFlowStateRequest } from './get-flow-state.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IFFlowState } from './i-f-flow-state';\nimport { FComponentsStore } from '../../f-storage';\nimport { FGroupDirective, FNodeDirective } from '../../f-node';\nimport { IPoint, ITransformModel, PointExtensions } from '@foblex/2d';\nimport { GetFlowStateNodesRequest } from './get-flow-state-nodes';\nimport { GetFlowStateConnectionsRequest } from './get-flow-state-connections';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateRequest)\nexport class GetFlowStateExecution implements IExecution<GetFlowStateRequest, IFFlowState> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(payload: GetFlowStateRequest): IFFlowState {\n return {\n position: this.getCanvasPosition(this.fComponentsStore.fCanvas!.transform),\n scale: this.fComponentsStore.fCanvas!.transform.scale,\n nodes: this.fMediator.send(new GetFlowStateNodesRequest(FNodeDirective)),\n groups: this.fMediator.send(new GetFlowStateNodesRequest(FGroupDirective)),\n connections: this.fMediator.send(new GetFlowStateConnectionsRequest())\n }\n }\n\n private getCanvasPosition(transform: ITransformModel): IPoint {\n return PointExtensions.sum(transform.position, transform.scaledPosition);\n }\n}\n\n\n\n","import { GetFlowStateExecution } from './get-flow-state.execution';\nimport { GetFlowStateNodesExecution } from './get-flow-state-nodes';\nimport { GetFlowStateConnectionsExecution } from './get-flow-state-connections';\n\nexport const GET_FLOW_STATE_PROVIDERS = [\n\n GetFlowStateExecution,\n\n GetFlowStateNodesExecution,\n\n GetFlowStateConnectionsExecution\n];\n","export class GetScaledNodeRectsWithFlowPositionRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { GetScaledNodeRectsWithFlowPositionRequest } from './get-scaled-node-rects-with-flow-position.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetScaledNodeRectsWithFlowPositionRequest)\nexport class GetScaledNodeRectsWithFlowPositionExecution implements IExecution<GetScaledNodeRectsWithFlowPositionRequest, IRect | null> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetScaledNodeRectsWithFlowPositionRequest): IRect | null {\n return RectExtensions.union(this.getNodesRects());\n }\n\n private getNodesRects(): IRect[] {\n return this.getNodes().map((x) => {\n const rect = RectExtensions.fromElement(x.hostElement);\n return RectExtensions.initialize(x.position.x, x.position.y, rect.width, rect.height);\n });\n }\n\n private getNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n}\n","export class GetNodesRectRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { GetNodesRectRequest } from './get-nodes-rect.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetNodesRectRequest)\nexport class GetNodesRectExecution implements IExecution<GetNodesRectRequest, IRect | null> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetNodesRectRequest): IRect | null {\n return RectExtensions.union(this.getNodesRects());\n }\n\n private getNodesRects(): IRect[] {\n return this.getNodes().map((x) => RectExtensions.fromElement(x.hostElement));\n }\n\n private getNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class GetPositionInFlowRequest {\n constructor(\n public position: IPoint\n ) {\n }\n}\n","import { IPoint, ITransformModel, Point } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { GetPositionInFlowRequest } from './get-position-in-flow-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetPositionInFlowRequest)\nexport class GetPositionInFlowExecution implements IExecution<GetPositionInFlowRequest, IPoint> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetPositionInFlowRequest): IPoint {\n return Point.fromPoint(request.position).elementTransform(this.flowHost)\n .sub(this.transform.scaledPosition).sub(this.transform.position).div(this.transform.scale);\n }\n}\n","import { IRect, ITransformModel } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IsConnectionUnderNodeRequest } from './is-connection-under-node.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext, NodeDragHandler } from '../../f-draggable';\nimport { FNodeBase } from '../../f-node';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FConnectionBase } from '../../f-connection';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(IsConnectionUnderNodeRequest)\nexport class IsConnectionUnderNodeExecution implements IExecution<IsConnectionUnderNodeRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n // private getOutgoingConnectionsHandler: GetOutgoingConnectionsHandler,\n // private getIncomingConnectionsHandler: GetIncomingConnectionsHandler\n ) {\n }\n\n public handle(): void {\n\n const isValid = this.isValidRequest();\n if (!isValid) {\n return;\n }\n\n const fNode = (this.fDraggableDataContext.draggableItems[ 0 ] as NodeDragHandler).fNode;\n\n const outputsOfNode = this.getOutputsForNode(fNode);\n const inputsOfNode = this.getInputsForNode(fNode);\n\n const isCantBeConnectedByOutput = outputsOfNode.some((x) => !x.canBeConnected);\n\n const isCantBeConnectedByInput = this.fComponentsStore.fConnections.some((x) => {\n return inputsOfNode.find((input) => input.id === x.fInputId);\n });\n\n if (!isCantBeConnectedByInput && outputsOfNode.length && !isCantBeConnectedByOutput && inputsOfNode.length) {\n const output = outputsOfNode[ 0 ];\n const input = inputsOfNode[ 0 ];\n // const outgoingConnections = this.getOutgoingConnectionsHandler.handle([ output ]);\n // const incomingConnections = this.getIncomingConnectionsHandler.handle([ input ]);\n // if (outgoingConnections.length === 0 && incomingConnections.length === 0) {\n // const connections = this.findConnectionsUnderNode(fNode);\n // if (connections.length) {\n // //TODO: need to implement\n // }\n // }\n }\n }\n\n private isValidRequest(): boolean {\n const result =\n this.fDraggableDataContext.draggableItems.length === 1 &&\n this.fDraggableDataContext.draggableItems[ 0 ] instanceof NodeDragHandler;\n\n return result;\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private findConnectionsUnderNode(node: FNodeBase): FConnectionBase[] {\n const nodeRect = this.fMediator.send<IRect>(new GetElementRectInFlowRequest(node.hostElement));\n return this.fComponentsStore.fConnections.filter((x) => {\n // const intersection = [];// RectExtensions.intersectionWithVector(nodeRect, x.line.point1, x.line.point2, 0, 0, 0, 0);\n return ([]).length > 0\n });\n }\n}\n// @Injectable()\n// export class GetIncomingConnectionsHandler implements IHandler<FConnectorBase[], FConnectionBase[]> {\n//\n// private get fConnections(): FConnectionBase[] {\n// return this.fComponentsStore.fConnections;\n// }\n//\n// constructor(\n// private fComponentsStore: FComponentsStore,\n// ) {\n// }\n//\n// public handle(inputs: FConnectorBase[]): FConnectionBase[] {\n// const inputsIds = inputs.map((x) => x.id);\n// return this.fConnections.filter((x) => {\n// return inputsIds.includes(x.fInputId);\n// })!;\n// }\n// }\n// @Injectable()\n// export class GetOutgoingConnectionsHandler implements IHandler<FConnectorBase[], FConnectionBase[]> {\n//\n// private get fConnections(): FConnectionBase[] {\n// return this.fComponentsStore.fConnections;\n// }\n//\n// constructor(\n// private fComponentsStore: FComponentsStore,\n// ) {\n// }\n//\n// public handle(outputs: FConnectorBase[]): FConnectionBase[] {\n// const outputsIds = outputs.map((x) => x.id);\n// return this.fConnections.filter((x) => {\n// return outputsIds.includes(x.fOutputId);\n// })!;\n// }\n// }\n","export class RedrawConnectionsRequest {\n}\n","import { ILine } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { RedrawConnectionsRequest } from './redraw-connections-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetConnectionLineRequest } from '../get-connection-line';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FConnectionBase } from '../../f-connection';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\nimport { CreateConnectionMarkersRequest } from '../create-connection-markers';\nimport { IRoundedRect } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(RedrawConnectionsRequest)\nexport class RedrawConnectionsExecution implements IExecution<RedrawConnectionsRequest, void> {\n\n constructor(\n private readonly fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: RedrawConnectionsRequest): void {\n this.resetConnectors();\n\n if (this.fComponentsStore.fTempConnection) {\n this.setMarkers(this.fComponentsStore.fTempConnection);\n }\n\n if(this.fComponentsStore.fSnapConnection) {\n this.setMarkers(this.fComponentsStore.fSnapConnection);\n }\n\n this.fComponentsStore.fConnections.forEach((connection) => {\n const output = this.fComponentsStore.fOutputs.find((x) => x.id === connection.fOutputId);\n const input = this.fComponentsStore.fInputs.find((x) => x.id === connection.fInputId);\n if (output && input) {\n this.setupConnection(output, input, connection);\n }\n });\n }\n\n private resetConnectors(): void {\n this.fComponentsStore.fOutputs.forEach((output) => output.setConnected(false));\n this.fComponentsStore.fInputs.forEach((input) => input.setConnected(false));\n }\n\n private setupConnection(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): void {\n output.setConnected(true);\n input.setConnected(true);\n\n const line = this.getLine(output, input, connection);\n\n this.setMarkers(connection);\n\n connection.setLine(line.point1, output.fConnectableSide, line.point2, input.fConnectableSide);\n\n connection.initialize();\n connection.isSelected() ? connection.select() : null;\n }\n\n private getLine(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): ILine {\n const outputRect = this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(output.hostElement));\n const inputRect = this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(input.hostElement));\n return this.fMediator.send(new GetConnectionLineRequest(\n outputRect,\n inputRect,\n connection.fBehavior,\n output.fConnectableSide,\n input.fConnectableSide\n )\n );\n }\n\n private setMarkers(connection: FConnectionBase): void {\n this.fMediator.send(\n new CreateConnectionMarkersRequest(connection)\n );\n }\n}\n","export class ShowConnectionsAfterCalculationsRequest {\n}\n","import { Injectable } from '@angular/core';\nimport { ShowConnectionsAfterCalculationsRequest } from './show-connections-after-calculations-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(ShowConnectionsAfterCalculationsRequest)\nexport class ShowConnectionsAfterCalculationsExecution implements IExecution<ShowConnectionsAfterCalculationsRequest, void> {\n\n constructor(\n private readonly fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: ShowConnectionsAfterCalculationsRequest): void {\n this.fComponentsStore.fConnections.forEach((connection) => {\n connection.hostElement.style.display = 'unset';\n });\n }\n}\n","export class SortNodeLayersRequest {\n\n}\n","import { SortNodeLayersRequest } from './sort-node-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../get-deep-children-nodes-and-groups';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(SortNodeLayersRequest)\nexport class SortNodeLayersExecution implements IExecution<SortNodeLayersRequest, void> {\n\n private get fGroupsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement;\n }\n\n private get fNodesContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement;\n }\n\n private get fNodesContainerElements(): HTMLElement[] {\n return Array.from(this.fNodesContainer.children) as HTMLElement[];\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n }\n\n public handle(request: SortNodeLayersRequest): void {\n this.getGroups().forEach((parent: FNodeBase) => {\n this.moveChildrenNodes(this.getSortedChildrenNodes(parent));\n });\n }\n\n private getGroups(): FNodeBase[] {\n return this.fComponentsStore.fNodes.filter((x) => this.fGroupsContainer.contains(x.hostElement));\n }\n\n private getSortedChildrenNodes(\n parent: FNodeBase,\n ): HTMLElement[] {\n const allElements = this.fNodesContainerElements;\n return this.getChildrenNodes(parent.fId)\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodes(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId))\n .filter((x) => this.fNodesContainer.contains(x.hostElement)).map((x) => x.hostElement);\n }\n\n private moveChildrenNodes(\n sortedChildrenGroups: HTMLElement[],\n ): void {\n const fragment = this.fBrowser.document.createDocumentFragment();\n sortedChildrenGroups.forEach((childGroup: HTMLElement) => {\n fragment.appendChild(childGroup); // Append automatically removes the element from its current position\n });\n this.fNodesContainer.appendChild(fragment);\n }\n}\n","export class SortItemsByParentRequest {\n\n constructor(\n public fItemsContainer: HTMLElement // fGroupsContainer || fNodesContainer\n ) {\n }\n}\n","import { SortItemsByParentRequest } from './sort-items-by-parent.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../get-deep-children-nodes-and-groups';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(SortItemsByParentRequest)\nexport class SortItemsByParentExecution implements IExecution<SortItemsByParentRequest, void> {\n\n private fItemsContainer!: HTMLElement;\n\n private get fItemsFromContainer(): HTMLElement[] {\n return Array.from(this.fItemsContainer.children) as HTMLElement[];\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: SortItemsByParentRequest): void {\n this.fItemsContainer = request.fItemsContainer;\n this.getItems().forEach((parent: FNodeBase) => {\n this.moveChildrenItems(this.getSortedChildrenItems(parent), parent);\n });\n }\n\n private getItems(): FNodeBase[] {\n return this.fComponentsStore.fNodes.filter((x) => this.fItemsContainer.contains(x.hostElement));\n }\n\n private getSortedChildrenItems(\n parent: FNodeBase,\n ): HTMLElement[] {\n const allElements = this.fItemsFromContainer;\n const parentIndex = allElements.indexOf(parent.hostElement);\n return this.getChildrenGroups(parent.fId)\n .filter((child: HTMLElement) => allElements.indexOf(child) < parentIndex)\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenGroups(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId))\n .filter((x) => this.fItemsContainer.contains(x.hostElement)).map((x) => x.hostElement);\n }\n\n private moveChildrenItems(\n sortedChildrenItems: HTMLElement[],\n parent: FNodeBase,\n ): void {\n let nextSibling = parent.hostElement.nextElementSibling;\n\n const fragment = this.fBrowser.document.createDocumentFragment();\n\n sortedChildrenItems.forEach((child: HTMLElement) => {\n fragment.appendChild(child); // Append automatically removes the element from its current position\n });\n this.fItemsContainer.insertBefore(fragment, nextSibling);\n }\n}\n","export class SortItemLayersRequest {\n\n}\n","import { SortItemLayersRequest } from './sort-item-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { SortNodeLayersRequest } from './sort-node-layers-by-groups';\nimport { SortItemsByParentRequest } from './sort-items-by-parent';\nimport { FComponentsStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(SortItemLayersRequest)\nexport class SortItemLayersExecution implements IExecution<SortItemLayersRequest, void> {\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: SortItemLayersRequest): void {\n this.fMediator.send(new SortItemsByParentRequest(this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement));\n this.fMediator.send(new SortNodeLayersRequest());\n this.fMediator.send(new SortItemsByParentRequest(this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement));\n }\n}\n","export class SubscribeOnTransformChangesRequest {\n\n}\n","import { SubscribeOnTransformChangesRequest } from './subscribe-on-transform-changes.request';\nimport { Injectable } from '@angular/core';\nimport { merge, Observable } from 'rxjs';\nimport { FComponentsStore, FTransformStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(SubscribeOnTransformChangesRequest)\nexport class SubscribeOnTransformChangesExecution\n implements IExecution<SubscribeOnTransformChangesRequest, Observable<void>> {\n\n constructor(\n private fTransformStore: FTransformStore,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: SubscribeOnTransformChangesRequest): Observable<void> {\n return merge(\n this.fTransformStore.changes,\n this.fComponentsStore.componentsData$,\n this.fComponentsStore.componentsCount$\n );\n }\n}\n","export const F_CANVAS_ANIMATION_DURATION = 150;\n","import { BrowserService } from '@foblex/platform';\n\nexport function createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","export class CenterGroupOrNodeRequest {\n\n constructor(\n public id: string,\n public animated: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CenterGroupOrNodeRequest } from './center-group-or-node-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { F_CANVAS_ANIMATION_DURATION } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(CenterGroupOrNodeRequest)\nexport class CenterGroupOrNodeExecution implements IExecution<CenterGroupOrNodeRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: CenterGroupOrNodeRequest): void {\n const fNode = this.getNode(request.id);\n if (!fNode) {\n return;\n }\n\n this.toCenter(this.getNodeRect(fNode), this.getFlowRect(), fNode.position);\n\n request.animated ? this.fComponentsStore.fCanvas!.redrawWithAnimation() : this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);\n }\n\n public toCenter(fNodeRect: IRect, fFlowRect: IRect, position: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = PointExtensions.initialize(\n (fFlowRect.width - fNodeRect.width) / 2 - position.x * this.transform.scale,\n (fFlowRect.height - fNodeRect.height) / 2 - position.y * this.transform.scale\n );\n }\n\n private getNode(id: string): FNodeBase | undefined {\n return this.fComponentsStore.fNodes.find((x) => x.fId === id);\n }\n\n private getNodeRect(fNode: FNodeBase): IRect {\n return RectExtensions.fromElement(fNode.hostElement);\n }\n\n private getFlowRect(): IRect {\n return RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FitToFlowRequest {\n\n constructor(\n public toCenter: IPoint,\n public animated: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FitToFlowRequest } from './fit-to-flow-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { F_CANVAS_ANIMATION_DURATION, GetNodesRectRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(FitToFlowRequest)\nexport class FitToFlowExecution implements IExecution<FitToFlowRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: FitToFlowRequest): void {\n const fNodesRect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n\n this.fitToParent(\n fNodesRect,\n RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement),\n this.fComponentsStore.fNodes.map((x) => x.position),\n request.toCenter\n );\n request.animated ? this.fComponentsStore.fCanvas!.redrawWithAnimation() : this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);\n }\n\n public fitToParent(rect: IRect, parentRect: IRect, points: IPoint[], toCenter: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n const itemsContainerWidth = (rect.width / this.transform.scale) + toCenter.x;\n const itemsContainerHeight = (rect.height / this.transform.scale) + toCenter.y;\n if (\n (itemsContainerWidth > parentRect.width || itemsContainerHeight > parentRect.height) ||\n itemsContainerWidth < parentRect.width && itemsContainerHeight < parentRect.height\n ) {\n this.transform.scale = Math.min(parentRect.width / itemsContainerWidth, parentRect.height / itemsContainerHeight);\n }\n\n const newX = (parentRect.width - itemsContainerWidth * this.transform.scale) / 2 - this.transform.position.x * this.transform.scale;\n const newY = (parentRect.height - itemsContainerHeight * this.transform.scale) / 2 - this.transform.position.y * this.transform.scale;\n\n this.transform.position = PointExtensions.initialize(newX + (toCenter.x / 2) * this.transform.scale, newY + (toCenter.y / 2) * this.transform.scale)\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","import { IPoint, ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasPositionRequest {\n\n constructor(\n public transform: ITransformModel,\n public position: IPoint | undefined\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InputCanvasPositionRequest } from './input-canvas-position-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasPositionRequest)\nexport class InputCanvasPositionExecution implements IExecution<InputCanvasPositionRequest, void> {\n\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: InputCanvasPositionRequest): void {\n if (!request.position) {\n return;\n }\n const position = PointExtensions.sum(request.transform.position, request.transform.scaledPosition);\n if (!PointExtensions.isEqual(position, request.position)) {\n request.transform.position = request.position;\n request.transform.scaledPosition = PointExtensions.initialize();\n this.fComponentsStore.fCanvas?.redraw();\n }\n }\n}\n","import { ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasScaleRequest {\n\n constructor(\n public transform: ITransformModel,\n public scale: number | undefined\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InputCanvasScaleRequest } from './input-canvas-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasScaleRequest)\nexport class InputCanvasScaleExecution implements IExecution<InputCanvasScaleRequest, void> {\n\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: InputCanvasScaleRequest): void {\n if (!request.scale) {\n return;\n }\n request.transform.scale = request.scale;\n this.fComponentsStore.fCanvas?.redraw();\n }\n}\n","export class ResetScaleRequest {\n}\n","import { Injectable } from '@angular/core';\nimport { ResetScaleRequest } from './reset-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n\n@Injectable()\n@FExecutionRegister(ResetScaleRequest)\nexport class ResetScaleExecution implements IExecution<ResetScaleRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: ResetScaleRequest): void {\n this.transform.scale = 1;\n this.transform.scaledPosition = PointExtensions.initialize();\n }\n}\n","export class ResetScaleAndCenterRequest {\n\n constructor(\n public animated: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ResetScaleAndCenterRequest } from './reset-scale-and-center-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { F_CANVAS_ANIMATION_DURATION, GetNodesRectRequest } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\n\n\n@Injectable()\n@FExecutionRegister(ResetScaleAndCenterRequest)\nexport class ResetScaleAndCenterExecution implements IExecution<ResetScaleAndCenterRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: ResetScaleAndCenterRequest): void {\n const fNodesRect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n this.oneToOneCentering(\n fNodesRect,\n RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement),\n this.fComponentsStore.fNodes.map((x) => x.position)\n );\n\n request.animated ? this.fComponentsStore.fCanvas!.redrawWithAnimation() : this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);\n }\n\n public oneToOneCentering(rect: IRect, parentRect: IRect, points: IPoint[]): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n\n const newX = (parentRect.width - rect.width / this.transform.scale) / 2 - this.transform.position.x;\n const newY = (parentRect.height - rect.height / this.transform.scale) / 2 - this.transform.position.y;\n\n this.transform.scale = 1;\n this.transform.position = PointExtensions.initialize(newX, newY);\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class UpdateScaleRequest {\n\n constructor(\n public scale: number,\n public toPosition: IPoint\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UpdateScaleRequest } from './update-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n\n@Injectable()\n@FExecutionRegister(UpdateScaleRequest)\nexport class UpdateScaleExecution implements IExecution<UpdateScaleRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: UpdateScaleRequest): void {\n if (request.scale !== this.transform.scale) {\n\n const summaryPosition = PointExtensions.sum(this.transform.scaledPosition, this.transform.position);\n\n const newX = request.toPosition.x - (request.toPosition.x - summaryPosition.x) * request.scale / this.transform.scale;\n const newY = request.toPosition.y - (request.toPosition.y - summaryPosition.y) * request.scale / this.transform.scale;\n\n this.transform.scale = request.scale;\n this.transform.scaledPosition = PointExtensions.sub(PointExtensions.initialize(newX, newY), this.transform.position);\n }\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FCanvasChangeEvent {\n constructor(\n public readonly position: IPoint,\n public readonly scale: number,\n ) {\n }\n}\n","import { CenterGroupOrNodeExecution } from './center-group-or-node';\nimport { FitToFlowExecution } from './fit-to-flow';\nimport { ResetScaleAndCenterExecution } from './reset-scale-and-center';\nimport { ResetScaleExecution } from './reset-scale';\nimport { UpdateScaleExecution } from './update-scale';\nimport { InputCanvasPositionExecution } from './input-canvas-position';\nimport { InputCanvasScaleExecution } from './input-canvas-scale';\n\nexport const F_CANVAS_FEATURES = [\n\n CenterGroupOrNodeExecution,\n\n FitToFlowExecution,\n\n InputCanvasPositionExecution,\n\n InputCanvasScaleExecution,\n\n ResetScaleExecution,\n\n ResetScaleAndCenterExecution,\n\n UpdateScaleExecution\n];\n","import { PointExtensions, TransformModelExtensions, IPoint } from '@foblex/2d';\nimport { Directive, ElementRef, EventEmitter, InjectionToken } from '@angular/core';\nimport { FCanvasChangeEvent } from './domain';\nimport { FNodeBase } from '../f-node';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_CANVAS = new InjectionToken<FCanvasBase>('F_CANVAS');\n\n\n@Directive()\nexport abstract class FCanvasBase implements IHasHostElement {\n\n public abstract fCanvasChange: EventEmitter<FCanvasChangeEvent>;\n\n public abstract fNodes: FNodeBase[];\n\n public abstract hostElement: HTMLElement;\n\n public abstract fGroupsContainer: ElementRef<HTMLElement>;\n\n public abstract fNodesContainer: ElementRef<HTMLElement>;\n\n public abstract fConnectionsContainer: ElementRef<HTMLElement>;\n\n public transform = TransformModelExtensions.default();\n\n public abstract redraw(): void;\n\n public abstract redrawWithAnimation(): void;\n\n public getPosition(): IPoint {\n return this.transform.position;\n }\n\n public setPosition(position: IPoint): void {\n this.transform.position = position;\n }\n\n public abstract setZoom(scale: number, toPosition: IPoint): void;\n\n public abstract resetZoom(): void;\n\n public emitCanvasChangeEvent(): void {\n this.fCanvasChange.emit(\n new FCanvasChangeEvent(PointExtensions.sum(this.transform.position, this.transform.scaledPosition), this.transform.scale)\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild,\n} from \"@angular/core\";\nimport {\n FCanvasBase, F_CANVAS\n} from './f-canvas-base';\nimport { IPoint, PointExtensions, TransformModelExtensions } from '@foblex/2d';\nimport {\n CenterGroupOrNodeRequest,\n FCanvasChangeEvent, FitToFlowRequest,\n InputCanvasPositionRequest,\n InputCanvasScaleRequest, ResetScaleAndCenterRequest, ResetScaleRequest, UpdateScaleRequest\n} from './domain';\nimport { FComponentsStore } from '../f-storage';\nimport { FNodeBase } from '../f-node';\nimport { FMediator } from '@foblex/mediator';\nimport {\n EmitTransformChangesRequest,\n F_CANVAS_ANIMATION_DURATION,\n} from '../domain';\n\n@Component({\n selector: 'f-canvas',\n templateUrl: './f-canvas.component.html',\n styleUrls: [ './f-canvas.component.scss' ],\n exportAs: 'fComponent',\n host: {\n 'class': 'f-component f-canvas',\n },\n providers: [\n { provide: F_CANVAS, useExisting: FCanvasComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FCanvasComponent extends FCanvasBase implements OnInit {\n\n @Output()\n public override fCanvasChange: EventEmitter<FCanvasChangeEvent> = new EventEmitter<FCanvasChangeEvent>();\n\n @Input()\n public set position(value: IPoint | undefined) {\n this.fMediator.send(new InputCanvasPositionRequest(this.transform, value));\n }\n\n @Input()\n public set scale(value: number | undefined) {\n this.fMediator.send(new InputCanvasScaleRequest(this.transform, value));\n }\n\n public override get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @ViewChild('fGroupsContainer', { static: true })\n public override fGroupsContainer!: ElementRef<HTMLElement>;\n\n @ViewChild('fNodesContainer', { static: true })\n public override fNodesContainer!: ElementRef<HTMLElement>;\n\n @ViewChild('fConnectionsContainer', { static: true })\n public override fConnectionsContainer!: ElementRef<HTMLElement>;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n this.fComponentsStore.fCanvas = this;\n }\n\n public override redraw(): void {\n this.fComponentsStore.fBackground?.setTransform(this.transform);\n this.hostElement.setAttribute(\"style\", `transform: ${ TransformModelExtensions.toString(this.transform) }`);\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public override redrawWithAnimation(): void {\n this.fComponentsStore.fBackground?.setTransform(this.transform);\n this.hostElement.setAttribute(\"style\", `transition: transform ${ F_CANVAS_ANIMATION_DURATION }ms ease-in-out; transform: ${ TransformModelExtensions.toString(this.transform) }`);\n setTimeout(() => {\n this.redraw();\n }, F_CANVAS_ANIMATION_DURATION);\n }\n\n public centerGroupOrNode(id: string, animated: boolean = true): void {\n this.fMediator.send(new CenterGroupOrNodeRequest(id, animated));\n }\n\n public fitToScreen(toCenter: IPoint = PointExtensions.initialize(), animated: boolean = true): void {\n this.fMediator.send(new FitToFlowRequest(toCenter, animated));\n }\n\n public resetScaleAndCenter(animated: boolean = true): void {\n this.fMediator.send(new ResetScaleAndCenterRequest(animated));\n }\n\n public override setZoom(scale: number, toPosition: IPoint = PointExtensions.initialize()): void {\n this.fMediator.send(new UpdateScaleRequest(scale, toPosition));\n }\n\n public override resetZoom(): void {\n this.fMediator.send(new ResetScaleRequest());\n }\n}\n","<ng-container>\n <div #fGroupsContainer>\n <ng-content select=\"[fGroup]\"></ng-content>\n </div>\n <div #fConnectionsContainer>\n <ng-content select=\"f-snap-connection\"></ng-content>\n <ng-content select=\"f-connection\"></ng-content>\n <ng-content select=\"f-connection-for-create\"></ng-content>\n </div>\n\n <div #fNodesContainer>\n <ng-content select=\"[fNode]\"></ng-content>\n </div>\n</ng-container>\n","import { FCanvasComponent } from './f-canvas.component';\n\nexport const F_CANVAS_PROVIDERS = [\n\n FCanvasComponent,\n];\n","import { AddPatternToBackgroundExecution } from './add-pattern-to-background';\n\nexport const F_BACKGROUND_FEATURES = [\n\n AddPatternToBackgroundExecution\n];\n","import { GetConnectionLineExecution } from './get-connection-line';\nimport { RedrawConnectionsExecution } from './redraw-connections';\nimport { GetNodesRectExecution } from './get-nodes-rect';\nimport { GetElementRectInFlowExecution } from './get-element-rect-in-flow';\nimport {\n MoveFrontElementsBeforeTargetElementExecution,\n UpdateItemAndChildrenLayersExecution\n} from './update-item-and-children-layers';\nimport { GetPositionInFlowExecution } from './get-position-in-flow';\nimport { CreateConnectionMarkersExecution } from './create-connection-markers';\nimport { GetCanBeSelectedItemsExecution } from './get-can-be-selected-items';\nimport { IsConnectionUnderNodeExecution } from './is-connection-under-node';\nimport { GetScaledNodeRectsWithFlowPositionExecution } from './get-scaled-node-rects-with-flow-position';\nimport { EmitTransformChangesExecution } from './emit-transform-changes';\nimport { SubscribeOnTransformChangesExecution } from './subscribe-on-transform-changes';\nimport { SortItemLayersExecution, SortItemsByParentExecution, SortNodeLayersExecution } from './sort-item-layers';\nimport { GetDeepChildrenNodesAndGroupsExecution } from './get-deep-children-nodes-and-groups';\nimport { CreateRoundedRectFromElementExecution } from './create-rounded-rect-from-element';\nimport { GET_FLOW_STATE_PROVIDERS } from './get-flow-state';\nimport { ShowConnectionsAfterCalculationsExecution } from './show-connections-after-calculations';\nimport { F_SELECTION_FEATURES } from './f-selection/providers';\nimport { F_CANVAS_FEATURES } from '../f-canvas';\nimport { F_BACKGROUND_FEATURES } from '../f-backgroud/domain/providers';\n\nexport const COMMON_PROVIDERS = [\n\n ...F_CANVAS_FEATURES,\n\n ...F_BACKGROUND_FEATURES,\n\n CreateConnectionMarkersExecution,\n\n CreateRoundedRectFromElementExecution,\n\n EmitTransformChangesExecution,\n\n ...F_SELECTION_FEATURES,\n\n GetCanBeSelectedItemsExecution,\n\n GetDeepChildrenNodesAndGroupsExecution,\n\n GetConnectionLineExecution,\n\n GetElementRectInFlowExecution,\n\n ...GET_FLOW_STATE_PROVIDERS,\n\n GetScaledNodeRectsWithFlowPositionExecution,\n\n GetNodesRectExecution,\n\n GetPositionInFlowExecution,\n\n IsConnectionUnderNodeExecution,\n\n RedrawConnectionsExecution,\n\n ShowConnectionsAfterCalculationsExecution,\n\n SortItemLayersExecution,\n\n SortItemsByParentExecution,\n\n SortNodeLayersExecution,\n\n SubscribeOnTransformChangesExecution,\n\n UpdateItemAndChildrenLayersExecution,\n\n MoveFrontElementsBeforeTargetElementExecution,\n];\n","import { IRect, TransformModelExtensions } from '@foblex/2d';\nimport { AddPatternToBackgroundRequest } from './add-pattern-to-background.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { createSVGElement } from '../../../domain';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FBackgroundBase } from '../../f-background-base';\nimport { BrowserService } from '@foblex/platform';\n\nlet uniqueId: number = 0;\n\n@Injectable()\n@FExecutionRegister(AddPatternToBackgroundRequest)\nexport class AddPatternToBackgroundExecution implements IExecution<AddPatternToBackgroundRequest, void> {\n\n private get fBackground(): FBackgroundBase {\n return this.fComponentsStore.fBackground!;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: AddPatternToBackgroundRequest): void {\n const children = request.fPattern?.hostElement.getElementsByTagName('pattern') || [];\n const pattern = children.length ? children[ 0 ] : undefined;\n if (pattern) {\n const defs = createSVGElement('defs', this.fBrowser);\n pattern.id = 'f-background-pattern-' + uniqueId++;\n request.fPattern?.hostElement.remove();\n defs.appendChild(pattern);\n this.fBackground.hostElement?.firstChild?.appendChild(defs);\n const rect = createSVGElement('rect', this.fBrowser);\n rect.setAttribute('fill', 'url(#' + pattern.id + ')');\n rect.setAttribute('width', '100%');\n rect.setAttribute('height', '100%');\n this.fBackground.hostElement.firstChild?.appendChild(rect);\n const transform = this.fComponentsStore.fCanvas?.transform || TransformModelExtensions.default();\n request.fPattern?.setTransform(transform);\n }\n }\n}\n","import { ITransformModel } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_BACKGROUND_PATTERN = new InjectionToken<IFBackgroundPattern>('F_BACKGROUND_PATTERN');\n\nexport interface IFBackgroundPattern {\n\n hostElement: HTMLElement | SVGElement;\n\n setTransform(transform: ITransformModel): void;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef, Input, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport {\n IPoint, ISize, ITransformModel,\n PointExtensions, SizeExtensions, TransformModelExtensions\n} from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { Subject, Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { createSVGElement } from '../../domain';\nimport { BrowserService } from '@foblex/platform';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-rect-pattern\",\n template: ``,\n host: {\n '[attr.id]': 'id'\n },\n providers: [\n { provide: F_BACKGROUND_PATTERN, useExisting: FRectPatternComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FRectPatternComponent implements OnInit, OnDestroy, IFBackgroundPattern {\n\n private _subscription$: Subscription = new Subscription();\n\n private _stateChanges: Subject<void> = new Subject<void>();\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n private _vColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set vColor(value: string) {\n this._vColor = value;\n this._stateChanges.next();\n }\n\n private _hColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set hColor(value: string) {\n this._vColor = value;\n this._stateChanges.next();\n }\n\n private _vSize: number = 20;\n\n @Input()\n public set vSize(value: number) {\n this._vSize = value;\n this._stateChanges.next();\n }\n\n private _hSize: number = 20;\n\n @Input()\n public set hSize(value: number) {\n this._hSize = value;\n this._stateChanges.next();\n }\n\n private _transform: ITransformModel = TransformModelExtensions.default();\n\n private _position: IPoint = PointExtensions.initialize();\n\n private _size: ISize = SizeExtensions.initialize(this._hSize, this._vSize);\n\n private _pattern!: SVGPatternElement;\n private _vLine!: SVGLineElement;\n private _hLine!: SVGLineElement;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fBrowser: BrowserService\n ) {\n this.createPattern();\n }\n\n private createPattern(): void {\n this._pattern = createSVGElement('pattern', this.fBrowser);\n this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');\n this.hostElement.appendChild(this._pattern);\n\n this._vLine = createSVGElement('line', this.fBrowser);\n this._pattern.appendChild(this._vLine);\n\n this._hLine = createSVGElement('line', this.fBrowser);\n this._pattern.appendChild(this._hLine);\n }\n\n public ngOnInit(): void {\n this._subscription$.add(this.subscribeToStateChanges());\n }\n\n private subscribeToStateChanges(): Subscription {\n return this._stateChanges.pipe(startWith(null)).subscribe(() => {\n this.redraw();\n });\n }\n\n private calculatePattern(): void {\n this._position.x = this._transform.position.x + this._transform.scaledPosition.x;\n this._position.y = this._transform.position.y + this._transform.scaledPosition.y;\n this._size = SizeExtensions.initialize(this._hSize * this._transform.scale, this._vSize * this._transform.scale);\n }\n\n private redraw(): void {\n this.calculatePattern();\n this.redrawPattern();\n\n this.redrawLine(this._vLine, this._vColor, this._size.width, 0, this._size.width, this._size.height);\n this.redrawLine(this._hLine, this._hColor, 0, this._size.height, this._size.width, this._size.height);\n }\n\n private redrawPattern(): void {\n this._pattern.setAttribute('x', `${ this._position.x }`);\n this._pattern.setAttribute('y', `${ this._position.y }`);\n this._pattern.setAttribute('width', `${ this._size.width }`);\n this._pattern.setAttribute('height', `${ this._size.height }`);\n }\n\n private redrawLine(line: SVGLineElement, color: string, x1: number, y1: number, x2: number, y2: number): void {\n line.setAttribute('stroke', `${ color }`);\n line.setAttribute('x1', `${ x1 }`);\n line.setAttribute('x2', `${ x2 }`);\n line.setAttribute('y1', `${ y1 }`);\n line.setAttribute('y2', `${ y2 }`);\n }\n\n public setTransform(transform: ITransformModel): void {\n this._transform = transform;\n this._stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this._subscription$.unsubscribe();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef, Input, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport {\n IPoint,\n ITransformModel,\n PointExtensions,\n TransformModelExtensions\n} from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../../domain';\nimport { Subject, Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-circle-pattern\",\n template: ``,\n host: {\n '[attr.id]': 'id'\n },\n providers: [\n { provide: F_BACKGROUND_PATTERN, useExisting: FCirclePatternComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FCirclePatternComponent implements OnInit, OnDestroy, IFBackgroundPattern {\n\n private _subscription$: Subscription = new Subscription();\n\n private _stateChanges: Subject<void> = new Subject<void>();\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n\n private _color: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set color(value: string) {\n this._color = value;\n this._stateChanges.next();\n }\n\n private _radius: number = 20;\n private _scaledRadius: number = 20;\n\n @Input()\n public set radius(value: number) {\n this._radius = value;\n this._stateChanges.next();\n }\n\n private _transform: ITransformModel = TransformModelExtensions.default();\n\n private _position: IPoint = PointExtensions.initialize();\n\n private _pattern!: SVGPatternElement;\n private _circle!: SVGCircleElement;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fBrowser: BrowserService\n ) {\n this.createPattern();\n }\n\n private createPattern(): void {\n this._pattern = createSVGElement('pattern', this.fBrowser);\n this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');\n this.hostElement.appendChild(this._pattern);\n\n this._circle = createSVGElement('circle', this.fBrowser);\n this._pattern.appendChild(this._circle);\n }\n\n public ngOnInit(): void {\n this._subscription$.add(this.subscribeToStateChanges());\n }\n\n private subscribeToStateChanges(): Subscription {\n return this._stateChanges.pipe(startWith(null)).subscribe(() => {\n this.redraw();\n });\n }\n\n private calculatePattern(): void {\n this._position.x = this._transform.position.x + this._transform.scaledPosition.x;\n this._position.y = this._transform.position.y + this._transform.scaledPosition.y;\n this._scaledRadius = this._radius * this._transform.scale;\n }\n\n private redraw(): void {\n this.calculatePattern();\n this.redrawPattern();\n this.redrawElement();\n }\n\n private redrawPattern(): void {\n this._pattern.setAttribute('x', `${ this._position.x }`);\n this._pattern.setAttribute('y', `${ this._position.y }`);\n this._pattern.setAttribute('width', `${ this._scaledRadius }`);\n this._pattern.setAttribute('height', `${ this._scaledRadius }`);\n }\n\n private redrawElement(): void {\n this._circle.setAttribute('fill', this._color);\n this._circle.setAttribute('cx', `${ this._scaledRadius / 2 }`);\n this._circle.setAttribute('cy', `${ this._scaledRadius / 2 }`);\n this._circle.setAttribute('r', `${ this._scaledRadius / this._radius }`);\n }\n\n public setTransform(transform: ITransformModel): void {\n this._transform = transform;\n this._stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this._subscription$.unsubscribe();\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { ITransformModel } from '@foblex/2d';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_BACKGROUND = new InjectionToken<FBackgroundBase>('F_BACKGROUND');\n\n@Directive()\nexport abstract class FBackgroundBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract isBackgroundElement(element: HTMLElement | SVGElement): boolean;\n\n public abstract setTransform(transform: ITransformModel): void;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ContentChild,\n ElementRef, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport { F_BACKGROUND, FBackgroundBase } from './f-background-base';\nimport { ITransformModel } from '@foblex/2d';\nimport { AddPatternToBackgroundRequest, F_BACKGROUND_PATTERN, IFBackgroundPattern } from './domain';\nimport { FComponentsStore } from '../f-storage';\nimport { FMediator } from '@foblex/mediator';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-background\",\n template: \"<svg><ng-content></ng-content></svg>\",\n styleUrls: [ \"./f-background.component.scss\" ],\n host: {\n 'class': 'f-component f-background'\n },\n providers: [ { provide: F_BACKGROUND, useExisting: FBackgroundComponent } ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FBackgroundComponent extends FBackgroundBase implements OnInit, AfterContentInit, OnDestroy {\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @ContentChild(F_BACKGROUND_PATTERN, { static: false })\n public fBackgroundPattern: IFBackgroundPattern | undefined;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fBackground = this;\n }\n\n public ngAfterContentInit(): void {\n this.fMediator.send(new AddPatternToBackgroundRequest(this.fBackgroundPattern!));\n }\n\n public override isBackgroundElement(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setTransform(transform: ITransformModel): void {\n this.fBackgroundPattern?.setTransform(transform);\n }\n\n public ngOnDestroy() {\n this.fComponentsStore.fBackground = undefined;\n }\n}\n","import { FBackgroundComponent } from './f-background.component';\nimport { FRectPatternComponent } from './f-rect-pattern';\nimport { FCirclePatternComponent } from './f-circle-pattern';\n\nexport const F_BACKGROUND_PROVIDERS = [\n\n FBackgroundComponent,\n\n FRectPatternComponent,\n\n FCirclePatternComponent\n];\n","import { ILineAlignmentRect } from './i-line-alignment-rect';\nimport { BrowserService } from '@foblex/platform';\n\nexport class LineElement {\n\n private readonly element: HTMLElement;\n\n constructor(\n fBrowser: BrowserService,\n private readonly hostElement: HTMLElement,\n ) {\n this.element = fBrowser.document.createElement('div');\n this.hostElement.appendChild(this.element);\n this.element.classList.add('f-line');\n }\n\n public hide(): void {\n this.element.style.display = 'none';\n }\n\n public show(): void {\n this.element.style.display = 'block'\n }\n\n public draw(object: Partial<ILineAlignmentRect>): void {\n this.element.style.position = 'absolute';\n Object.keys(object).forEach((key: string) => {\n // @ts-ignore\n this.element.style[ key ] = object[ key ] + 'px';\n });\n }\n}\n\n","import { ISize, ITransformModel } from '@foblex/2d';\nimport { LineElement } from './line-element';\nimport { BrowserService } from '@foblex/platform';\n\nexport class LineService {\n\n private fHorizontalLine: LineElement;\n private fVerticalLine: LineElement;\n\n constructor(fBrowser: BrowserService, private hostElement: HTMLElement) {\n this.fHorizontalLine = new LineElement(fBrowser, this.hostElement);\n this.fVerticalLine = new LineElement(fBrowser, this.hostElement);\n this.fHorizontalLine.hide();\n this.fVerticalLine.hide();\n }\n\n public drawVerticalLine(x: number, size: ISize, transform: ITransformModel): void {\n this.fVerticalLine.show();\n this.fVerticalLine.draw({\n left: x * transform.scale + transform.position.x + transform.scaledPosition.x,\n top: 0,\n width: 1,\n height: size.height\n });\n }\n\n public drawHorizontalLine(y: number, size: ISize, transform: ITransformModel): void {\n this.fHorizontalLine.show();\n this.fHorizontalLine.draw({\n left: 0,\n top: y * transform.scale + transform.position.y + transform.scaledPosition.y,\n width: size.width,\n height: 1\n });\n }\n\n public hideVerticalLine(): void {\n this.fVerticalLine.hide();\n }\n\n public hideHorizontalLine(): void {\n this.fHorizontalLine.hide();\n }\n}\n","import { IRect } from '@foblex/2d';\nimport { INearestCoordinateResult } from './i-nearest-coordinate-result';\n\n/**\n * A class to find the nearest coordinate.\n */\nexport class NearestCoordinateFinder {\n\n\n private elements: IRect[];\n private target: IRect;\n\n /**\n * Constructor to initialize the NearestCoordinateFinder.\n * @param elements - The array of IRect elements.\n * @param target - The target IRect element.\n * @param alignThreshold - The threshold to align the elements.\n */\n constructor(elements: IRect[], target: IRect, private alignThreshold: number = 10) {\n this.elements = elements;\n this.target = target;\n }\n\n /**\n * Finds the nearest coordinate on a specified axis.\n * @returns The nearest coordinate and its distance.\n */\n public findNearestCoordinateByX(): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of this.elements) {\n const distanceLeftLeft = this.target.x - element.x;\n const distanceLeftRight = this.target.x - (element.x + element.width);\n const distanceCenterCenter = this.target.gravityCenter.x - element.gravityCenter.x;\n const distanceRightLeft = (this.target.x + this.target.width) - element.x;\n const distanceRightRight = (this.target.x + this.target.width) - (element.x + element.width);\n\n if (\n Math.abs(distanceLeftLeft) <= this.alignThreshold ||\n Math.abs(distanceLeftRight) <= this.alignThreshold ||\n Math.abs(distanceCenterCenter) <= this.alignThreshold ||\n Math.abs(distanceRightLeft) <= this.alignThreshold ||\n Math.abs(distanceRightRight) <= this.alignThreshold\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.x;\n }\n if (Math.abs(distanceLeftLeft) < Math.abs(minDistance)) {\n minDistance = distanceLeftLeft;\n nearest = element.x;\n }\n if (Math.abs(distanceRightRight) < Math.abs(minDistance)) {\n minDistance = distanceRightRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceLeftRight) < Math.abs(minDistance)) {\n minDistance = distanceLeftRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceRightLeft) < Math.abs(minDistance)) {\n minDistance = distanceRightLeft;\n nearest = element.x;\n }\n }\n }\n return { value: nearest, distance: minDistance };\n }\n\n\n /**\n * Finds the nearest coordinate on a specified axis.\n * @returns The nearest coordinate and its distance.\n */\n public findNearestCoordinateByY(): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of this.elements) {\n const distanceTopTop = this.target.y - element.y;\n const distanceTopBottom = this.target.y - (element.y + element.height);\n const distanceCenterCenter = this.target.gravityCenter.y - element.gravityCenter.y;\n const distanceBottomTop = (this.target.y + this.target.height) - element.y;\n const distanceBottomBottom = (this.target.y + this.target.height) - (element.y + element.height);\n\n if (\n Math.abs(distanceTopTop) <= this.alignThreshold ||\n Math.abs(distanceTopBottom) <= this.alignThreshold ||\n Math.abs(distanceCenterCenter) <= this.alignThreshold ||\n Math.abs(distanceBottomTop) <= this.alignThreshold ||\n Math.abs(distanceBottomBottom) <= this.alignThreshold\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.y;\n }\n if (Math.abs(distanceTopTop) < Math.abs(minDistance)) {\n minDistance = distanceTopTop;\n nearest = element.y;\n }\n if (Math.abs(distanceBottomBottom) < Math.abs(minDistance)) {\n minDistance = distanceBottomBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceTopBottom) < Math.abs(minDistance)) {\n minDistance = distanceTopBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceBottomTop) < Math.abs(minDistance)) {\n minDistance = distanceBottomTop;\n nearest = element.y;\n }\n }\n }\n\n return { value: nearest, distance: minDistance };\n }\n}\n\n","import { IPoint } from '@foblex/2d';\nimport { Directive, InjectionToken } from '@angular/core';\nimport { ILineAlignmentResult } from './domain';\nimport { FNodeBase } from '../f-node';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_LINE_ALIGNMENT = new InjectionToken<FLineAlignmentBase>('F_LINE_ALIGNMENT');\n\n@Directive()\nexport abstract class FLineAlignmentBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void;\n\n public abstract findNearestCoordinate(difference: IPoint): ILineAlignmentResult;\n\n public abstract handle(difference: IPoint): void;\n\n public abstract complete(): void;\n}\n","import { Component, ElementRef, Input, OnInit } from '@angular/core';\nimport { IPoint, IRect, ISize, ITransformModel, RectExtensions, SizeExtensions } from '@foblex/2d';\nimport { ILineAlignmentResult, LineService, NearestCoordinateFinder } from './domain';\nimport { F_LINE_ALIGNMENT, FLineAlignmentBase } from './f-line-alignment-base';\nimport { FComponentsStore } from '../f-storage';\nimport { FDraggableDataContext } from '../f-draggable';\nimport { FNodeBase } from '../f-node';\nimport { GetElementRectInFlowRequest } from '../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\n\n@Component({\n selector: \"f-line-alignment\",\n template: \"\",\n styleUrls: [ \"./f-line-alignment.component.scss\" ],\n exportAs: \"fComponent\",\n host: {\n 'class': 'f-line-alignment f-component'\n },\n providers: [\n { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentComponent }\n ],\n})\nexport class FLineAlignmentComponent extends FLineAlignmentBase implements OnInit {\n\n @Input()\n public fAlignThreshold: number = 10;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n private lineService: LineService;\n\n private size: ISize = SizeExtensions.initialize();\n\n private draggedNodeRect: IRect = RectExtensions.initialize();\n\n private rects: IRect[] = [];\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n fBrowser: BrowserService\n ) {\n super();\n this.lineService = new LineService(fBrowser, this.hostElement);\n }\n\n public ngOnInit(): void {\n this.fDraggableDataContext.fLineAlignment = this;\n }\n\n public override initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void {\n this.size = this.flowHost.getBoundingClientRect();\n this.rects = [];\n const draggedNodeRects = currentNodes.map((x) => {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement));\n });\n this.draggedNodeRect = RectExtensions.union(draggedNodeRects) || RectExtensions.initialize();\n\n const allNodesExcludeCurrents = allNodes.filter((x) => {\n return !currentNodes.includes(x);\n });\n\n this.rects = allNodesExcludeCurrents.map((x) => {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement));\n });\n }\n\n public override handle(difference: IPoint): void {\n this.drawIntersectingLines(difference);\n }\n\n private drawIntersectingLines(difference: IPoint): void {\n const intersect = this.findNearestCoordinate(difference);\n if (intersect.xResult.value !== undefined) {\n this.lineService.drawVerticalLine(intersect.xResult.value, this.size, this.transform);\n } else {\n this.lineService.hideVerticalLine();\n }\n if (intersect.yResult.value !== undefined) {\n this.lineService.drawHorizontalLine(intersect.yResult.value, this.size, this.transform);\n } else {\n this.lineService.hideHorizontalLine();\n }\n }\n\n public findNearestCoordinate(difference: IPoint): ILineAlignmentResult {\n const rect = RectExtensions.addPoint(this.draggedNodeRect, difference);\n const finder = new NearestCoordinateFinder(this.rects, rect, this.fAlignThreshold);\n\n return { xResult: finder.findNearestCoordinateByX(), yResult: finder.findNearestCoordinateByY() };\n }\n\n public override complete(): void {\n this.lineService.hideVerticalLine();\n this.lineService.hideHorizontalLine();\n }\n}\n","import { FLineAlignmentComponent } from './f-line-alignment.component';\n\nexport const F_LINE_ALIGNMENT_PROVIDERS = [\n FLineAlignmentComponent\n];\n","import { IRect, RectExtensions } from '@foblex/2d';\n\nexport function checkRectIsFinite(rect: IRect): IRect {\n if (!Number.isFinite(rect.width) || !Number.isFinite(rect.height) || !Number.isFinite(rect.x) || !Number.isFinite(rect.y)) {\n return RectExtensions.initialize(0, 0, 0, 0);\n }\n return rect;\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\n\nexport class FMinimapData {\n\n constructor(\n public element: SVGSVGElement,\n public scale: number = 1,\n public viewBox: IRect = RectExtensions.initialize(0, 0, 0, 0)\n ) {\n }\n}\n","import {\n Directive, ElementRef, Input,\n} from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport { IRect, ISize, RectExtensions, SizeExtensions } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { checkRectIsFinite, FMinimapData } from './domain';\nimport { GetNodesRectRequest } from '../domain';\n\n@Directive({\n selector: 'svg[fMinimapFlow]'\n})\nexport class FMinimapFlowDirective {\n\n public model: FMinimapData;\n\n @Input()\n public fMinSize: number = 1000;\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n public get hostElement(): SVGSVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGSVGElement>,\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore\n ) {\n this.model = new FMinimapData(this.hostElement);\n }\n\n public update(): void {\n const nodesRect = this.getProcessedNodesRect();\n const minimapRect = this.getMinimapRect();\n\n const scale = this.calculateViewScale(nodesRect, minimapRect);\n const viewBox = this.calculateViewBox(nodesRect, minimapRect, scale);\n this.model = new FMinimapData(this.hostElement, scale, viewBox);\n this.setViewBox(viewBox);\n }\n\n private getProcessedNodesRect(): IRect {\n const normalizedRect = this.normalizeRect(this.getNodesRect());\n return this.ensureMinimumSize(normalizedRect);\n }\n\n private getNodesRect(): IRect {\n const rect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize(0, 0, 0, 0);\n return RectExtensions.elementTransform(rect, this.flowHost)\n }\n\n private getMinimapRect(): IRect {\n return RectExtensions.elementTransform(RectExtensions.fromElement(this.hostElement), this.flowHost);\n }\n\n private normalizeRect(rect: IRect): IRect {\n return RectExtensions.div(rect, this.fComponentsStore.transform.scale);\n }\n\n private ensureMinimumSize(rect: IRect): IRect {\n return RectExtensions.initialize(\n rect.x - (Math.max(rect.width, this.fMinSize) - rect.width) / 2,\n rect.y - (Math.max(rect.height, this.fMinSize) - rect.height) / 2,\n Math.max(rect.width, this.fMinSize),\n Math.max(rect.height, this.fMinSize)\n );\n }\n\n private calculateViewScale(nodesRect: IRect, minimapRect: IRect): number {\n return Math.max(nodesRect.width / minimapRect.width, nodesRect.height / minimapRect.height);\n }\n\n private calculateViewBox(nodesRect: IRect, minimapRect: IRect, scale: number): IRect {\n return this.calculateCenteredViewBox(nodesRect, this.calculateViewSize(minimapRect, scale));\n }\n\n private calculateViewSize(minimapRect: IRect, scale: number): ISize {\n return SizeExtensions.initialize(minimapRect.width * scale || 0, minimapRect.height * scale || 0);\n }\n\n private calculateCenteredViewBox(nodesRect: IRect, viewSize: ISize): IRect {\n const centeredX = nodesRect.x - (viewSize.width - nodesRect.width) / 2;\n const centeredY = nodesRect.y - (viewSize.height - nodesRect.height) / 2;\n return RectExtensions.initialize(centeredX, centeredY, viewSize.width, viewSize.height);\n }\n\n private setViewBox(viewBox: IRect): void {\n viewBox = checkRectIsFinite(viewBox);\n this.hostElement.setAttribute('viewBox', `${ viewBox.x } ${ viewBox.y } ${ viewBox.width } ${ viewBox.height }`);\n }\n}\n","import {\n Directive, ElementRef,\n} from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport {\n IRect,\n RectExtensions\n} from '@foblex/2d';\nimport { FNodeBase, FNodeDirective } from '../f-node';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../domain';\nimport { checkRectIsFinite } from './domain';\n\n@Directive({\n selector: 'g[fMinimapCanvas]'\n})\nexport class FMinimapCanvasDirective {\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get flowScale(): number {\n return this.fComponentsStore.transform.scale;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n }\n\n public redraw(): void {\n this.clearCanvas();\n this.fComponentsStore.fNodes.forEach((x) => this.renderNode(x));\n }\n\n private clearCanvas(): void {\n this.hostElement.innerHTML = '';\n }\n\n private renderNode(node: FNodeBase): void {\n const element = createSVGElement('rect', this.fBrowser);\n this.configureNodeElement(element, node);\n this.hostElement.appendChild(element);\n }\n\n private configureNodeElement(element: SVGRectElement, node: FNodeBase): void {\n this.setElementAttributes(element, this.getNodeRect(node));\n this.applyClassList(element, node, node instanceof FNodeDirective);\n }\n\n private getNodeRect(node: FNodeBase): IRect {\n const nodeRectInFlow = RectExtensions.elementTransform(RectExtensions.fromElement(node.hostElement), this.flowHost);\n return RectExtensions.div(nodeRectInFlow, this.flowScale);\n }\n\n private setElementAttributes(element: SVGRectElement, rect: IRect): void {\n rect = checkRectIsFinite(rect);\n element.setAttribute('x', rect.x.toString());\n element.setAttribute('y', rect.y.toString());\n element.setAttribute('width', rect.width.toString());\n element.setAttribute('height', rect.height.toString());\n }\n\n private applyClassList(element: SVGRectElement, node: FNodeBase, isNode: boolean): void {\n element.classList.add('f-component', isNode ? 'f-minimap-node' : 'f-minimap-group');\n if (node.isSelected()) {\n element.classList.add('f-selected');\n }\n }\n}\n","import { Directive, ElementRef } from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { checkRectIsFinite } from './domain';\n\n@Directive({\n selector: 'rect[fMinimapView]',\n host: {\n 'class': 'f-component f-minimap-view',\n }\n})\nexport class FMinimapViewDirective {\n\n public get hostElement(): SVGRectElement {\n return this.elementReference.nativeElement;\n }\n\n private get flowScale(): number {\n return this.fComponentsStore!.transform!.scale!;\n }\n\n constructor(\n private elementReference: ElementRef<SVGRectElement>,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public update(): void {\n const viewBox = RectExtensions.div(RectExtensions.fromElement(this.fComponentsStore.flowHost), this.flowScale);\n this.setAttributes(viewBox);\n }\n\n private setAttributes(viewBox: IRect): void {\n viewBox = checkRectIsFinite(viewBox);\n this.hostElement.setAttribute('x', '0');\n this.hostElement.setAttribute('y', '0');\n this.hostElement.setAttribute('width', viewBox.width.toString());\n this.hostElement.setAttribute('height', viewBox.height.toString());\n }\n}\n","import {\n AfterViewInit, ChangeDetectionStrategy, Component,\n ElementRef, Input, OnDestroy, ViewChild,\n} from \"@angular/core\";\nimport { FMediator } from '@foblex/mediator';\nimport { Observable, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { SubscribeOnTransformChangesRequest } from '../domain';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { MinimapDragFinalizeRequest, MinimapDragPreparationRequest } from './domain';\n\n@Component({\n selector: 'f-minimap',\n templateUrl: './f-minimap.component.html',\n styleUrls: [ './f-minimap.component.scss' ],\n exportAs: 'fComponent',\n host: {\n 'class': 'f-component f-minimap',\n },\n providers: [\n { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FMinimapComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FMinimapComponent implements AfterViewInit, OnDestroy, IFDragAndDropPlugin {\n\n private subscriptions$: Subscription = new Subscription();\n\n @ViewChild(FMinimapCanvasDirective, { static: true })\n public fMinimapCanvas!: FMinimapCanvasDirective;\n\n @ViewChild(FMinimapFlowDirective, { static: true })\n public fMinimapFlow!: FMinimapFlowDirective;\n\n @ViewChild(FMinimapViewDirective, { static: true })\n public fMinimapView!: FMinimapViewDirective;\n\n @Input()\n public fMinSize: number = 1000;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FMediator\n ) {\n }\n\n public ngAfterViewInit(): void {\n this.subscriptions$.add(this.subscribeOnTransformChanges());\n }\n\n private subscribeOnTransformChanges(): Subscription {\n return this.getTransformChanges().pipe(debounceTime(5)).subscribe(() => {\n this.fMinimapFlow.update();\n this.fMinimapView.update();\n this.fMinimapCanvas.redraw();\n });\n }\n\n private getTransformChanges(): Observable<void> {\n return this.fMediator.send<Observable<void>>(new SubscribeOnTransformChangesRequest());\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this.fMediator.send(new MinimapDragPreparationRequest(event, this.fMinimapFlow.model));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this.fMediator.send(new MinimapDragFinalizeRequest(event));\n }\n\n public ngOnDestroy(): void {\n this.subscriptions$.unsubscribe();\n }\n}\n","<svg fMinimapFlow width=\"100%\" height=\"100%\" fLockedContext [fMinSize]=\"fMinSize\">\n <g fMinimapCanvas></g>\n <rect fMinimapView x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" stroke=\"none\"/>\n</svg>\n\n","import { FMinimapComponent } from './f-minimap.component';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\n\nexport const F_MINIMAP_PROVIDERS = [\n\n FMinimapComponent,\n\n FMinimapCanvasDirective,\n\n FMinimapViewDirective,\n\n FMinimapFlowDirective,\n];\n","import { IRect } from '@foblex/2d';\nimport { Directive } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\n@Directive()\nexport abstract class FSelectionAreaBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract hide(): void;\n\n public abstract show(): void;\n\n public abstract draw(object: IRect): void;\n}\n","import { Component, ElementRef, OnInit } from '@angular/core';\nimport { FSelectionAreaBase } from './f-selection-area-base';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { SelectionAreaFinalizeRequest, SelectionAreaPreparationRequest } from './domain';\n\n@Component({\n selector: \"f-selection-area\",\n template: ``,\n styleUrls: [ './f-selection-area.component.scss' ],\n host: {\n 'class': 'f-selection-area f-component'\n },\n providers: [\n { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },\n ],\n})\nexport class FSelectionAreaComponent extends FSelectionAreaBase implements OnInit, IFDragAndDropPlugin {\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FMediator\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.hostElement.style.display = 'none';\n }\n\n public override hide(): void {\n this.hostElement.style.display = 'none';\n }\n\n public override show(): void {\n this.hostElement.style.display = 'block';\n }\n\n public override draw(object: IRect): void {\n const style = this.hostElement.style;\n style.left = object.x + 'px';\n style.top = object.y + 'px';\n style.width = object.width + 'px';\n style.height = object.height + 'px';\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this.fMediator.send(new SelectionAreaPreparationRequest(event, this));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this.fMediator.send(new SelectionAreaFinalizeRequest(event));\n }\n}\n","import { FSelectionAreaComponent } from './f-selection-area.component';\n\nexport const F_SELECTION_AREA_PROVIDERS = [\n\n FSelectionAreaComponent\n];\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_FLOW = new InjectionToken<FFlowBase>('F_FLOW');\n\nexport abstract class FFlowBase implements IHasHostElement {\n\n public abstract fFlowId: string;\n\n public abstract hostElement: HTMLElement;\n\n public abstract fLoaded: EventEmitter<void>;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ElementRef, EventEmitter,\n Input, OnDestroy, OnInit, Output\n} from '@angular/core';\nimport { F_FLOW, FFlowBase } from './f-flow-base';\nimport { Subscription } from 'rxjs';\nimport { startWith, debounceTime } from 'rxjs/operators';\nimport {\n ClearSelectionRequest,\n GetScaledNodeRectsWithFlowPositionRequest,\n GetPositionInFlowRequest,\n GetSelectionRequest,\n RedrawConnectionsRequest,\n SelectAllRequest,\n SelectRequest,\n SortItemLayersRequest,\n IFFlowState,\n GetFlowStateRequest\n} from '../domain';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport {\n FDraggableDataContext, FSelectionChangeEvent\n} from '../f-draggable';\nimport { FConnectionFactory } from '../f-connection';\nimport { FComponentsStore, FTransformStore } from '../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { COMMON_PROVIDERS } from '../domain/providers';\nimport { F_DRAGGABLE_PROVIDERS } from '../f-draggable/providers';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: 'f-flow',\n templateUrl: './f-flow.component.html',\n styleUrls: [ './f-flow.component.scss' ],\n host: {\n '[attr.id]': 'fFlowId',\n class: \"f-component f-flow\",\n },\n providers: [\n FMediator,\n FComponentsStore,\n FTransformStore,\n FDraggableDataContext,\n FConnectionFactory,\n ...F_DRAGGABLE_PROVIDERS,\n ...COMMON_PROVIDERS,\n { provide: F_FLOW, useExisting: FFlowComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FFlowComponent extends FFlowBase implements OnInit, AfterContentInit, OnDestroy {\n\n private subscription$: Subscription = new Subscription();\n\n @Input()\n public override fFlowId: string = `f-flow-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Output()\n public override fLoaded: EventEmitter<void> = new EventEmitter<void>();\n\n private isLoaded: boolean = false;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fFlow = this;\n }\n\n public ngAfterContentInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscription$.add(\n this.subscribeOnElementsChanges()\n );\n this.subscription$.add(\n this.subscribeOnComponentsCountChanges()\n );\n }\n\n private subscribeOnComponentsCountChanges(): Subscription {\n return this.fComponentsStore.componentsCount$.pipe(startWith(null), debounceTime(1)).subscribe(() => {\n this.fMediator.send(new SortItemLayersRequest());\n });\n }\n\n private subscribeOnElementsChanges(): Subscription {\n return this.fComponentsStore.componentsData$.pipe(startWith(null), debounceTime(1)).subscribe(() => {\n this.fMediator.send(new RedrawConnectionsRequest());\n\n if (!this.isLoaded) {\n // this.fMediator.send(new ShowConnectionsAfterCalculationsRequest());\n this.isLoaded = true;\n this.fLoaded.emit();\n }\n });\n }\n\n public redraw(): void {\n this.fComponentsStore.componentDataChanged();\n }\n\n public reset(): void {\n this.isLoaded = false;\n }\n\n public getAllNodesRect(): IRect | null {\n return this.fMediator.send<IRect | null>(new GetScaledNodeRectsWithFlowPositionRequest());\n }\n\n public getSelection(): FSelectionChangeEvent {\n return this.fMediator.send<FSelectionChangeEvent>(new GetSelectionRequest());\n }\n\n public getPositionInFlow(position: IPoint): IRect {\n return this.fMediator.send(new GetPositionInFlowRequest(position));\n }\n\n public getState(): IFFlowState {\n return this.fMediator.send(new GetFlowStateRequest());\n }\n\n public selectAll(): void {\n this.fMediator.send<void>(new SelectAllRequest());\n }\n\n public select(nodes: string[], connections: string[]): void {\n this.fMediator.send<void>(new SelectRequest(nodes, connections));\n }\n\n public clearSelection(): void {\n this.fMediator.send<void>(new ClearSelectionRequest());\n }\n\n public ngOnDestroy(): void {\n this.subscription$.unsubscribe();\n }\n}\n","<ng-container>\n <ng-content select=\"[fDefinitions]\"></ng-content>\n\n <ng-content select=\"f-background\"></ng-content>\n\n <ng-content select=\"f-line-alignment\"></ng-content>\n\n <ng-content select=\"f-canvas\"></ng-content>\n\n <ng-content select=\"f-selection-area\"></ng-content>\n\n <ng-content select=\"f-minimap\"></ng-content>\n</ng-container>\n","import { FFlowComponent } from './f-flow.component';\n\nexport const F_FLOW_PROVIDERS = [\n FFlowComponent\n];\n","import { EventExtensions } from '@foblex/drag-toolkit';\nimport { IPoint, Point, RectExtensions } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { FCanvasBase } from '../f-canvas';\nimport { FComponentsStore } from '../f-storage';\nimport { isNode } from '../f-node';\n\nexport const F_ZOOM = new InjectionToken<FZoomBase>('F_ZOOM');\n\nexport abstract class FZoomBase {\n\n protected isEnabled: boolean = false;\n\n public abstract minimum: number;\n public abstract maximum: number;\n\n public abstract step: number;\n public abstract dblClickStep: number;\n\n private listeners: Function = EventExtensions.emptyListener();\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get fCanvas(): FCanvasBase {\n return this.fComponentsStore.fCanvas as FCanvasBase;\n }\n\n protected constructor(\n protected fComponentsStore: FComponentsStore\n ) {\n }\n\n protected toggleZoom(): void {\n if (this.isEnabled) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n\n private subscribe(): void {\n this.listeners();\n if (!this.flowHost) {\n return;\n }\n\n this.flowHost.addEventListener('wheel', this.onWheel.bind(this));\n this.flowHost.addEventListener('dblclick', this.onDoubleClick.bind(this));\n this.listeners = () => {\n this.flowHost.removeEventListener('wheel', this.onWheel.bind(this));\n this.flowHost.removeEventListener('dblclick', this.onDoubleClick.bind(this));\n };\n }\n\n public getScale(): number {\n return this.fCanvas.transform.scale || 1;\n }\n\n private onWheel(event: WheelEvent): void {\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (this.fComponentsStore.fDraggable?.isDragStarted || targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n let result: number = this.getScale();\n\n const direction = event.deltaY > 0 ? -1 : 1;\n const step = this.step;\n result = result + step * direction;\n\n result = Math.max(this.minimum, Math.min(result, this.maximum));\n\n const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);\n\n this.fCanvas.setZoom(result, pointerPositionInFlow);\n this.fCanvas.redraw();\n this.fCanvas.emitCanvasChangeEvent();\n }\n\n private onDoubleClick(event: MouseEvent): void {\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (this.fComponentsStore.fDraggable?.isDragStarted || isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n let result: number = this.getScale();\n\n const direction = 1;\n const step = this.dblClickStep;\n result = result + step * direction;\n\n result = Math.max(this.minimum, Math.min(result, this.maximum));\n\n const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);\n this.fCanvas.setZoom(result, pointerPositionInFlow);\n this.fCanvas.redrawWithAnimation();\n this.fCanvas.emitCanvasChangeEvent();\n }\n\n private onZoomToCenter(deltaY: number, position?: IPoint): void {\n const preventDefault = () => {\n };\n const rect = RectExtensions.fromElement(this.flowHost);\n\n this.onWheel({\n deltaY, preventDefault, clientX: position?.x || rect.gravityCenter.x, clientY: position?.y || rect.gravityCenter.y\n } as WheelEvent);\n }\n\n public zoomIn(position?: IPoint): void {\n this.onZoomToCenter(-1, position);\n }\n\n public zoomOut(position?: IPoint): void {\n this.onZoomToCenter(1, position);\n }\n\n public reset(): void {\n this.fCanvas.resetZoom();\n this.fCanvas.redraw();\n this.fCanvas.emitCanvasChangeEvent();\n }\n\n protected unsubscribe(): void {\n this.listeners();\n this.listeners = EventExtensions.emptyListener();\n }\n}\n","import {\n AfterViewInit,\n Directive, Input, OnDestroy\n} from \"@angular/core\";\nimport { F_ZOOM, FZoomBase } from './f-zoom-base';\nimport { FComponentsStore } from '../f-storage';\nimport { castToBoolean } from '@foblex/utils';\n\n@Directive({\n selector: \"f-canvas[fZoom]\",\n exportAs: 'fComponent',\n host: {\n 'class': 'f-zoom f-component'\n },\n providers: [ { provide: F_ZOOM, useExisting: FZoomDirective } ],\n})\nexport class FZoomDirective extends FZoomBase implements AfterViewInit, OnDestroy {\n\n @Input('fZoom')\n public get fFlowZoom(): boolean {\n return this.isEnabled;\n }\n\n public set fFlowZoom(isEnabled: boolean | undefined | string) {\n const value = castToBoolean(isEnabled);\n if (value !== this.isEnabled) {\n this.isEnabled = value;\n this.toggleZoom();\n }\n }\n\n @Input('fZoomMinimum')\n public override minimum: number = 0.1;\n\n @Input('fZoomMaximum')\n public override maximum: number = 4;\n\n @Input('fZoomStep')\n public override step: number = 0.1;\n\n @Input('fZoomDblClickStep')\n public override dblClickStep: number = 0.5;\n\n constructor(\n fComponentsStore: FComponentsStore,\n ) {\n super(fComponentsStore);\n }\n\n public ngAfterViewInit(): void {\n super.toggleZoom();\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n }\n}\n","import { FZoomDirective } from './f-zoom.directive';\n\nexport const F_ZOOM_PROVIDERS = [\n\n FZoomDirective\n];\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { F_CONNECTION_PROVIDERS, } from './f-connection';\nimport { F_NODE_PROVIDERS } from './f-node';\nimport { F_FLOW_PROVIDERS } from './f-flow';\nimport { F_BACKGROUND_PROVIDERS } from './f-backgroud';\nimport { F_CANVAS_PROVIDERS } from './f-canvas';\nimport { F_CONNECTORS_PROVIDERS } from './f-connectors';\nimport { FDraggableDirective } from './f-draggable';\nimport { F_EXTERNAL_ITEM_PROVIDERS } from './f-external-item';\nimport { F_SELECTION_AREA_PROVIDERS } from './f-selection-area';\nimport { F_LINE_ALIGNMENT_PROVIDERS } from './f-line-alignment';\nimport { F_MINIMAP_PROVIDERS } from './f-minimap';\nimport { F_ZOOM_PROVIDERS } from './f-zoom';\n\n@NgModule({\n declarations: [\n ...F_BACKGROUND_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n ...F_FLOW_PROVIDERS,\n ...F_LINE_ALIGNMENT_PROVIDERS,\n ...F_MINIMAP_PROVIDERS,\n ...F_NODE_PROVIDERS,\n ...F_SELECTION_AREA_PROVIDERS,\n\n FDraggableDirective,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n ...F_BACKGROUND_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n ...F_FLOW_PROVIDERS,\n ...F_LINE_ALIGNMENT_PROVIDERS,\n ...F_MINIMAP_PROVIDERS,\n ...F_NODE_PROVIDERS,\n ...F_SELECTION_AREA_PROVIDERS,\n\n FDraggableDirective,\n ]\n})\nexport class FFlowModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["createSVGElement","i2.FComponentsStore","i1.FTransformStore","i1.FDraggableDataContext","i1.FComponentsStore","i2.FDraggableDataContext","i1","i3","MIXIN_BASE","uniqueId","i1.FConnectionTextPathDirective","i1.FConnectionFactory","i3.FConnectionGradientComponent","i4.FConnectionSelectionComponent","i5.FConnectionPathComponent","i6.FConnectionDragHandleComponent","i7.FConnectionTextComponent","i4","i3.FConnectionBase","OFFSET","i3.FDraggableDataContext","i3.FExternalItemService","i1.FExternalItemService","i2","i2.FMinimapFlowDirective","i3.FMinimapCanvasDirective","i4.FMinimapViewDirective","i1.FBackgroundComponent","i2.FRectPatternComponent","i3.FCirclePatternComponent","i4.FCanvasComponent","i5.FZoomDirective","i6.FConnectionTextComponent","i7.FConnectionTextPathDirective","i8.FConnectionDragHandleComponent","i9.FConnectionGradientComponent","i10.FConnectionPathComponent","i11.FConnectionSelectionComponent","i12.FConnectionComponent","i13.FConnectionCenterDirective","i14.FConnectionForCreateComponent","i15.FMarkerDirective","i16.FSnapConnectionComponent","i17.FNodeInputDirective","i18.FNodeOutletDirective","i19.FNodeOutputDirective","i20.FExternalItemDirective","i21.FFlowComponent","i22.FLineAlignmentComponent","i23.FMinimapComponent","i24.FMinimapCanvasDirective","i25.FMinimapViewDirective","i26.FMinimapFlowDirective","i27.FGroupDirective","i28.FNodeDirective","i29.FDragHandleDirective","i30.FResizeHandleDirective","i31.FSelectionAreaComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"foblex-flow.js","sources":["../../../projects/f-flow/src/f-backgroud/domain/i-f-background-pattern.ts","../../../projects/f-flow/src/domain/create-connection-markers/create-connection-markers-request.ts","../../../projects/f-flow/src/f-storage/f-components-store.ts","../../../projects/f-flow/src/f-storage/f-transform-store.ts","../../../projects/f-flow/src/domain/create-connection-markers/create-connection-markers.execution.ts","../../../projects/f-flow/src/domain/create-rounded-rect-from-element/create-rounded-rect-from-element-request.ts","../../../projects/f-flow/src/domain/create-rounded-rect-from-element/create-rounded-rect-from-element.execution.ts","../../../projects/f-flow/src/domain/emit-transform-changes/emit-transform-changes.request.ts","../../../projects/f-flow/src/domain/emit-transform-changes/emit-transform-changes.execution.ts","../../../projects/f-flow/src/domain/f-background/add-pattern-to-background/add-pattern-to-background.request.ts","../../../projects/f-flow/src/domain/f-background/add-pattern-to-background/add-pattern-to-background.execution.ts","../../../projects/f-flow/src/domain/f-background/providers.ts","../../../projects/f-flow/src/domain/f-canvas/center-group-or-node/center-group-or-node-request.ts","../../../projects/f-flow/src/domain/f-canvas/center-group-or-node/center-group-or-node.execution.ts","../../../projects/f-flow/src/domain/f-canvas/fit-to-flow/fit-to-flow-request.ts","../../../projects/f-flow/src/domain/f-canvas/fit-to-flow/fit-to-flow.execution.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-position/input-canvas-position-request.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-position/input-canvas-position.execution.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-scale/input-canvas-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/input-canvas-scale/input-canvas-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale/reset-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale/reset-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale-and-center/reset-scale-and-center-request.ts","../../../projects/f-flow/src/domain/f-canvas/reset-scale-and-center/reset-scale-and-center.execution.ts","../../../projects/f-flow/src/domain/f-canvas/update-scale/update-scale-request.ts","../../../projects/f-flow/src/domain/f-canvas/update-scale/update-scale.execution.ts","../../../projects/f-flow/src/domain/f-canvas/providers.ts","../../../projects/f-flow/src/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.request.ts","../../../projects/f-flow/src/domain/f-connection/find-closest-input-using-snap-threshold/find-closest-input-using-snap-threshold.execution.ts","../../../projects/f-flow/src/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.request.ts","../../../projects/f-flow/src/domain/f-connection/get-connector-with-rect/get-connector-with-rect-request.ts","../../../projects/f-flow/src/domain/get-element-rect-in-flow/get-element-rect-in-flow-request.ts","../../../projects/f-flow/src/domain/get-element-rect-in-flow/get-element-rect-in-flow.execution.ts","../../../projects/f-flow/src/domain/f-connection/get-connector-with-rect/get-connector-with-rect.execution.ts","../../../projects/f-flow/src/domain/f-connection/get-all-can-be-connected-input-positions/get-all-can-be-connected-input-positions.execution.ts","../../../projects/f-flow/src/domain/f-connection/providers.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.request.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.request.ts","../../../projects/f-flow/src/f-draggable/f-draggable-data-context.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas.drag-handler.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/canvas/canvas-move-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/canvas/providers.ts","../../../projects/f-flow/src/f-connectors/e-f-connectable-side.ts","../../../projects/f-flow/src/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.ts","../../../projects/f-flow/src/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.ts","../../../projects/f-flow/src/f-connectors/f-connector-base.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input-base.ts","../../../projects/f-flow/src/f-node/domain/is-group.ts","../../../projects/f-flow/src/f-node/domain/is-node.ts","../../../projects/f-flow/src/f-node/f-drag-handle/f-drag-handle.directive.ts","../../../projects/f-flow/src/f-node/f-resize-handle/e-f-resize-handle-type.ts","../../../projects/f-flow/src/f-node/f-resize-handle/f-resize-handle.directive.ts","../../../projects/f-flow/src/f-node/f-rotate-handle/f-rotate-handle.directive.ts","../../../projects/f-flow/src/mixins/change-selection/change-selection.ts","../../../projects/f-flow/src/mixins/change-visibility/change-visibility.ts","../../../projects/f-flow/src/f-node/f-node-base.ts","../../../projects/f-flow/src/f-node/f-resize-observer.ts","../../../projects/f-flow/src/f-node/f-group.directive.ts","../../../projects/f-flow/src/f-node/f-node.directive.ts","../../../projects/f-flow/src/f-node/providers.ts","../../../projects/f-flow/src/f-connectors/f-node-input/f-node-input.directive.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/f-node-outlet-base.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/is-node-outlet.ts","../../../projects/f-flow/src/f-connectors/f-node-outlet/f-node-outlet.directive.ts","../../../projects/f-flow/src/f-connectors/f-node-output/f-node-output-base.ts","../../../projects/f-flow/src/f-connectors/f-node-output/is-node-output.ts","../../../projects/f-flow/src/f-connectors/f-node-output/f-node-output.directive.ts","../../../projects/f-flow/src/f-connectors/providers.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.request.ts","../../../projects/f-flow/src/errors/create-error-class.ts","../../../projects/f-flow/src/errors/not-found-error.ts","../../../projects/f-flow/src/errors/conflict-error.ts","../../../projects/f-flow/src/errors/errors.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/f-create-connection.event.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.ts","../../../projects/f-flow/src/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.request.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/f-reassign-connection.event.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points.handler.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.ts","../../../projects/f-flow/src/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.ts","../../../projects/f-flow/src/f-connection/common/domain/f-bezier.path-builder.ts","../../../projects/f-flow/src/f-connection/common/domain/f-segment.path-builder.ts","../../../projects/f-flow/src/f-connection/common/domain/f-straight.path-builder.ts","../../../projects/f-flow/src/f-connection/common/f-connection-identifiers.ts","../../../projects/f-flow/src/f-connection/common/f-connection.injection-token.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text-path.directive.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/i-connection-text.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text.component.ts","../../../projects/f-flow/src/f-connection/common/f-connection-text/f-connection-text.component.html","../../../projects/f-flow/src/f-connection/common/f-drag-handle/f-connection-drag-handle.component.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/i-connection-gradient.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/f-connection-gradient.component.ts","../../../projects/f-flow/src/f-connection/common/f-gradient/f-connection-gradient.component.html","../../../projects/f-flow/src/f-connection/common/f-path/i-connection-path.ts","../../../projects/f-flow/src/f-connection/common/f-path/get-path-marker-id.ts","../../../projects/f-flow/src/f-connection/common/f-path/f-connection-path.component.ts","../../../projects/f-flow/src/f-connection/common/f-selection/f-connection-selection.component.ts","../../../projects/f-flow/src/f-connection/f-connection-builder/f-connection-builders.ts","../../../projects/f-flow/src/f-connection/f-connection-builder/f-connection-factory.ts","../../../projects/f-flow/src/f-connection/common/f-connection-base.ts","../../../projects/f-flow/src/f-connection/common/e-f-connection-behavior.ts","../../../projects/f-flow/src/f-connection/common/e-f-connection-type.ts","../../../projects/f-flow/src/f-connection/f-connection-center/f-connection-center.directive.ts","../../../projects/f-flow/src/f-connection/f-connection-for-create/f-connection-for-create.component.ts","../../../projects/f-flow/src/f-connection/f-connection-for-create/f-connection-for-create.component.html","../../../projects/f-flow/src/f-connection/f-connection/f-connection.component.ts","../../../projects/f-flow/src/f-connection/f-connection/f-connection.component.html","../../../projects/f-flow/src/f-connection/f-marker/e-f-marker-type.ts","../../../projects/f-flow/src/f-connection/f-marker/f-marker-base.ts","../../../projects/f-flow/src/f-connection/f-marker/f-marker.directive.ts","../../../projects/f-flow/src/f-connection/f-snap-connection/f-snap-connection.component.ts","../../../projects/f-flow/src/f-connection/f-snap-connection/f-snap-connection.component.html","../../../projects/f-flow/src/f-connection/providers.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/connections/providers.ts","../../../projects/f-flow/src/f-draggable/domain/get-node-padding/get-node-padding.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-node-padding/get-node-padding.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.ts","../../../projects/f-flow/src/f-draggable/domain/get-parent-nodes/get-parent-nodes.request.ts","../../../projects/f-flow/src/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.ts","../../../projects/f-flow/src/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.ts","../../../projects/f-flow/src/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.ts","../../../projects/f-flow/src/f-draggable/domain/providers.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.request.ts","../../../projects/f-flow/src/f-draggable/node/connection-base-drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/connection-target.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.request.ts","../../../projects/f-flow/src/f-draggable/node/connection-source.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.ts","../../../projects/f-flow/src/f-draggable/node/node.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/node-resize-by-child.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.ts","../../../projects/f-flow/src/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/node-move-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/node/node-move-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.request.ts","../../../projects/f-flow/src/domain/is-connection-under-node/is-connection-under-node.request.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/node-move-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/node/node-move-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/node/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/resize-direction.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize.drag-handler.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.validator.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-finalize/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.request.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.ts","../../../projects/f-flow/src/f-draggable/node-resize/node-resize-preparation/providers.ts","../../../projects/f-flow/src/f-draggable/node-resize/providers.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.request.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.execution.ts","../../../projects/f-flow/src/f-draggable/single-select/single-select.validator.ts","../../../projects/f-flow/src/f-draggable/single-select/providers.ts","../../../projects/f-flow/src/f-draggable/f-draggable-base.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.request.ts","../../../projects/f-flow/src/f-external-item/domain/f-create-node.event.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.execution.ts","../../../projects/f-flow/src/f-external-item/domain/external-item.drag-handler.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/external-item-finalize.validator.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-finalize/providers.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.request.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.execution.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/external-item-preparation.validator.ts","../../../projects/f-flow/src/f-external-item/domain/external-item-preparation/providers.ts","../../../projects/f-flow/src/f-external-item/domain/providers.ts","../../../projects/f-flow/src/f-external-item/f-external-item-base.ts","../../../projects/f-flow/src/f-external-item/is-external-item.ts","../../../projects/f-flow/src/f-external-item/f-external-item.service.ts","../../../projects/f-flow/src/f-external-item/f-external-item.directive.ts","../../../projects/f-flow/src/f-external-item/providers.ts","../../../projects/f-flow/src/f-draggable/i-f-drag-and-drop-plugin.ts","../../../projects/f-flow/src/f-draggable/f-draggable.directive.ts","../../../projects/f-flow/src/f-draggable/f-selection-change-event.ts","../../../projects/f-flow/src/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.ts","../../../projects/f-flow/src/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap.drag-handler.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-finalize/providers.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.ts","../../../projects/f-flow/src/f-minimap/domain/minimap-drag-preparation/providers.ts","../../../projects/f-flow/src/f-minimap/domain/check-rect-is-finite.ts","../../../projects/f-flow/src/f-minimap/domain/f-minimap-data.ts","../../../projects/f-flow/src/f-minimap/domain/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.ts","../../../projects/f-flow/src/domain/get-can-be-selected-items/get-can-be-selected-items-request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area.drag-handle.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-finalize/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.ts","../../../projects/f-flow/src/f-selection-area/domain/selection-area-preparation/providers.ts","../../../projects/f-flow/src/f-selection-area/domain/providers.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area-base.ts","../../../projects/f-flow/src/f-selection-area/f-selection-area.component.ts","../../../projects/f-flow/src/f-selection-area/providers.ts","../../../projects/f-flow/src/f-draggable/providers.ts","../../../projects/f-flow/src/domain/f-selection/clear-selection/clear-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/get-selection/get-selection.request.ts","../../../projects/f-flow/src/domain/f-selection/get-selection/get-selection.execution.ts","../../../projects/f-flow/src/domain/f-selection/select/select.request.ts","../../../projects/f-flow/src/domain/f-selection/select/select.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.request.ts","../../../projects/f-flow/src/domain/f-selection/select-all/select-all.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.ts","../../../projects/f-flow/src/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.ts","../../../projects/f-flow/src/domain/update-item-and-children-layers/update-item-and-children-layers.execution.ts","../../../projects/f-flow/src/domain/f-selection/select-and-update-node-layer/select-and-update-node-layer.execution.ts","../../../projects/f-flow/src/domain/f-selection/providers.ts","../../../projects/f-flow/src/domain/get-can-be-selected-items/get-can-be-selected-items.execution.ts","../../../projects/f-flow/src/domain/get-connection-line/get-connection-line.request.ts","../../../projects/f-flow/src/domain/get-connection-line/get-connection-line.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections-request.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-connections/get-flow-state-connections.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes-request.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state-nodes/get-flow-state-nodes.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state.request.ts","../../../projects/f-flow/src/domain/get-flow-state/get-flow-state.execution.ts","../../../projects/f-flow/src/domain/get-flow-state/providers.ts","../../../projects/f-flow/src/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.request.ts","../../../projects/f-flow/src/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.execution.ts","../../../projects/f-flow/src/domain/get-nodes-rect/get-nodes-rect.request.ts","../../../projects/f-flow/src/domain/get-nodes-rect/get-nodes-rect.execution.ts","../../../projects/f-flow/src/domain/get-position-in-flow/get-position-in-flow-request.ts","../../../projects/f-flow/src/domain/get-position-in-flow/get-position-in-flow.execution.ts","../../../projects/f-flow/src/domain/is-connection-under-node/is-connection-under-node.execution.ts","../../../projects/f-flow/src/domain/redraw-connections/redraw-connections-request.ts","../../../projects/f-flow/src/domain/redraw-connections/redraw-connections.execution.ts","../../../projects/f-flow/src/domain/show-connections-after-calculations/show-connections-after-calculations-request.ts","../../../projects/f-flow/src/domain/show-connections-after-calculations/show-connections-after-calculations.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-item-layers.request.ts","../../../projects/f-flow/src/domain/sort-item-layers/sort-item-layers.execution.ts","../../../projects/f-flow/src/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.request.ts","../../../projects/f-flow/src/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.execution.ts","../../../projects/f-flow/src/domain/constants.ts","../../../projects/f-flow/src/domain/create-dom-element.ts","../../../projects/f-flow/src/domain/providers.ts","../../../projects/f-flow/src/f-backgroud/f-rect-pattern/f-rect-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-circle-pattern/f-circle-pattern.component.ts","../../../projects/f-flow/src/f-backgroud/f-background-base.ts","../../../projects/f-flow/src/f-backgroud/f-background.component.ts","../../../projects/f-flow/src/f-backgroud/providers.ts","../../../projects/f-flow/src/f-canvas/domain/f-canvas-change.event.ts","../../../projects/f-flow/src/f-canvas/f-canvas-base.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.ts","../../../projects/f-flow/src/f-canvas/f-canvas.component.html","../../../projects/f-flow/src/f-canvas/providers.ts","../../../projects/f-flow/src/f-line-alignment/domain/line-element.ts","../../../projects/f-flow/src/f-line-alignment/domain/line-service.ts","../../../projects/f-flow/src/f-line-alignment/domain/nearest-coordinate.ts","../../../projects/f-flow/src/f-line-alignment/f-line-alignment-base.ts","../../../projects/f-flow/src/f-line-alignment/f-line-alignment.component.ts","../../../projects/f-flow/src/f-line-alignment/providers.ts","../../../projects/f-flow/src/f-minimap/f-minimap-flow.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap-canvas.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap-view.directive.ts","../../../projects/f-flow/src/f-minimap/f-minimap.component.ts","../../../projects/f-flow/src/f-minimap/f-minimap.component.html","../../../projects/f-flow/src/f-minimap/providers.ts","../../../projects/f-flow/src/f-flow/f-flow-base.ts","../../../projects/f-flow/src/f-flow/f-flow.component.ts","../../../projects/f-flow/src/f-flow/f-flow.component.html","../../../projects/f-flow/src/f-flow/providers.ts","../../../projects/f-flow/src/f-zoom/f-zoom-base.ts","../../../projects/f-flow/src/f-zoom/f-zoom.directive.ts","../../../projects/f-flow/src/f-zoom/providers.ts","../../../projects/f-flow/src/f-flow.module.ts","../../../projects/f-flow/src/foblex-flow.ts"],"sourcesContent":["import { ITransformModel } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_BACKGROUND_PATTERN = new InjectionToken<IFBackgroundPattern>('F_BACKGROUND_PATTERN');\n\nexport interface IFBackgroundPattern {\n\n hostElement: HTMLElement | SVGElement;\n\n setTransform(transform: ITransformModel): void;\n}\n","import { FConnectionBase } from '../../f-connection';\n\nexport class CreateConnectionMarkersRequest {\n constructor(\n public fConnection: FConnectionBase,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { ITransformModel } from '@foblex/2d';\nimport { FConnectionBase, FMarkerBase } from '../f-connection';\nimport { FFlowBase } from '../f-flow';\nimport { FCanvasBase } from '../f-canvas';\nimport { FBackgroundBase } from '../f-backgroud';\nimport { FNodeBase } from '../f-node';\nimport { FConnectorBase } from '../f-connectors';\nimport { FDraggableBase } from '../f-draggable';\n\n@Injectable()\nexport class FComponentsStore {\n\n private readonly componentsDataChanges: Subject<void> = new Subject<void>();\n public get componentsData$(): Observable<void> {\n return this.componentsDataChanges.asObservable();\n }\n\n private readonly componentsCountChanges: Subject<void> = new Subject<void>();\n public get componentsCount$(): Observable<void> {\n return this.componentsCountChanges.asObservable();\n }\n\n public get flowHost(): HTMLElement {\n return this.fFlow?.hostElement!;\n }\n\n public get transform(): ITransformModel {\n return this.fCanvas?.transform!;\n }\n\n public fFlow: FFlowBase | undefined;\n\n public fCanvas: FCanvasBase | undefined;\n\n public fBackground: FBackgroundBase | undefined;\n\n public fNodes: FNodeBase[] = [];\n\n public fConnections: FConnectionBase[] = [];\n\n public fTempConnection: FConnectionBase | undefined;\n\n public fSnapConnection: FConnectionBase | undefined;\n\n public fMarkers: FMarkerBase[] = [];\n\n public fOutputs: FConnectorBase[] = [];\n\n public fInputs: FConnectorBase[] = [];\n\n public fOutlets: FConnectorBase[] = [];\n\n public fDraggable: FDraggableBase | undefined;\n\n public findNode(element: HTMLElement | SVGElement): FNodeBase | undefined {\n return this.fNodes.find(n => n.isContains(element));\n }\n\n public addComponent<T>(collection: T[], component: T): void {\n collection.push(component);\n this.componentsCountChanges.next();\n }\n\n public removeComponent<T>(collection: T[], component: T): void {\n const index = collection.indexOf(component);\n if (index > -1) {\n collection.splice(index, 1);\n this.componentsCountChanges.next();\n }\n }\n\n public componentDataChanged(): void {\n this.componentsDataChanges.next();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class FTransformStore {\n\n public readonly changes: Subject<void> = new Subject<void>();\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionMarkersRequest } from './create-connection-markers-request';\nimport { FConnectionBase, FMarkerBase } from '../../f-connection';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { normalizeDomElementId } from '@foblex/utils';\nimport { FComponentsStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionMarkersRequest)\nexport class CreateConnectionMarkersExecution implements IExecution<CreateConnectionMarkersRequest, void> {\n\n constructor(\n private fBrowser: BrowserService,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: CreateConnectionMarkersRequest): void {\n const element: SVGDefsElement = createSVGElement('defs', this.fBrowser);\n const fConnection = request.fConnection;\n\n this.getMarkers(fConnection).forEach((marker) => {\n\n const markerElement = this.createMarkerElement(marker, fConnection.fId);\n\n const clone = marker.hostElement.cloneNode(true) as HTMLElement;\n clone.setAttribute('height', `${ marker.height }`);\n clone.setAttribute('width', `${ marker.width }`);\n clone.removeAttribute('markerUnits');\n clone.style.display = 'unset';\n markerElement.append(clone);\n\n element.append(markerElement);\n });\n\n fConnection.fDefs.nativeElement.innerHTML = element.innerHTML;\n\n this.makeSafariCompatible(fConnection);\n }\n\n public getMarkers(fConnection: FConnectionBase): FMarkerBase[] {\n return this.fComponentsStore.fMarkers.filter((x) => fConnection.hostElement.contains(x.hostElement));\n }\n\n // Safari does not support markers on path elements if markers are defined after the path element\n private makeSafariCompatible(fConnection: FConnectionBase): void {\n fConnection.fPath.hostElement.replaceWith(fConnection.fPath.hostElement);\n }\n\n private createMarkerElement(marker: FMarkerBase, fConnectionId: string): SVGElement {\n const markerElement = createSVGElement('marker', this.fBrowser);\n\n markerElement.setAttribute('id', normalizeDomElementId(marker.type + '-' + fConnectionId));\n\n markerElement.setAttribute('markerHeight', `${ marker.height }`);\n markerElement.setAttribute('markerWidth', `${ marker.width }`);\n markerElement.setAttribute('orient', `${ marker.orient }`);\n markerElement.setAttribute('refX', `${ marker.refX }`);\n markerElement.setAttribute('refY', `${ marker.refY }`);\n markerElement.setAttribute('markerUnits', `${ marker.markerUnits }`);\n\n return markerElement;\n }\n}\n\nfunction createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","export class CreateRoundedRectFromElementRequest {\n constructor(\n public element: HTMLElement | SVGElement,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateRoundedRectFromElementRequest } from './create-rounded-rect-from-element-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\nimport { RoundedRect, RectExtensions } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(CreateRoundedRectFromElementRequest)\nexport class CreateRoundedRectFromElementExecution implements IExecution<CreateRoundedRectFromElementRequest, RoundedRect> {\n\n constructor(\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: CreateRoundedRectFromElementRequest): RoundedRect {\n return this.setRadiusFromElement(RoundedRect.fromRect(RectExtensions.fromElement(request.element)), request.element);\n }\n\n private setRadiusFromElement(rect: RoundedRect, element: HTMLElement | SVGElement): RoundedRect {\n const styles = this.getComputedStyle(element);\n rect.radius1 = this.toPixels(styles.borderTopLeftRadius, element, styles.fontSize);\n rect.radius2 = this.toPixels(styles.borderTopRightRadius, element, styles.fontSize);\n rect.radius3 = this.toPixels(styles.borderBottomRightRadius, element, styles.fontSize);\n rect.radius4 = this.toPixels(styles.borderBottomLeftRadius, element, styles.fontSize);\n return rect;\n }\n\n private getComputedStyle(element: HTMLElement | SVGElement): CSSStyleDeclaration {\n return this.fBrowser.window.getComputedStyle(element);\n }\n\n private toPixels(value: string, element: HTMLElement | SVGElement, fontSize: string): number {\n return this.fBrowser.toPixels(value, element.clientWidth, element.clientHeight, fontSize) || 0\n }\n}\n","export class EmitTransformChangesRequest {\n\n}\n","import { EmitTransformChangesRequest } from './emit-transform-changes.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FTransformStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(EmitTransformChangesRequest)\nexport class EmitTransformChangesExecution\n implements IExecution<EmitTransformChangesRequest, void> {\n\n constructor(\n private fTransformStore: FTransformStore,\n ) {\n }\n\n public handle(request: EmitTransformChangesRequest): void {\n this.fTransformStore.changes.next();\n }\n}\n","import { IFBackgroundPattern } from '../../../f-backgroud';\n\nexport class AddPatternToBackgroundRequest {\n constructor(\n public fPattern: IFBackgroundPattern | undefined\n ) {\n }\n}\n","import { TransformModelExtensions } from '@foblex/2d';\nimport { AddPatternToBackgroundRequest } from './add-pattern-to-background.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { createSVGElement } from '../../index';\nimport { FComponentsStore } from '../../../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { FBackgroundBase } from '../../../f-backgroud';\n\nlet uniqueId: number = 0;\n\n@Injectable()\n@FExecutionRegister(AddPatternToBackgroundRequest)\nexport class AddPatternToBackgroundExecution implements IExecution<AddPatternToBackgroundRequest, void> {\n\n private get fBackground(): FBackgroundBase {\n return this.fComponentsStore.fBackground!;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: AddPatternToBackgroundRequest): void {\n const children = request.fPattern?.hostElement.getElementsByTagName('pattern') || [];\n const pattern = children.length ? children[ 0 ] : undefined;\n if (pattern) {\n const defs = createSVGElement('defs', this.fBrowser);\n pattern.id = 'f-background-pattern-' + uniqueId++;\n request.fPattern?.hostElement.remove();\n defs.appendChild(pattern);\n this.fBackground.hostElement?.firstChild?.appendChild(defs);\n const rect = createSVGElement('rect', this.fBrowser);\n rect.setAttribute('fill', 'url(#' + pattern.id + ')');\n rect.setAttribute('width', '100%');\n rect.setAttribute('height', '100%');\n this.fBackground.hostElement.firstChild?.appendChild(rect);\n const transform = this.fComponentsStore.fCanvas?.transform || TransformModelExtensions.default();\n request.fPattern?.setTransform(transform);\n }\n }\n}\n","import { AddPatternToBackgroundExecution } from './add-pattern-to-background';\n\nexport const F_BACKGROUND_FEATURES = [\n\n AddPatternToBackgroundExecution\n];\n","export class CenterGroupOrNodeRequest {\n\n constructor(\n public id: string,\n public animated: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CenterGroupOrNodeRequest } from './center-group-or-node-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { F_CANVAS_ANIMATION_DURATION } from '../../index';\n\n@Injectable()\n@FExecutionRegister(CenterGroupOrNodeRequest)\nexport class CenterGroupOrNodeExecution implements IExecution<CenterGroupOrNodeRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: CenterGroupOrNodeRequest): void {\n const fNode = this.getNode(request.id);\n if (!fNode) {\n return;\n }\n\n this.toCenter(this.getNodeRect(fNode), this.getFlowRect(), fNode.position);\n\n request.animated ? this.fComponentsStore.fCanvas!.redrawWithAnimation() : this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);\n }\n\n public toCenter(fNodeRect: IRect, fFlowRect: IRect, position: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = PointExtensions.initialize(\n (fFlowRect.width - fNodeRect.width) / 2 - position.x * this.transform.scale,\n (fFlowRect.height - fNodeRect.height) / 2 - position.y * this.transform.scale\n );\n }\n\n private getNode(id: string): FNodeBase | undefined {\n return this.fComponentsStore.fNodes.find((x) => x.fId === id);\n }\n\n private getNodeRect(fNode: FNodeBase): IRect {\n return RectExtensions.fromElement(fNode.hostElement);\n }\n\n private getFlowRect(): IRect {\n return RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FitToFlowRequest {\n\n constructor(\n public toCenter: IPoint,\n public animated: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FitToFlowRequest } from './fit-to-flow-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\nimport { F_CANVAS_ANIMATION_DURATION, GetNodesRectRequest } from '../../index';\n\n@Injectable()\n@FExecutionRegister(FitToFlowRequest)\nexport class FitToFlowExecution implements IExecution<FitToFlowRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: FitToFlowRequest): void {\n const fNodesRect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n\n this.fitToParent(\n fNodesRect,\n RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement),\n this.fComponentsStore.fNodes.map((x) => x.position),\n request.toCenter\n );\n request.animated ? this.fComponentsStore.fCanvas!.redrawWithAnimation() : this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);\n }\n\n public fitToParent(rect: IRect, parentRect: IRect, points: IPoint[], toCenter: IPoint): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n const itemsContainerWidth = (rect.width / this.transform.scale) + toCenter.x;\n const itemsContainerHeight = (rect.height / this.transform.scale) + toCenter.y;\n if (\n (itemsContainerWidth > parentRect.width || itemsContainerHeight > parentRect.height) ||\n itemsContainerWidth < parentRect.width && itemsContainerHeight < parentRect.height\n ) {\n this.transform.scale = Math.min(parentRect.width / itemsContainerWidth, parentRect.height / itemsContainerHeight);\n }\n\n const newX = (parentRect.width - itemsContainerWidth * this.transform.scale) / 2 - this.transform.position.x * this.transform.scale;\n const newY = (parentRect.height - itemsContainerHeight * this.transform.scale) / 2 - this.transform.position.y * this.transform.scale;\n\n this.transform.position = PointExtensions.initialize(newX + (toCenter.x / 2) * this.transform.scale, newY + (toCenter.y / 2) * this.transform.scale)\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","import { IPoint, ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasPositionRequest {\n\n constructor(\n public transform: ITransformModel,\n public position: IPoint | undefined\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InputCanvasPositionRequest } from './input-canvas-position-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasPositionRequest)\nexport class InputCanvasPositionExecution implements IExecution<InputCanvasPositionRequest, void> {\n\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: InputCanvasPositionRequest): void {\n if (!request.position) {\n return;\n }\n const position = PointExtensions.sum(request.transform.position, request.transform.scaledPosition);\n if (!PointExtensions.isEqual(position, request.position)) {\n request.transform.position = request.position;\n request.transform.scaledPosition = PointExtensions.initialize();\n this.fComponentsStore.fCanvas?.redraw();\n }\n }\n}\n","import { ITransformModel } from '@foblex/2d';\n\nexport class InputCanvasScaleRequest {\n\n constructor(\n public transform: ITransformModel,\n public scale: number | undefined\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { InputCanvasScaleRequest } from './input-canvas-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(InputCanvasScaleRequest)\nexport class InputCanvasScaleExecution implements IExecution<InputCanvasScaleRequest, void> {\n\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: InputCanvasScaleRequest): void {\n if (!request.scale) {\n return;\n }\n request.transform.scale = request.scale;\n this.fComponentsStore.fCanvas?.redraw();\n }\n}\n","export class ResetScaleRequest {\n}\n","import { Injectable } from '@angular/core';\nimport { ResetScaleRequest } from './reset-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n\n@Injectable()\n@FExecutionRegister(ResetScaleRequest)\nexport class ResetScaleExecution implements IExecution<ResetScaleRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: ResetScaleRequest): void {\n this.transform.scale = 1;\n this.transform.scaledPosition = PointExtensions.initialize();\n }\n}\n","export class ResetScaleAndCenterRequest {\n\n constructor(\n public animated: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ResetScaleAndCenterRequest } from './reset-scale-and-center-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IPoint, IRect, ITransformModel, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { F_CANVAS_ANIMATION_DURATION, GetNodesRectRequest } from '../../index';\nimport { FComponentsStore } from '../../../f-storage';\n\n\n@Injectable()\n@FExecutionRegister(ResetScaleAndCenterRequest)\nexport class ResetScaleAndCenterExecution implements IExecution<ResetScaleAndCenterRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: ResetScaleAndCenterRequest): void {\n const fNodesRect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize();\n if (fNodesRect.width === 0 || fNodesRect.height === 0) {\n return;\n }\n this.oneToOneCentering(\n fNodesRect,\n RectExtensions.fromElement(this.fComponentsStore.fFlow!.hostElement),\n this.fComponentsStore.fNodes.map((x) => x.position)\n );\n\n request.animated ? this.fComponentsStore.fCanvas!.redrawWithAnimation() : this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n setTimeout(() => this.fComponentsStore.componentDataChanged(), F_CANVAS_ANIMATION_DURATION);\n }\n\n public oneToOneCentering(rect: IRect, parentRect: IRect, points: IPoint[]): void {\n this.transform.scaledPosition = PointExtensions.initialize();\n this.transform.position = this.getZeroPositionWithoutScale(points);\n\n const newX = (parentRect.width - rect.width / this.transform.scale) / 2 - this.transform.position.x;\n const newY = (parentRect.height - rect.height / this.transform.scale) / 2 - this.transform.position.y;\n\n this.transform.scale = 1;\n this.transform.position = PointExtensions.initialize(newX, newY);\n }\n\n private getZeroPositionWithoutScale(points: IPoint[]): IPoint {\n const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0;\n const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0;\n return PointExtensions.initialize(xPoint, yPoint)\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class UpdateScaleRequest {\n\n constructor(\n public scale: number,\n public toPosition: IPoint\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { UpdateScaleRequest } from './update-scale-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { ITransformModel, PointExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\n\n@Injectable()\n@FExecutionRegister(UpdateScaleRequest)\nexport class UpdateScaleExecution implements IExecution<UpdateScaleRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: UpdateScaleRequest): void {\n if (request.scale !== this.transform.scale) {\n\n const summaryPosition = PointExtensions.sum(this.transform.scaledPosition, this.transform.position);\n\n const newX = request.toPosition.x - (request.toPosition.x - summaryPosition.x) * request.scale / this.transform.scale;\n const newY = request.toPosition.y - (request.toPosition.y - summaryPosition.y) * request.scale / this.transform.scale;\n\n this.transform.scale = request.scale;\n this.transform.scaledPosition = PointExtensions.sub(PointExtensions.initialize(newX, newY), this.transform.position);\n }\n }\n}\n","import { CenterGroupOrNodeExecution } from './center-group-or-node';\nimport { FitToFlowExecution } from './fit-to-flow';\nimport { ResetScaleAndCenterExecution } from './reset-scale-and-center';\nimport { ResetScaleExecution } from './reset-scale';\nimport { UpdateScaleExecution } from './update-scale';\nimport { InputCanvasPositionExecution } from './input-canvas-position';\nimport { InputCanvasScaleExecution } from './input-canvas-scale';\n\nexport const F_CANVAS_FEATURES = [\n\n CenterGroupOrNodeExecution,\n\n FitToFlowExecution,\n\n InputCanvasPositionExecution,\n\n InputCanvasScaleExecution,\n\n ResetScaleExecution,\n\n ResetScaleAndCenterExecution,\n\n UpdateScaleExecution\n];\n","import { IPoint } from '@foblex/2d';\nimport { IConnectorWithRect } from '../get-connector-with-rect';\n\nexport class FindClosestInputUsingSnapThresholdRequest {\n\n constructor(\n public position: IPoint,\n public canBeConnectedInputs: IConnectorWithRect[],\n public snapThreshold: number\n ) {\n }\n}\n","import { FindClosestInputUsingSnapThresholdRequest } from './find-closest-input-using-snap-threshold.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { IConnectorWithRect } from '../get-connector-with-rect';\n\n@Injectable()\n@FExecutionRegister(FindClosestInputUsingSnapThresholdRequest)\nexport class FindClosestInputUsingSnapThresholdExecution\n implements IExecution<FindClosestInputUsingSnapThresholdRequest, IConnectorWithRect | undefined> {\n\n\n public handle(payload: FindClosestInputUsingSnapThresholdRequest): IConnectorWithRect | undefined {\n let result: IConnectorWithRect | undefined;\n let minDistance = Infinity;\n\n for (const element of payload.canBeConnectedInputs) {\n const distance = this.distanceToRectangle(payload.position, element);\n\n if (distance < minDistance) {\n minDistance = distance;\n result = element;\n }\n }\n\n return minDistance < payload.snapThreshold ? result : undefined;\n }\n\n private distanceToRectangle(point: IPoint, inputWithRect: IConnectorWithRect): number {\n const closestX = this.clamp(point.x, inputWithRect.fRect.x, inputWithRect.fRect.x + inputWithRect.fRect.width);\n const closestY = this.clamp(point.y, inputWithRect.fRect.y, inputWithRect.fRect.y + inputWithRect.fRect.height);\n\n const dx = point.x - closestX;\n const dy = point.y - closestY;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n private clamp(value: number, min: number, max: number): number {\n return Math.max(min, Math.min(max, value));\n }\n}\n","export class GetAllCanBeConnectedInputPositionsRequest {\n\n constructor(\n public fOutputId: string,\n ) {\n }\n}\n","import { FConnectorBase } from '../../../f-connectors';\n\nexport class GetConnectorWithRectRequest {\n\n constructor(\n public connector: FConnectorBase\n ) {\n }\n}\n","export class GetElementRectInFlowRequest {\n constructor(\n public element: HTMLElement | SVGElement\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetElementRectInFlowRequest } from './get-element-rect-in-flow-request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport { IRoundedRect, RoundedRect, IPoint, ISize, Point, SizeExtensions, ITransformModel } from '@foblex/2d';\nimport { CreateRoundedRectFromElementRequest } from '../create-rounded-rect-from-element';\n\n@Injectable()\n@FExecutionRegister(GetElementRectInFlowRequest)\nexport class GetElementRectInFlowExecution implements IExecution<GetElementRectInFlowRequest, IRoundedRect> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetElementRectInFlowRequest): IRoundedRect {\n const systemRect = this.fMediator.send<IRoundedRect>(new CreateRoundedRectFromElementRequest(request.element));\n const position = this.transformElementPositionInFlow(systemRect);\n const size = this.transformElementSizeInFlow(systemRect);\n\n return new RoundedRect(\n position.x, position.y, size.width, size.height,\n systemRect.radius1, systemRect.radius2, systemRect.radius3, systemRect.radius4\n );\n }\n\n private transformElementPositionInFlow(rect: IRoundedRect): IPoint {\n return Point.fromPoint(rect).elementTransform(this.flowHost).sub(this.transform.scaledPosition).sub(this.transform.position).div(this.transform.scale);\n }\n\n private transformElementSizeInFlow(rect: IRoundedRect): ISize {\n return SizeExtensions.initialize(rect.width / this.transform.scale, rect.height / this.transform.scale);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetConnectorWithRectRequest } from './get-connector-with-rect-request';\nimport { IRoundedRect } from '@foblex/2d';\nimport { IConnectorWithRect } from './i-connector-with-rect';\nimport { GetElementRectInFlowRequest } from '../../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(GetConnectorWithRectRequest)\nexport class GetConnectorWithRectExecution implements IExecution<GetConnectorWithRectRequest, IConnectorWithRect> {\n\n constructor(\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: GetConnectorWithRectRequest): IConnectorWithRect {\n return {\n fConnector: request.connector,\n fRect: this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(request.connector.hostElement))\n }\n }\n}\n","import { GetAllCanBeConnectedInputPositionsRequest } from './get-all-can-be-connected-input-positions.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetConnectorWithRectRequest, IConnectorWithRect } from '../get-connector-with-rect';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetAllCanBeConnectedInputPositionsRequest)\nexport class GetAllCanBeConnectedInputPositionsExecution\n implements IExecution<GetAllCanBeConnectedInputPositionsRequest, IConnectorWithRect[]> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fInputs(): FConnectorBase[] {\n return this.fComponentsStore.fInputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(payload: GetAllCanBeConnectedInputPositionsRequest): IConnectorWithRect[] {\n return this.getCanBeConnectedInputs(this.getOutput(payload.fOutputId)!).map((x) => {\n return this.fMediator.send(new GetConnectorWithRectRequest(x));\n });\n }\n\n private getOutput(fId: string): FConnectorBase | undefined {\n return this.findOutputById(fId) || this.findOutletById(fId);\n }\n\n private findOutputById(fId: string): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === fId);\n }\n\n private findOutletById(fId: string): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === fId);\n }\n\n private getCanBeConnectedInputs(output: FConnectorBase): FConnectorBase[] {\n return output.isSelfConnectable ?\n this.fInputs.filter((x) => x.canBeConnected) :\n this.filterSelfConnectable(this.fInputs.filter((x) => x.canBeConnected), output);\n }\n\n private filterSelfConnectable(inputs: FConnectorBase[], output: FConnectorBase): FConnectorBase[] {\n return inputs.filter((x) => this.getNodeOfConnector(output)?.hostElement !== this.getNodeOfConnector(x)?.hostElement);\n }\n\n private getNodeOfConnector(connector: FConnectorBase): FNodeBase | undefined {\n return this.fNodes.find((x) => x.isContains(connector.hostElement));\n }\n}\n","import { FindClosestInputUsingSnapThresholdExecution } from './find-closest-input-using-snap-threshold';\nimport { GetAllCanBeConnectedInputPositionsExecution } from './get-all-can-be-connected-input-positions';\nimport { GetConnectorWithRectExecution } from './get-connector-with-rect';\n\nexport const F_CONNECTION_FEATURES = [\n\n FindClosestInputUsingSnapThresholdExecution,\n\n GetAllCanBeConnectedInputPositionsExecution,\n\n GetConnectorWithRectExecution,\n];\n","export class ClearSelectionRequest {\n\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CanvasMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Point } from '@foblex/2d';\nimport { IDraggableItem } from './i-draggable-item';\nimport { FLineAlignmentBase } from '../f-line-alignment';\nimport { ICanChangeSelection } from '../mixins';\n\n@Injectable()\nexport class FDraggableDataContext {\n\n public selectedItems: ICanChangeSelection[] = [];\n\n public isSelectedChanged: boolean = false;\n\n public onPointerDownScale: number = 1;\n\n public onPointerDownPosition: Point = new Point(0, 0);\n\n public draggableItems: IDraggableItem[] = [];\n\n public fLineAlignment: FLineAlignmentBase | undefined;\n\n public reset(): void {\n this.draggableItems = [];\n this.onPointerDownScale = 1;\n this.onPointerDownPosition = new Point(0, 0);\n }\n\n public markSelectionAsChanged(): void {\n this.isSelectedChanged = true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMoveFinalizeRequest } from './canvas-move-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\n\n@Injectable()\n@FExecutionRegister(CanvasMoveFinalizeRequest)\nexport class CanvasMoveFinalizeExecution implements IExecution<CanvasMoveFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: CanvasMoveFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => x.complete?.());\n }\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class CanvasDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public initialize(): void {\n this.onPointerDownPosition = this.fComponentsStore.fCanvas!.transform.position;\n }\n\n public move(difference: IPoint): void {\n this.fComponentsStore.fCanvas!.setPosition(Point.fromPoint(this.onPointerDownPosition).add(difference));\n this.fComponentsStore.fCanvas!.redraw();\n }\n\n public complete(): void {\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMoveFinalizeRequest } from './canvas-move-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CanvasDragHandler } from '../canvas.drag-handler';\n\n@Injectable()\n@FValidatorRegister(CanvasMoveFinalizeRequest)\nexport class CanvasMoveFinalizeValidator implements IValidator<CanvasMoveFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CanvasMoveFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CanvasDragHandler\n );\n }\n}\n","import { CanvasMoveFinalizeExecution } from './canvas-move-finalize.execution';\nimport { CanvasMoveFinalizeValidator } from './canvas-move-finalize.validator';\n\nexport const CANVAS_MOVE_FINALIZE_PROVIDERS = [\n\n CanvasMoveFinalizeExecution,\n\n CanvasMoveFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CanvasMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMovePreparationRequest } from './canvas-move-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CanvasDragHandler } from '../canvas.drag-handler';\n\n@Injectable()\n@FExecutionRegister(CanvasMovePreparationRequest)\nexport class CanvasMovePreparationExecution implements IExecution<CanvasMovePreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: CanvasMovePreparationRequest): void {\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost);\n this.fDraggableDataContext.draggableItems = [\n new CanvasDragHandler(this.fComponentsStore)\n ];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CanvasMovePreparationRequest } from './canvas-move-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FValidatorRegister(CanvasMovePreparationRequest)\nexport class CanvasMovePreparationValidator implements IValidator<CanvasMovePreparationRequest> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CanvasMovePreparationRequest): boolean {\n return !this.fDraggableDataContext.draggableItems.length &&\n (this.isBackgroundElement(request.event.targetElement) || this.isDragOnHost(request.event.targetElement));\n }\n\n private isBackgroundElement(targetElement: HTMLElement): boolean | undefined {\n return this.fComponentsStore.fBackground?.isBackgroundElement(targetElement);\n }\n\n private isDragOnHost(targetElement: HTMLElement): boolean {\n return this.flowHost.contains(targetElement) && !this.getNode(targetElement);\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n let result = this.fComponentsStore.findNode(targetElement);\n if (result && result.fDraggingDisabled) {\n result = undefined;\n }\n return result;\n }\n}\n","import { CanvasMovePreparationExecution } from './canvas-move-preparation.execution';\nimport { CanvasMovePreparationValidator } from './canvas-move-preparation.validator';\n\nexport const CANVAS_MOVE_PREPARATION_PROVIDERS = [\n\n CanvasMovePreparationExecution,\n\n CanvasMovePreparationValidator,\n];\n","import { CANVAS_MOVE_PREPARATION_PROVIDERS } from './canvas-move-preparation';\nimport { CANVAS_MOVE_FINALIZE_PROVIDERS } from './canvas-move-finalize';\n\nexport const CANVAS_PROVIDERS = [\n\n ...CANVAS_MOVE_FINALIZE_PROVIDERS,\n\n ...CANVAS_MOVE_PREPARATION_PROVIDERS,\n];\n","export enum EFConnectableSide {\n\n LEFT = 'left',\n\n RIGHT = 'right',\n\n TOP = 'top',\n\n BOTTOM = 'bottom',\n\n AUTO = 'auto',\n}\n","import { RectExtensions } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { CalculateConnectorConnectableSideRequest } from './calculate-connector-connectable-side-request';\nimport { EFConnectableSide } from '../../e-f-connectable-side';\n\nexport class CalculateConnectorConnectableSideHandler\n implements IHandler<CalculateConnectorConnectableSideRequest, EFConnectableSide> {\n\n public handle(request: CalculateConnectorConnectableSideRequest): EFConnectableSide {\n let result: EFConnectableSide;\n\n if (request.fConnector._fConnectableSide === EFConnectableSide.AUTO) {\n result = this.getSideByDelta(request.fConnector.hostElement, request.fNodeHost);\n } else {\n result = request.fConnector._fConnectableSide;\n }\n return result;\n }\n\n private getSideByDelta(fConnectorHost: HTMLElement | SVGElement, fNodeHost: HTMLElement | SVGElement): EFConnectableSide {\n let result: EFConnectableSide;\n\n const childRect = RectExtensions.fromElement(fConnectorHost);\n const parentRect = fNodeHost.getBoundingClientRect();\n\n const deltaLeft = childRect.gravityCenter.x - parentRect.left;\n const deltaRight = parentRect.right - childRect.gravityCenter.x;\n const deltaTop = childRect.gravityCenter.y - parentRect.top;\n const deltaBottom = parentRect.bottom - childRect.gravityCenter.y;\n\n const minDelta = Math.min(deltaLeft, deltaRight, deltaTop, deltaBottom);\n\n if (minDelta === deltaLeft) {\n result = EFConnectableSide.LEFT;\n } else if (minDelta === deltaRight) {\n result = EFConnectableSide.RIGHT;\n } else if (minDelta === deltaTop) {\n result = EFConnectableSide.TOP;\n } else {\n result = EFConnectableSide.BOTTOM;\n }\n\n return result;\n }\n}\n","import { FConnectorBase } from '../../f-connector-base';\n\nexport class CalculateConnectorConnectableSideRequest {\n\n constructor(\n public fConnector: FConnectorBase,\n public fNodeHost: HTMLElement | SVGElement\n ) {\n }\n}\n","import { Subject } from 'rxjs';\nimport { EFConnectableSide } from './e-f-connectable-side';\nimport { IHasStateChanges } from '../i-has-state-changes';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport abstract class FConnectorBase implements IHasStateChanges, IHasHostElement {\n\n public abstract id: string;\n\n public abstract disabled: boolean;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract canBeConnected: boolean;\n\n public abstract isConnected: boolean;\n\n public isSelfConnectable: boolean = true;\n\n public fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_INPUT = new InjectionToken<FNodeInputBase>('F_NODE_INPUT');\n\n@Directive()\nexport abstract class FNodeInputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public isConnected: boolean = false;\n\n public get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export function isGroup(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fGroup]');\n}\n\n","export function isNode(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNode]');\n}\n\n","import {\n Directive, ElementRef, InjectionToken\n} from \"@angular/core\";\nimport { IHasHostElement } from '../../i-has-host-element';\n\nexport const F_DRAG_HANDLE: InjectionToken<FDragHandleDirective> = new InjectionToken<FDragHandleDirective>('F_DRAG_HANDLE');\n\n@Directive({\n selector: \"[fDragHandle]\",\n host: {\n class: \"f-drag-handle f-component\"\n },\n providers: [ { provide: F_DRAG_HANDLE, useExisting: FDragHandleDirective } ],\n})\nexport class FDragHandleDirective implements IHasHostElement {\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","export enum EFResizeHandleType {\n\n LEFT_TOP = 'left-top',\n\n RIGHT_TOP = 'right-top',\n\n LEFT_BOTTOM = 'left-bottom',\n\n RIGHT_BOTTOM = 'right-bottom',\n}\n","import {\n Directive, ElementRef, HostBinding, InjectionToken, Input\n} from \"@angular/core\";\nimport { EFResizeHandleType } from './e-f-resize-handle-type';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { castToEnum } from '@foblex/utils';\n\nexport const F_RESIZE_HANDLE: InjectionToken<FResizeHandleDirective> = new InjectionToken<FResizeHandleDirective>('F_RESIZE_HANDLE');\n\n@Directive({\n selector: \"[fResizeHandle]\",\n host: {\n class: `f-resize-handle f-component`,\n '[attr.data-f-resize-handle-type]': 'type',\n },\n providers: [ { provide: F_RESIZE_HANDLE, useExisting: FResizeHandleDirective } ],\n})\nexport class FResizeHandleDirective implements IHasHostElement {\n\n public _type: EFResizeHandleType = EFResizeHandleType.LEFT_TOP;\n @Input('fResizeHandleType')\n public set type(type: EFResizeHandleType) {\n this._type = castToEnum(type, 'fResizeHandleType', EFResizeHandleType);\n }\n public get type(): EFResizeHandleType {\n return this._type;\n }\n\n @HostBinding('class')\n public get typeClass(): string {\n return `f-resize-handle-${ EFResizeHandleType[ this.type.toUpperCase() as keyof typeof EFResizeHandleType ] }`;\n }\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","import {\n Directive, ElementRef, InjectionToken, Input\n} from \"@angular/core\";\nimport { IHasHostElement } from '../../i-has-host-element';\n\n// export const F_ROTATE_HANDLE: InjectionToken<FRotateHandleDirective> = new InjectionToken<FRotateHandleDirective>('F_ROTATE_HANDLE');\n//\n// @Directive({\n// selector: \"[fRotateHandle]\",\n// host: {\n// class: `f-rotate-handle f-component`,\n// '[class.f-rotate-handle-disabled]': 'disabled',\n// },\n// providers: [ { provide: F_ROTATE_HANDLE, useExisting: FRotateHandleDirective } ],\n// })\nexport class FRotateHandleDirective implements IHasHostElement {\n\n private isDisabled: boolean = false;\n // @Input('fRotateHandleDisabled')\n // public set disabled(isDisabled: boolean | undefined | string) {\n // this.isDisabled = BooleanExtensions.castToBoolean(isDisabled);\n // }\n public get disabled(): boolean {\n return this.isDisabled;\n }\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>\n ) {\n }\n}\n","import { AbstractConstructor, Constructor } from '../constructor';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { ICanChangeSelection } from './i-can-change-selection';\n\nexport const F_SELECTED_CLASS = 'f-selected';\n\ntype CanChangeSelectionConstructor = Constructor<ICanChangeSelection> & AbstractConstructor<ICanChangeSelection>;\n\nexport function mixinChangeSelection<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeSelectionConstructor & T;\nexport function mixinChangeSelection<T extends Constructor<IHasHostElement>>(base: T): CanChangeSelectionConstructor & T {\n return class extends base {\n\n public fId: string = '';\n\n public fSelectionDisabled: boolean = false;\n\n public deselect(): void {\n this.deselectChild?.();\n this.hostElement.classList.remove(F_SELECTED_CLASS);\n }\n\n public select(): void {\n this.selectChild?.();\n if (!this.isSelected()) {\n this.hostElement.classList.add(F_SELECTED_CLASS);\n }\n }\n\n public isSelected(): boolean {\n return this.hostElement.classList.contains(F_SELECTED_CLASS);\n }\n\n public selectChild(): void {\n }\n\n public deselectChild(): void {\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { ICanChangeVisibility } from './i-can-change-visibility';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport { AbstractConstructor, Constructor } from '../constructor';\n\ntype CanChangeVisibilityConstructor = Constructor<ICanChangeVisibility> & AbstractConstructor<ICanChangeVisibility>;\n\nexport function mixinChangeVisibility<T extends AbstractConstructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T;\nexport function mixinChangeVisibility<T extends Constructor<IHasHostElement>>(base: T): CanChangeVisibilityConstructor & T {\n return class extends base {\n\n public show(): void {\n this.hostElement.style.display = \"unset\";\n }\n\n public hide(): void {\n this.hostElement.style.display = \"none\";\n }\n\n constructor(...args: any[]) {\n super(...args);\n }\n };\n}\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport { IHasStateChanges } from '../i-has-state-changes';\nimport { FConnectorBase } from '../f-connectors';\nimport { IHasHostElement } from '../i-has-host-element';\nimport { ICanChangeSelection, mixinChangeSelection } from '../mixins';\n\nexport const F_NODE = new InjectionToken<FNodeBase>('F_NODE');\n\nconst MIXIN_BASE = mixinChangeSelection(\n class {\n constructor(\n public hostElement: HTMLElement\n ) {\n }\n });\n\nexport abstract class FNodeBase extends MIXIN_BASE implements IHasStateChanges, ICanChangeSelection, IHasHostElement {\n\n public abstract override fId: string;\n\n public abstract fParentId: string | null | undefined;\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n\n public abstract positionChange: EventEmitter<IPoint>;\n\n public abstract position: IPoint;\n\n protected _position: IPoint = PointExtensions.initialize();\n\n\n public abstract sizeChange: EventEmitter<IRect>;\n\n public abstract size: ISize;\n\n protected _size: ISize | undefined;\n\n\n public abstract fDraggingDisabled: boolean;\n\n public abstract override fSelectionDisabled: boolean;\n\n public abstract fConnectOnNode: boolean;\n\n public fCanBeResizedByChild: boolean = true;\n\n public abstract fIncludePadding: boolean;\n\n public abstract refresh(): void;\n\n public abstract connectors: FConnectorBase[];\n\n public abstract addConnector(connector: FConnectorBase): void;\n\n public abstract removeConnector(connector: FConnectorBase): void;\n\n protected abstract setStyle(name: string, value: string): void;\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public redraw(): void {\n if (this.size) {\n this.setStyle('width', '' + this.size.width + 'px');\n this.setStyle('height', '' + this.size.height + 'px');\n }\n\n this.setStyle('transform', `translate(${ this.position.x }px,${ this.position.y }px)`);\n }\n\n public updatePosition(position: IPoint): void {\n this._position = position;\n }\n\n public updateSize(value: ISize): void {\n this._size = value;\n }\n}\n","import { Observable } from 'rxjs';\n\nexport class FResizeObserver extends Observable<ResizeObserverEntry[]> {\n\n constructor(element: HTMLElement) {\n super(subscriber => {\n const observer = new ResizeObserver(entries => {\n subscriber.next(entries);\n });\n\n observer.observe(element);\n\n return function unsubscribe() {\n observer.unobserve(element);\n observer.disconnect();\n }\n });\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { merge, Subscription } from 'rxjs';\nimport { startWith, debounceTime } from 'rxjs/operators';\nimport { FResizeObserver } from './f-resize-observer';\nimport { FComponentsStore } from '../f-storage';\nimport {\n CalculateConnectorConnectableSideHandler,\n CalculateConnectorConnectableSideRequest,\n FConnectorBase\n} from '../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { EmitTransformChangesRequest } from '../domain';\nimport { BrowserService } from '@foblex/platform';\nimport { IHasHostElement } from '../i-has-host-element';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fGroup]\",\n exportAs: \"fComponent\",\n host: {\n '[attr.data-f-group-id]': 'fId',\n class: \"f-group f-component\",\n '[class.f-group-dragging-disabled]': 'fDraggingDisabled',\n '[class.f-group-selection-disabled]': 'fSelectionDisabled',\n },\n providers: [\n { provide: F_NODE, useExisting: FGroupDirective }\n ],\n})\nexport class FGroupDirective extends FNodeBase\n implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input('fGroupId')\n public override fId: string = `f-group-${ uniqueId++ }`;\n\n @Input('fGroupParentId')\n public override fParentId: string | null | undefined = null;\n\n @Input('fGroupPosition')\n public override set position(value: IPoint) {\n this._position = PointExtensions.castToPoint(value);\n this.refresh();\n }\n public override get position(): IPoint {\n return this._position;\n }\n @Output('fGroupPositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n @Input('fGroupSize')\n public override set size(value: ISize) {\n this._size = value;\n this.refresh();\n }\n public override get size(): ISize {\n return this._size!;\n }\n @Output('fGroupSizeChange')\n public override sizeChange: EventEmitter<IRect> = new EventEmitter<IRect>();\n\n @Input('fGroupDraggingDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input('fGroupSelectionDisabled')\n public override fSelectionDisabled: boolean = false;\n\n @Input()\n public override fIncludePadding: boolean = true;\n\n @Input()\n public override fConnectOnNode: boolean = true;\n\n public override connectors: FConnectorBase[] = [];\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n super(elementReference.nativeElement);\n }\n\n public ngOnInit(): void {\n this.setStyle('position', 'absolute');\n this.setStyle('transform-origin', 'center');\n this.setStyle('user-select', 'none');\n this.setStyle('pointer-events', 'all');\n this.setStyle('left', '0');\n this.setStyle('top', '0');\n super.redraw();\n this.fComponentsStore.addComponent(this.fComponentsStore.fNodes, this);\n }\n\n protected override setStyle(styleName: string, value: string) {\n this.renderer.setStyle(this.hostElement, styleName, value);\n }\n\n public override redraw(): void {\n super.redraw();\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n return merge(new FResizeObserver(this.hostElement as HTMLElement), this.stateChanges).pipe(\n debounceTime(10), startWith(null)\n ).subscribe(() => {\n this.connectors.forEach((fConnector: FConnectorBase) => {\n fConnector.fConnectableSide = new CalculateConnectorConnectableSideHandler().handle(\n new CalculateConnectorConnectableSideRequest(fConnector, this.hostElement)\n );\n });\n this.fComponentsStore.componentDataChanged();\n });\n }\n\n public override addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.stateChanges.next();\n }\n\n public override removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.stateChanges.next();\n }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fNodes, this);\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from \"@angular/core\";\nimport { IPoint, IRect, ISize, PointExtensions } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\nimport { merge, Subscription } from 'rxjs';\nimport { startWith, debounceTime } from 'rxjs/operators';\nimport { FResizeObserver } from './f-resize-observer';\nimport { FComponentsStore } from '../f-storage';\nimport {\n CalculateConnectorConnectableSideHandler,\n CalculateConnectorConnectableSideRequest,\n FConnectorBase\n} from '../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { EmitTransformChangesRequest } from '../domain';\nimport { F_NODE, FNodeBase } from './f-node-base';\nimport { IHasHostElement } from '../i-has-host-element';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNode]\",\n exportAs: \"fComponent\",\n host: {\n '[attr.data-f-node-id]': 'fId',\n class: \"f-node f-component\",\n '[class.f-node-dragging-disabled]': 'fDraggingDisabled',\n '[class.f-node-selection-disabled]': 'fSelectionDisabled',\n },\n providers: [\n { provide: F_NODE, useExisting: FNodeDirective }\n ],\n})\nexport class FNodeDirective extends FNodeBase implements OnInit, AfterViewInit, IHasHostElement, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input('fNodeId')\n public override fId: string = `f-node-${ uniqueId++ }`;\n\n @Input('fNodeParentId')\n public override fParentId: string | null | undefined = null;\n\n @Input('fNodePosition')\n public override set position(value: IPoint) {\n this._position = PointExtensions.castToPoint(value);\n this.refresh();\n }\n\n public override get position(): IPoint {\n return this._position;\n }\n\n @Output('fNodePositionChange')\n public override positionChange: EventEmitter<IPoint> = new EventEmitter<IPoint>();\n\n @Input('fNodeSize')\n public override set size(value: ISize) {\n this._size = value;\n this.refresh();\n }\n\n public override get size(): ISize {\n return this._size!;\n }\n\n @Output('fNodeSizeChange')\n public override sizeChange: EventEmitter<IRect> = new EventEmitter<IRect>();\n\n @Input('fNodeDraggingDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input('fNodeSelectionDisabled')\n public override fSelectionDisabled: boolean = false;\n\n @Input()\n public override fIncludePadding: boolean = true;\n\n //TODO: Add ability to connect to first connectable input if node is under pointer\n @Input()\n public override fConnectOnNode: boolean = true;\n\n public override connectors: FConnectorBase[] = [];\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n super(elementReference.nativeElement);\n }\n\n public ngOnInit(): void {\n this.setStyle('position', 'absolute');\n this.setStyle('transform-origin', 'center');\n this.setStyle('user-select', 'none');\n this.setStyle('pointer-events', 'all');\n this.setStyle('left', '0');\n this.setStyle('top', '0');\n super.redraw();\n this.fComponentsStore.addComponent(this.fComponentsStore.fNodes, this);\n }\n\n protected override setStyle(styleName: string, value: string) {\n this.renderer.setStyle(this.hostElement, styleName, value);\n }\n\n public override redraw(): void {\n super.redraw();\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public ngAfterViewInit(): void {\n if(!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscriptions$.add(\n this.subscribeOnResizeChanges()\n );\n }\n\n private subscribeOnResizeChanges(): Subscription {\n return merge(new FResizeObserver(this.hostElement as HTMLElement), this.stateChanges).pipe(\n debounceTime(10), startWith(null)\n ).subscribe(() => {\n this.connectors.forEach((fConnector: FConnectorBase) => {\n fConnector.fConnectableSide = new CalculateConnectorConnectableSideHandler().handle(\n new CalculateConnectorConnectableSideRequest(fConnector, this.hostElement)\n );\n });\n this.fComponentsStore.componentDataChanged();\n });\n }\n\n public override addConnector(connector: FConnectorBase): void {\n this.connectors.push(connector);\n this.stateChanges.next();\n }\n\n public override removeConnector(connector: FConnectorBase): void {\n const index = this.connectors.indexOf(connector);\n if (index !== -1) {\n this.connectors.splice(index, 1);\n }\n this.stateChanges.next();\n }\n\n public refresh(): void {\n this.stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fNodes, this);\n this.stateChanges.complete();\n this.subscriptions$.unsubscribe();\n }\n}\n","import { FNodeDirective } from './f-node.directive';\nimport { FDragHandleDirective } from './f-drag-handle';\nimport { FResizeHandleDirective } from './f-resize-handle';\nimport { FGroupDirective } from './f-group.directive';\n\nexport const F_NODE_PROVIDERS = [\n\n FGroupDirective,\n\n FNodeDirective,\n\n FDragHandleDirective,\n\n FResizeHandleDirective,\n];\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { F_NODE_INPUT, FNodeInputBase } from './f-node-input-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { FNodeBase, F_NODE } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\nimport { castToBoolean, castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeInput]\",\n exportAs: 'fNodeInput',\n host: {\n '[attr.data-f-input-id]': 'id',\n class: \"f-component f-node-input\",\n '[class.f-node-input-multiple]': 'multiple',\n '[class.f-node-input-disabled]': 'disabled',\n '[class.f-node-input-not-connectable]': '!canBeConnected',\n },\n providers: [ { provide: F_NODE_INPUT, useExisting: FNodeInputDirective } ],\n})\nexport class FNodeInputDirective extends FNodeInputBase implements OnInit, OnDestroy {\n\n @Input('fInputId')\n public override id: any = `f-node-input-${ uniqueId++ }`;\n\n @Input('fInputMultiple')\n public override multiple: boolean = true;\n\n @Input('fInputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n @Input('fInputConnectableSide')\n public set _fSide(value: EFConnectableSide | string) {\n this._fConnectableSide = castToEnum(value, 'fInputConnectableSide', EFConnectableSide);\n this.fNode.refresh();\n }\n\n public get _fSide(): EFConnectableSide {\n return this._fConnectableSide;\n }\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override isConnected: boolean = false;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n this.fComponentsStore.addComponent(this.fComponentsStore.fInputs, this);\n this.fNode.addConnector(this);\n }\n\n public override setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n this.hostElement.classList.toggle('f-node-input-connected', isConnected);\n }\n\n public ngOnDestroy(): void {\n this.fNode.removeConnector(this);\n this.fComponentsStore.removeComponent(this.fComponentsStore.fInputs, this);\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_OUTLET = new InjectionToken<FNodeOutletBase>('F_NODE_OUTLET');\n\n@Directive()\nexport abstract class FNodeOutletBase extends FConnectorBase {\n\n public abstract isConnectionFromOutlet: boolean;\n\n public override isConnected: boolean = false;\n\n private outputs: FConnectorBase[] = [];\n\n public get canBeConnected(): boolean {\n return !this.disabled && this.outputs.some((output) => output.canBeConnected);\n }\n\n public setOutputs(outputs: FConnectorBase[]): void {\n this.outputs = outputs;\n }\n}\n","export function isNodeOutlet(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutlet]');\n}\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { F_NODE_OUTLET, FNodeOutletBase } from './f-node-outlet-base';\nimport { F_NODE, FNodeBase } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { castToBoolean } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutlet]\",\n exportAs: 'fNodeOutlet',\n host: {\n '[attr.data-f-outlet-id]': 'id',\n class: \"f-component f-node-outlet\",\n '[class.f-node-outlet-disabled]': 'disabled'\n },\n providers: [ { provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective } ],\n})\nexport class FNodeOutletDirective extends FNodeOutletBase implements OnInit, OnDestroy {\n\n @Input('fOutletId')\n public override id: string = `f-node-outlet-${ uniqueId++ }`;\n\n @Input('fOutletDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n public override fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n @Input()\n public override isConnectionFromOutlet: boolean = false\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n if (!this.fNode) {\n throw new Error('fNodeOutlet must be inside fNode Directive');\n }\n this.fComponentsStore.addComponent(this.fComponentsStore.fOutlets, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fOutlets, this);\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { FConnectorBase } from '../f-connector-base';\n\nexport const F_NODE_OUTPUT = new InjectionToken<FNodeOutputBase>('F_NODE_OUTPUT');\n\n@Directive()\nexport abstract class FNodeOutputBase extends FConnectorBase {\n\n public abstract multiple: boolean;\n\n public isConnected: boolean = false;\n\n public override get canBeConnected(): boolean {\n return !this.disabled && (this.multiple ? true : !this.isConnected);\n }\n}\n","export function isNodeOutput(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fNodeOutput]');\n}\n","import { Directive, ElementRef, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FNodeOutputBase, F_NODE_OUTPUT } from './f-node-output-base';\nimport { EFConnectableSide } from '../e-f-connectable-side';\nimport { F_NODE, FNodeBase } from '../../f-node';\nimport { FComponentsStore } from '../../f-storage';\nimport { castToBoolean, castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fNodeOutput]\",\n exportAs: 'fNodeOutput',\n host: {\n '[attr.data-f-output-id]': 'id',\n class: \"f-component f-node-output\",\n '[class.f-node-output-multiple]': 'multiple',\n '[class.f-node-output-disabled]': 'disabled',\n '[class.f-node-output-not-connectable]': '!canBeConnected',\n '[class.f-node-output-self-connectable]': 'isSelfConnectable',\n },\n providers: [ { provide: F_NODE_OUTPUT, useExisting: FNodeOutputDirective } ],\n})\nexport class FNodeOutputDirective extends FNodeOutputBase implements OnInit, OnDestroy {\n\n @Input('fOutputId')\n public override id: string = `f-node-output-${ uniqueId++ }`;\n\n @Input('fOutputMultiple')\n public override multiple: boolean = false;\n\n @Input('fOutputDisabled')\n public override get disabled(): boolean {\n return this.isDisabled;\n }\n\n public override set disabled(isDisabled: boolean | undefined | string) {\n const value = castToBoolean(isDisabled);\n if (value !== this.isDisabled) {\n this.isDisabled = value;\n this.stateChanges.next();\n }\n }\n\n private isDisabled: boolean = false;\n\n @Input('fOutputConnectableSide')\n public set _fSide(value: EFConnectableSide | string) {\n this._fConnectableSide = castToEnum(value, 'fOutputConnectableSide', EFConnectableSide);\n this.fNode.refresh();\n }\n\n public get _fSide(): EFConnectableSide {\n return this._fConnectableSide;\n }\n\n public override _fConnectableSide: EFConnectableSide = EFConnectableSide.AUTO;\n\n public override isConnected: boolean = false;\n\n @Input()\n public override isSelfConnectable: boolean = true;\n\n public get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n @Inject(F_NODE) private fNode: FNodeBase,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n if (!this.fNode) {\n throw new Error('fNodeOutput must be inside fNode Directive');\n }\n this.fComponentsStore.addComponent(this.fComponentsStore.fOutputs, this);\n this.fNode.addConnector(this);\n }\n\n public override setConnected(isConnected: boolean): void {\n this.isConnected = isConnected;\n this.hostElement.classList.toggle('f-node-output-connected', isConnected);\n }\n\n public ngOnDestroy(): void {\n this.fNode.removeConnector(this);\n this.fComponentsStore.removeComponent(this.fComponentsStore.fOutputs, this);\n }\n}\n","import { FNodeInputDirective } from './f-node-input';\nimport { FNodeOutletDirective } from './f-node-outlet';\nimport { FNodeOutputDirective } from './f-node-output';\n\nexport const F_CONNECTORS_PROVIDERS = [\n\n FNodeInputDirective,\n\n FNodeOutletDirective,\n\n FNodeOutputDirective\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export function createErrorClass<T>(impl: (_super: any) => any): T {\n const _super = (instance: any) => {\n Error.call(instance);\n };\n\n const constructor = impl(_super);\n constructor.prototype = Object.create(Error.prototype);\n constructor.prototype.constructor = constructor;\n return constructor;\n}\n","import { createErrorClass } from './create-error-class';\n\nexport interface NotFoundError extends Error {\n}\n\nexport interface NotFoundCtor {\n\n new(message?: string): NotFoundError;\n}\n\nexport const NotFoundError: NotFoundCtor = createErrorClass(\n (_super) =>\n function error(this: any, message: string) {\n _super(this);\n this.message = message || 'The requested resource was not found.';\n this.code = 404;\n }\n);\n","import { createErrorClass } from './create-error-class';\n\nexport interface ConflictError extends Error {\n}\n\nexport interface ConflictErrorCtor {\n\n new(message?: string): ConflictError;\n}\n\nexport const ConflictError: ConflictErrorCtor = createErrorClass(\n (_super) =>\n function error(this: any, message: string) {\n _super(this);\n this.message = message || 'Conflict error occurred.';\n this.code = 409;\n }\n);\n","import { NotFoundError } from './not-found-error';\nimport { ConflictError } from './conflict-error';\n\nexport function OutputNotFound(id: string): Error {\n return new NotFoundError(`Output with fOutputId ${ id } not found. Make sure there is no f-connection to a non-existent fOutput.`);\n}\n\nexport function InputNotFound(id: string): Error {\n return new NotFoundError(`Input with fInputId ${ id } not found. Make sure there is no f-connection to a non-existent fInput.`);\n}\n\nexport function RequiredOutput(): Error {\n return new ConflictError(`The fNode must contain at least one fOutput if there is an fOutlet`);\n}\n","import { FNodeOutletBase } from '../../../../f-connectors';\n\nexport class GetCanBeConnectedOutputByOutletRequest {\n\n constructor(\n public outlet: FNodeOutletBase\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { GetCanBeConnectedOutputByOutletRequest } from './get-can-be-connected-output-by-outlet.request';\nimport { RequiredOutput } from '../../../../errors';\nimport { FExecutionRegister } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetCanBeConnectedOutputByOutletRequest)\nexport class GetCanBeConnectedOutputByOutletExecution\n implements IHandler<GetCanBeConnectedOutputByOutletRequest, FConnectorBase | undefined> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fOutputs(): FConnectorBase[] {\n return this.fComponentsStore.fOutputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetCanBeConnectedOutputByOutletRequest): FConnectorBase | undefined {\n const outputs = this.getConnectableOutputs(this.getNode(request.outlet));\n if (!outputs.length) {\n throw RequiredOutput();\n }\n return outputs.length > 0 ? outputs[ 0 ] : undefined;\n }\n\n private getConnectableOutputs(node: FNodeBase): FConnectorBase[] {\n return this.fOutputs.filter((x) => {\n return node.isContains(x.hostElement) && x.canBeConnected;\n });\n }\n\n private getNode(outlet: FNodeOutletBase): FNodeBase {\n return this.fNodes.find((x) => x.isContains(outlet.hostElement))!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetCanBeConnectedOutputByOutletRequest } from './get-can-be-connected-output-by-outlet.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../f-node';\nimport { FComponentsStore } from '../../../../f-storage';\n\n@Injectable()\n@FValidatorRegister(GetCanBeConnectedOutputByOutletRequest)\nexport class GetCanBeConnectedOutputByOutletValidator implements IValidator<GetCanBeConnectedOutputByOutletRequest> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetCanBeConnectedOutputByOutletRequest): boolean {\n return !!this.fNodes.find((x) => x.isContains(request.outlet.hostElement));\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class FCreateConnectionEvent {\n\n constructor(\n public fOutputId: string,\n public fInputId: string | undefined,\n public fDropPosition: IPoint,\n ) {\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\n\nexport class GetInputUnderPointerRequest {\n\n constructor(\n public event: IPointerEvent,\n public dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler\n ) {\n }\n}\n","import { IPoint, Point } from '@foblex/2d';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { Injectable } from '@angular/core';\nimport { BrowserService } from '@foblex/platform';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\n\n\n@Injectable()\n@FExecutionRegister(GetInputUnderPointerRequest)\nexport class GetInputUnderPointerExecution\n implements IExecution<GetInputUnderPointerRequest, FConnectorBase | undefined> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fInputs(): FConnectorBase[] {\n return this.fComponentsStore.fInputs;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(payload: GetInputUnderPointerRequest): FConnectorBase | undefined {\n const output = (this.getOutput(payload.dragHandler) || this.getOutlet(payload.dragHandler))!;\n const inputsUnderPointer = this.getInputsUnderPointer(payload.event.getPosition(), payload.dragHandler);\n\n const connectors = output.isSelfConnectable ?\n inputsUnderPointer :\n this.filterSelfConnectable(inputsUnderPointer, output);\n return connectors.length > 0 ? connectors[0] : undefined;\n }\n\n private getOutput(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n\n private getInputsUnderPointer(position: IPoint, dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase[] {\n const result = this.getInputsInPosition(position);\n const closestInput = dragHandler.getClosetInput(this.getDifference(position));\n if (closestInput) {\n result.push(closestInput.fConnector);\n }\n const input = this.getFirstConnectableInputOfNodeInPosition(position);\n if (input) {\n result.push(input);\n }\n return result;\n }\n\n private getDifference(position: IPoint): IPoint {\n return Point.fromPoint(position).elementTransform(this.fComponentsStore.flowHost)\n .div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n }\n\n private getInputsInPosition(position: IPoint): FConnectorBase[] {\n return this.getElementsFromPoint(position).map((element) =>\n this.fInputs.find(x => x.isContains(element) && x.canBeConnected)\n ).filter((x) => !!x) as FConnectorBase[];\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n private getFirstConnectableInputOfNodeInPosition(position: IPoint): FConnectorBase | undefined {\n return this.getNodesInPosition(position).map((x) => {\n return this.fInputs.find((i) => x.isContains(i.hostElement) && i.canBeConnected);\n }).find((x) => !!x);\n }\n\n private getNodesInPosition(position: IPoint): FNodeBase[] {\n return this.getElementsFromPoint(position).map((element) => {\n return this.fNodes.find((x) => x.isContains(element) && x.fConnectOnNode)\n }).filter((x) => !!x) as FNodeBase[];\n }\n\n private filterSelfConnectable(inputs: FConnectorBase[], connector: FConnectorBase): FConnectorBase[] {\n return inputs.filter((x) => {\n const targetNode = this.fNodes.find((k) => k.isContains(x.hostElement));\n const sourceNode = this.fNodes.find((k) => k.isContains(connector!.hostElement));\n return sourceNode?.hostElement !== targetNode?.hostElement;\n })\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetInputUnderPointerRequest } from './get-input-under-pointer.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { OutputNotFound } from '../../../errors';\nimport { CreateConnectionDragHandler } from '../create-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection';\nimport { FConnectorBase } from '../../../f-connectors';\n\n@Injectable()\n@FValidatorRegister(GetInputUnderPointerRequest)\nexport class GetInputUnderPointerValidator implements IValidator<GetInputUnderPointerRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetInputUnderPointerRequest): boolean {\n let output = this.getOutput(request.dragHandler) || this.getOutlet(request.dragHandler);\n if (!output) {\n throw OutputNotFound(request.dragHandler.fConnection.fOutputId);\n }\n return true;\n }\n\n private getOutput(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(dragHandler: CreateConnectionDragHandler | ReassignConnectionDragHandler): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === dragHandler.fConnection.fOutputId);\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase, isNodeOutlet } from '../../../../f-connectors';\nimport { CreateConnectionFinalizeRequest } from './create-connection-finalize.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { OutputNotFound } from '../../../../errors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../get-can-be-connected-output-by-outlet';\nimport { FCreateConnectionEvent } from '../f-create-connection.event';\nimport { CreateConnectionDragHandler } from '../create-connection.drag-handler';\nimport { GetInputUnderPointerRequest } from '../../get-input-under-pointer';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFinalizeRequest)\nexport class CreateConnectionFinalizeExecution\n implements IHandler<CreateConnectionFinalizeRequest, void> {\n\n private get dragHandler(): CreateConnectionDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as CreateConnectionDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFinalizeRequest): void {\n this.emitEvent(request.event);\n this.dragHandler.complete();\n }\n\n private getTargetOutput(output: FConnectorBase | undefined): FConnectorBase {\n if (!output) {\n throw OutputNotFound(this.dragHandler.fConnection.fOutputId);\n }\n return isNodeOutlet(output.hostElement) ? this.fMediator.send<FNodeOutputBase>(\n new GetCanBeConnectedOutputByOutletRequest(output as FNodeOutletBase)\n ) : output;\n }\n\n private getOutput(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutputs.find((x) => x.id === this.dragHandler.fConnection.fOutputId);\n }\n\n private getOutlet(): FConnectorBase | undefined {\n return this.fComponentsStore.fOutlets.find((x) => x.id === this.dragHandler.fConnection.fOutputId);\n }\n\n private emitEvent(event: IPointerEvent): void {\n this.fComponentsStore.fDraggable?.fCreateConnection.emit(\n new FCreateConnectionEvent(\n this.getTargetOutput(this.getOutput() || this.getOutlet()).id,\n this.getInputUnderPointer(event)?.id,\n event.getPosition()\n )\n );\n }\n\n private getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this.fMediator.send<FConnectorBase | undefined>(new GetInputUnderPointerRequest(event, this.dragHandler));\n }\n}\n","import { IDraggableItem } from '../../i-draggable-item';\nimport {\n FindClosestInputUsingSnapThresholdRequest,\n GetAllCanBeConnectedInputPositionsRequest,\n GetConnectionLineRequest,\n GetConnectorWithRectRequest,\n IConnectorWithRect\n} from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport { EFConnectableSide, FConnectorBase } from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { RoundedRect, ILine, IPoint, PointExtensions, RectExtensions, Point, } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\nexport class CreateConnectionDragHandler implements IDraggableItem {\n\n private toConnectorRect: RoundedRect = new RoundedRect();\n\n public get fConnection(): FConnectionBase {\n return this.fComponentsStore.fTempConnection!;\n }\n\n private get fSnapConnection(): FSnapConnectionComponent | undefined {\n return this.fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private fOutputWithRect!: IConnectorWithRect;\n\n private canBeConnectedInputs: IConnectorWithRect[] = [];\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n private fOutput: FConnectorBase,\n private onPointerDownPosition: IPoint,\n ) {\n }\n\n public initialize(): void {\n if (this.fSnapConnection) {\n this.fSnapConnection.fOutputId = this.fOutput.id;\n this.fSnapConnection.initialize();\n this.canBeConnectedInputs = this.fMediator.send<IConnectorWithRect[]>(\n new GetAllCanBeConnectedInputPositionsRequest(this.fOutput.id)\n );\n }\n this.fConnection.fOutputId = this.fOutput.id;\n this.fConnection.initialize();\n\n\n this.fOutputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.fOutput));\n\n this.toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.onPointerDownPosition.x, this.onPointerDownPosition.y)\n );\n\n this.fConnection.show();\n this.move(PointExtensions.initialize());\n }\n\n public move(difference: IPoint): void {\n this.drawTempConnection(this.toConnectorRect.addPoint(difference));\n if (this.fSnapConnection) {\n this.drawSnapConnection(this.getClosetInput(difference));\n }\n }\n\n private drawTempConnection(fInputRect: RoundedRect): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputRect,\n this.fConnection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n EFConnectableSide.TOP,\n )\n );\n\n this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, EFConnectableSide.TOP);\n this.fConnection.redraw();\n }\n\n private drawSnapConnection(fInputWithRect: IConnectorWithRect | undefined): void {\n if (fInputWithRect) {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputWithRect.fRect,\n this.fSnapConnection!.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fInputWithRect.fConnector.fConnectableSide\n )\n );\n this.fSnapConnection!.show();\n this.fSnapConnection!.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);\n this.fSnapConnection!.redraw();\n } else {\n this.fSnapConnection?.hide();\n }\n }\n\n public getClosetInput(difference: IPoint): IConnectorWithRect | undefined {\n if (!this.fSnapConnection) {\n return undefined;\n }\n return this.fMediator.send<IConnectorWithRect | undefined>(\n new FindClosestInputUsingSnapThresholdRequest(\n Point.fromPoint(this.toConnectorRect).add(difference),\n this.canBeConnectedInputs,\n this.fSnapConnection!.fSnapThreshold\n )\n );\n }\n\n public complete(): void {\n this.fConnection.redraw();\n this.fConnection.hide();\n this.fSnapConnection?.hide();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionFinalizeRequest } from './create-connection-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../create-connection.drag-handler';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionFinalizeRequest)\nexport class CreateConnectionFinalizeValidator implements IValidator<CreateConnectionFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CreateConnectionFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof CreateConnectionDragHandler\n );\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { FConnectorBase } from '../../../../../f-connectors';\n\nexport class CreateConnectionDragHandlerRequest {\n\n constructor(\n public onPointerDownPosition: IPoint,\n public connector: FConnectorBase\n ) {\n }\n}\n","import { ITransformModel, Point } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionDragHandlerRequest } from './create-connection-drag-handler.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../../f-draggable-data-context';\nimport { CreateConnectionDragHandler } from '../../create-connection.drag-handler';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionDragHandlerRequest)\nexport class CreateConnectionDragHandlerExecution\n implements IHandler<CreateConnectionDragHandlerRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionDragHandlerRequest): void {\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n const positionRelativeToFlowComponent = Point.fromPoint(request.onPointerDownPosition)\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.onPointerDownPosition = positionRelativeToFlowComponent;\n\n const positionRelativeToCanvasComponent = Point.fromPoint(positionRelativeToFlowComponent).mult(this.transform.scale)\n .sub(this.transform.position).sub(this.transform.scaledPosition).div(this.transform.scale);\n\n this.fDraggableDataContext.draggableItems = [\n new CreateConnectionDragHandler(this.fMediator, this.fComponentsStore, request.connector, positionRelativeToCanvasComponent)\n ];\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFromOutletPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutletPreparationRequest } from './create-connection-from-outlet-preparation.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { FConnectorBase, FNodeOutletBase, FNodeOutputBase } from '../../../../../f-connectors';\nimport { GetCanBeConnectedOutputByOutletRequest } from '../../get-can-be-connected-output-by-outlet';\nimport { RequiredOutput } from '../../../../../errors';\nimport { CreateConnectionDragHandlerRequest } from '../create-connection-drag-handler';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFromOutletPreparationRequest)\nexport class CreateConnectionFromOutletPreparationExecution\n implements IHandler<CreateConnectionFromOutletPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFromOutletPreparationRequest): void {\n const { event } = request;\n const node = this.fComponentsStore.findNode(event.targetElement)!;\n\n const outlet = this.fComponentsStore.fOutlets.find((x) => {\n return x.hostElement.contains(event.targetElement);\n });\n if (!outlet) {\n throw new Error('Outlet not found');\n }\n const nodeOutputs = this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n (outlet as FNodeOutletBase).setOutputs(nodeOutputs);\n\n if (outlet.canBeConnected) {\n\n if ((outlet as FNodeOutletBase).isConnectionFromOutlet) {\n\n this.createDragHandler(event.getPosition(), outlet);\n } else {\n const output = this.fMediator.send<FNodeOutputBase>(\n new GetCanBeConnectedOutputByOutletRequest(outlet as FNodeOutletBase)\n );\n if (!output) {\n throw RequiredOutput();\n }\n this.createDragHandler(event.getPosition(), output);\n }\n }\n }\n\n private createDragHandler(position: IPoint, output: FConnectorBase): void {\n this.fMediator.send(new CreateConnectionDragHandlerRequest(position, output));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionFromOutputPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation.request';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { CreateConnectionDragHandlerRequest } from '../create-connection-drag-handler';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionFromOutputPreparationRequest)\nexport class CreateConnectionFromOutputPreparationExecution\n implements IHandler<CreateConnectionFromOutputPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionFromOutputPreparationRequest): void {\n const { event } = request;\n\n const output = this.fComponentsStore.fOutputs.find((x) => {\n return x.hostElement.contains(event.targetElement);\n });\n if (!output) {\n throw new Error('Output not found');\n }\n if (output.canBeConnected) {\n this.createDragHandler(event.getPosition(), output);\n }\n }\n\n private createDragHandler(position: IPoint, output: FConnectorBase): void {\n this.fMediator.send(new CreateConnectionDragHandlerRequest(position, output));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation.request';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FNodeBase } from '../../../../../f-node';\nimport { FConnectorBase, isNodeOutput } from '../../../../../f-connectors';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionFromOutputPreparationRequest)\nexport class CreateConnectionFromOutputPreparationValidator implements IValidator<CreateConnectionFromOutputPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: CreateConnectionFromOutputPreparationRequest): boolean {\n return this.isNodeOutput(request.event.targetElement, this.getNode(request.event));\n }\n\n private getNode(event: IPointerEvent): FNodeBase {\n return this.fComponentsStore.findNode(event.targetElement)!;\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n return isNodeOutput(targetElement) && !this.getOutlets(node).length;\n }\n\n private getOutlets(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class CreateConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FConnectorBase, isNodeOutlet, isNodeOutput } from '../../../../f-connectors';\nimport { FNodeBase } from '../../../../f-node';\nimport { CreateConnectionPreparationRequest } from './create-connection-preparation.request';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { CreateConnectionFromOutletPreparationRequest } from './create-connection-from-outlet-preparation';\nimport { CreateConnectionFromOutputPreparationRequest } from './create-connection-from-output-preparation';\n\n@Injectable()\n@FExecutionRegister(CreateConnectionPreparationRequest)\nexport class CreateConnectionPreparationExecution\n implements IHandler<CreateConnectionPreparationRequest, void> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: CreateConnectionPreparationRequest): void {\n if (isNodeOutlet(request.event.targetElement)) {\n this.fMediator.send<void>(new CreateConnectionFromOutletPreparationRequest(request.event));\n } else if (this.isNodeOutput(request.event.targetElement, this.getNode(request.event))) {\n this.fMediator.send<void>(new CreateConnectionFromOutputPreparationRequest(request.event));\n }\n }\n\n private getNode(event: IPointerEvent): FNodeBase {\n return this.fComponentsStore.findNode(event.targetElement)!;\n }\n\n private isNodeOutput(targetElement: HTMLElement, node: FNodeBase): boolean {\n return isNodeOutput(targetElement) && !this.getOutlets(node).length;\n }\n\n private getOutlets(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutlets.filter((x) => node.isContains(x.hostElement));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateConnectionPreparationRequest } from './create-connection-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../f-node';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\n\n@Injectable()\n@FValidatorRegister(CreateConnectionPreparationRequest)\nexport class CreateConnectionPreparationValidator implements IValidator<CreateConnectionPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: CreateConnectionPreparationRequest): boolean {\n return !!this.getNode(request.event) && this.isValidConditions();\n }\n\n private getNode(event: IPointerEvent): FNodeBase | undefined {\n return this.fComponentsStore.findNode(event.targetElement);\n }\n\n private isValidConditions(): boolean {\n return !this.fDraggableDataContext.draggableItems.length && !!this.fComponentsStore.fTempConnection;\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ReassignConnectionFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export class FReassignConnectionEvent {\n\n constructor(\n public fConnectionId: string,\n public fOutputId: string,\n public oldFInputId: string,\n public newFInputId: string | undefined\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionFinalizeRequest } from './reassign-connection-finalize.request';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\nimport { FDraggableBase } from '../../../f-draggable-base';\nimport { FReassignConnectionEvent } from '../f-reassign-connection.event';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FConnectorBase } from '../../../../f-connectors';\nimport { GetInputUnderPointerRequest } from '../../get-input-under-pointer';\n\n@Injectable()\n@FExecutionRegister(ReassignConnectionFinalizeRequest)\nexport class ReassignConnectionFinalizeExecution implements IExecution<ReassignConnectionFinalizeRequest, void> {\n\n private get fDraggable(): FDraggableBase {\n return this.fComponentsStore.fDraggable!;\n }\n\n private get dragHandler(): ReassignConnectionDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as ReassignConnectionDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: ReassignConnectionFinalizeRequest): void {\n this.emitEvent(request.event);\n this.dragHandler.complete();\n }\n\n private emitEvent(event: IPointerEvent): void {\n const input = this.getInputUnderPointer(event);\n if (\n !input || !this.isReassignToDifferentInput(input)\n ) {\n return;\n }\n this.fDraggable.fReassignConnection.emit(\n new FReassignConnectionEvent(\n this.dragHandler.fConnection.fId,\n this.dragHandler.fConnection.fOutputId,\n this.dragHandler.fConnection.fInputId,\n input.id\n )\n );\n }\n\n private getInputUnderPointer(event: IPointerEvent): FConnectorBase | undefined {\n return this.fMediator.send<FConnectorBase | undefined>(new GetInputUnderPointerRequest(event, this.dragHandler));\n }\n\n private isReassignToDifferentInput(inputsUnderPointer: FConnectorBase): boolean {\n return this.dragHandler.fConnection.fInputId !== inputsUnderPointer.id;\n }\n}\n","import { IDraggableItem } from '../../i-draggable-item';\nimport {\n FindClosestInputUsingSnapThresholdRequest,\n GetAllCanBeConnectedInputPositionsRequest,\n GetConnectionLineRequest, GetConnectorWithRectRequest,\n IConnectorWithRect\n} from '../../../domain';\nimport { FConnectionBase, FSnapConnectionComponent } from '../../../f-connection';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { ILine, IPoint, Point, RectExtensions, RoundedRect } from '@foblex/2d';\nimport { FComponentsStore } from '../../../f-storage';\n\nexport class ReassignConnectionDragHandler implements IDraggableItem {\n\n public toConnectorRect: RoundedRect = new RoundedRect();\n\n private get fSnapConnection(): FSnapConnectionComponent | undefined {\n return this.fComponentsStore.fSnapConnection as FSnapConnectionComponent;\n }\n\n private fOutputWithRect!: IConnectorWithRect;\n private fInputWithRect!: IConnectorWithRect;\n\n private canBeConnectedInputs: IConnectorWithRect[] = [];\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n public fConnection: FConnectionBase,\n ) {\n }\n\n public initialize(): void {\n if (this.fSnapConnection) {\n this.fSnapConnection.fOutputId = this.fConnection.fOutputId;\n this.fSnapConnection.initialize();\n this.canBeConnectedInputs = this.fMediator.send<IConnectorWithRect[]>(\n new GetAllCanBeConnectedInputPositionsRequest(this.fConnection.fOutputId)\n );\n }\n\n this.fOutputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getOutput()));\n this.fInputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getInput()));\n this.toConnectorRect = RoundedRect.fromRect(\n RectExtensions.initialize(this.fConnection.line.point2.x, this.fConnection.line.point2.y)\n );\n }\n\n private getOutput(): FConnectorBase {\n return this.fComponentsStore.fOutputs.find((x) => x.id === this.fConnection.fOutputId)!;\n }\n\n private getInput(): FConnectorBase {\n return this.fComponentsStore.fInputs.find((x) => x.id === this.fConnection.fInputId)!\n }\n\n public move(difference: IPoint): void {\n this.drawConnection({\n fRect: this.toConnectorRect.addPoint(difference),\n fConnector: this.fInputWithRect.fConnector\n });\n if (this.fSnapConnection) {\n this.drawSnapConnection(this.getClosetInput(difference));\n }\n }\n\n private drawConnection(fInputWithRect: IConnectorWithRect): void {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputWithRect.fRect,\n this.fConnection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fInputWithRect.fConnector.fConnectableSide\n )\n );\n\n this.fConnection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);\n this.fConnection.redraw();\n }\n\n private drawSnapConnection(fInputWithRect: IConnectorWithRect | undefined): void {\n if (fInputWithRect) {\n const line = this.fMediator.send<ILine>(new GetConnectionLineRequest(\n this.fOutputWithRect.fRect,\n fInputWithRect.fRect,\n this.fSnapConnection!.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n fInputWithRect.fConnector.fConnectableSide\n )\n );\n this.fSnapConnection!.show();\n this.fSnapConnection!.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, fInputWithRect.fConnector.fConnectableSide);\n this.fSnapConnection!.redraw();\n } else {\n this.fSnapConnection?.hide();\n }\n }\n\n public getClosetInput(difference: IPoint): IConnectorWithRect | undefined {\n if (!this.fSnapConnection) {\n return undefined;\n }\n return this.fMediator.send<IConnectorWithRect | undefined>(\n new FindClosestInputUsingSnapThresholdRequest(\n Point.fromPoint(this.toConnectorRect).add(difference),\n this.canBeConnectedInputs,\n this.fSnapConnection!.fSnapThreshold\n )\n );\n }\n\n public complete(): void {\n this.drawConnection(this.fInputWithRect);\n this.fSnapConnection?.hide();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionFinalizeRequest } from './reassign-connection-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\n\n@Injectable()\n@FValidatorRegister(ReassignConnectionFinalizeRequest)\nexport class ReassignConnectionFinalizeValidator implements IValidator<ReassignConnectionFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: ReassignConnectionFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ReassignConnectionDragHandler\n );\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ReassignConnectionPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { IPoint, PointExtensions } from '@foblex/2d';\nimport { CalculateCenterBetweenPointsRequest } from './calculate-center-between-points-request';\n\nexport class CalculateCenterBetweenPointsHandler\n implements IHandler<CalculateCenterBetweenPointsRequest, IPoint> {\n\n public handle(request: CalculateCenterBetweenPointsRequest): IPoint {\n const { source, target } = request;\n\n const offsetX = Math.abs(target.x - source.x) / 2;\n const centerX = (target.x < source.x) ? target.x + offsetX : target.x - offsetX;\n\n const offsetY = Math.abs(target.y - source.y) / 2;\n const centerY = (target.y < source.y) ? target.y + offsetY : target.y - offsetY;\n\n return PointExtensions.initialize(centerX, centerY);\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class CalculateCenterBetweenPointsRequest {\n\n constructor(\n public source: IPoint,\n public target: IPoint,\n ) {\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { IHandler } from '@foblex/mediator';\nimport { CalculateConnectionCenterRequest } from './calculate-connection-center-request';\n\nexport class CalculateConnectionCenterHandler\n implements IHandler<CalculateConnectionCenterRequest, IPoint> {\n\n public handle(request: CalculateConnectionCenterRequest): IPoint {\n\n const { points } = request;\n let totalDistance = 0;\n let distances: number[] = [];\n\n for (let i = 0; i < points.length - 1; i++) {\n const distance = this.calculateDistance(points[ i ], points[ i + 1 ]);\n distances.push(distance);\n totalDistance += distance;\n }\n\n let accumulatedDistance = 0;\n let centerIndex = 0;\n const halfTotalDistance = totalDistance / 2;\n for (let i = 0; i < distances.length; i++) {\n accumulatedDistance += distances[ i ];\n if (accumulatedDistance >= halfTotalDistance) {\n centerIndex = i;\n break;\n }\n }\n\n const remainingDistanceToCenter = halfTotalDistance - (accumulatedDistance - distances[ centerIndex ]);\n\n return this.findPointAtDistance(points[ centerIndex ], points[ centerIndex + 1 ], remainingDistanceToCenter);\n }\n\n private calculateDistance(pointA: IPoint, pointB: IPoint): number {\n return Math.sqrt(Math.pow(pointB.x - pointA.x, 2) + Math.pow(pointB.y - pointA.y, 2));\n }\n\n private findPointAtDistance(startPoint: IPoint, endPoint: IPoint, distance: number): IPoint {\n const totalDistance = this.calculateDistance(startPoint, endPoint);\n const ratio = distance / totalDistance;\n const x = (1 - ratio) * startPoint.x + ratio * endPoint.x;\n const y = (1 - ratio) * startPoint.y + ratio * endPoint.y;\n return { x, y };\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class CalculateConnectionCenterRequest {\n\n constructor(\n public points: IPoint[],\n ) {\n }\n}\n","import { IPoint } from '@foblex/2d';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\n\nexport class FBezierPathBuilder implements IFConnectionBuilder {\n\n private static getConnectorOffset(distance: number, offset: number): number {\n if (distance >= offset) {\n return distance;\n }\n return offset * Math.sqrt(offset - distance);\n }\n\n private static getAnglePoint(side: EFConnectableSide, source: IPoint, target: IPoint, offset: number): IPoint {\n\n let result: IPoint = { x: source.x, y: source.y };\n\n switch (side) {\n case EFConnectableSide.LEFT:\n result.x -= FBezierPathBuilder.getConnectorOffset(source.x - target.x, offset);\n break;\n case EFConnectableSide.RIGHT:\n result.x += FBezierPathBuilder.getConnectorOffset(target.x - source.x, offset);\n break;\n case EFConnectableSide.TOP:\n result.y -= FBezierPathBuilder.getConnectorOffset(source.y - target.y, offset);\n break;\n case EFConnectableSide.BOTTOM:\n result.y += FBezierPathBuilder.getConnectorOffset(target.y - source.y, offset);\n break;\n }\n\n return result;\n }\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, sourceSide, target, targetSide, offset } = request;\n\n const sourceAnglePoint = FBezierPathBuilder.getAnglePoint(sourceSide, source, target, offset);\n\n const targetAnglePoint = FBezierPathBuilder.getAnglePoint(targetSide, target, source, offset);\n\n const path = `M ${ source.x } ${ source.y } C ${ sourceAnglePoint.x } ${ sourceAnglePoint.y }, ${ targetAnglePoint.x } ${ targetAnglePoint.y }, ${ target.x + 0.0002 } ${ target.y + 0.0002 }`;\n\n const connectionCenter = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest([ source, sourceAnglePoint, targetAnglePoint, target ])\n );\n\n return { path, connectionCenter, penultimatePoint: targetAnglePoint };\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/2d';\nimport { EFConnectableSide } from '../../../f-connectors';\nimport {\n CalculateCenterBetweenPointsHandler,\n CalculateCenterBetweenPointsRequest\n} from './calculate-center-between-points';\nimport { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\nimport { IMap } from '../../../domain';\n\nconst CONNECTOR_SIDE_POINT: IMap<IPoint> = {\n\n [ EFConnectableSide.LEFT ]: PointExtensions.initialize(-1, 0),\n\n [ EFConnectableSide.RIGHT ]: PointExtensions.initialize(1, 0),\n\n [ EFConnectableSide.TOP ]: PointExtensions.initialize(0, -1),\n\n [ EFConnectableSide.BOTTOM ]: PointExtensions.initialize(0, 1),\n\n [ EFConnectableSide.AUTO ]: PointExtensions.initialize(0, 0),\n};\n\nexport class FSegmentPathBuilder implements IFConnectionBuilder {\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, sourceSide, target, targetSide } = request;\n\n const { points, center } = this.getPathPoints(\n source,\n sourceSide,\n target,\n targetSide,\n request.offset\n );\n\n const path = this.buildPath(points, request.radius);\n\n const penultimatePoint = points.length > 1 ? points[ points.length - 2 ] : source;\n\n return { path, connectionCenter: center, penultimatePoint };\n }\n\n private getPathPoints(\n source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide, offset: number\n ): { points: IPoint[], center: IPoint } {\n\n const sourceDirection = CONNECTOR_SIDE_POINT[ sourceSide ];\n const targetDirection = CONNECTOR_SIDE_POINT[ targetSide ];\n\n const sourceGap: IPoint = { x: source.x + sourceDirection.x * offset, y: source.y + sourceDirection.y * offset };\n const targetGap: IPoint = { x: target.x + targetDirection.x * offset, y: target.y + targetDirection.y * offset };\n\n const direction = this.getDirection(sourceGap, sourceSide, targetGap);\n const directionAccessor = direction.x !== 0 ? 'x' : 'y';\n const currentDirection = direction[ directionAccessor ];\n\n let points: IPoint[] = [];\n const sourceGapOffset = PointExtensions.initialize();\n const targetGapOffset = PointExtensions.initialize();\n\n const centerBetweenPoints = new CalculateCenterBetweenPointsHandler().handle(\n new CalculateCenterBetweenPointsRequest(source, target)\n );\n\n if (sourceDirection[ directionAccessor ] * targetDirection[ directionAccessor ] === -1) {\n const verticalSplit: IPoint[] = [\n { x: centerBetweenPoints.x, y: sourceGap.y },\n { x: centerBetweenPoints.x, y: targetGap.y },\n ];\n const horizontalSplit: IPoint[] = [\n { x: sourceGap.x, y: centerBetweenPoints.y },\n { x: targetGap.x, y: centerBetweenPoints.y },\n ];\n\n if (sourceDirection[ directionAccessor ] === currentDirection) {\n points = directionAccessor === 'x' ? verticalSplit : horizontalSplit;\n } else {\n points = directionAccessor === 'x' ? horizontalSplit : verticalSplit;\n }\n } else {\n const sourceTarget: IPoint[] = [ { x: sourceGap.x, y: targetGap.y } ];\n const targetSource: IPoint[] = [ { x: targetGap.x, y: sourceGap.y } ];\n\n if (directionAccessor === 'x') {\n points = sourceDirection.x === currentDirection ? targetSource : sourceTarget;\n } else {\n points = sourceDirection.y === currentDirection ? sourceTarget : targetSource;\n }\n\n if (sourceSide === targetSide) {\n const diff = Math.abs(source[ directionAccessor ] - target[ directionAccessor ]);\n\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDirection[ directionAccessor ] === currentDirection) {\n sourceGapOffset[ directionAccessor ] = (sourceGap[ directionAccessor ] > source[ directionAccessor ] ? -1 : 1) * gapOffset;\n } else {\n targetGapOffset[ directionAccessor ] = (targetGap[ directionAccessor ] > target[ directionAccessor ] ? -1 : 1) * gapOffset;\n }\n }\n }\n\n if (sourceSide !== targetSide) {\n const dirAccessorOpposite = directionAccessor === 'x' ? 'y' : 'x';\n const isSameDir = sourceDirection[ directionAccessor ] === targetDirection[ dirAccessorOpposite ];\n const sourceGtTargetOppo = sourceGap[ dirAccessorOpposite ] > targetGap[ dirAccessorOpposite ];\n const sourceLtTargetOppo = sourceGap[ dirAccessorOpposite ] < targetGap[ dirAccessorOpposite ];\n const flipSourceTarget =\n (sourceDirection[ directionAccessor ] === 1 &&\n ((!isSameDir && sourceGtTargetOppo) || (isSameDir && sourceLtTargetOppo))) ||\n (sourceDirection[ directionAccessor ] !== 1 &&\n ((!isSameDir && sourceLtTargetOppo) || (isSameDir && sourceGtTargetOppo)));\n\n if (flipSourceTarget) {\n points = directionAccessor === 'x' ? sourceTarget : targetSource;\n }\n }\n }\n\n const pathPoints = [\n source,\n { x: sourceGap.x + sourceGapOffset.x, y: sourceGap.y + sourceGapOffset.y },\n ...points,\n { x: targetGap.x + targetGapOffset.x, y: targetGap.y + targetGapOffset.y },\n target,\n ];\n\n const center = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest(pathPoints)\n );\n\n return { points: pathPoints, center: center };\n }\n\n private getDirection(source: IPoint, sourceSide: EFConnectableSide, target: IPoint): IPoint {\n if (sourceSide === EFConnectableSide.LEFT || sourceSide === EFConnectableSide.RIGHT) {\n return source.x < target.x ? PointExtensions.initialize(1, 0) : PointExtensions.initialize(-1, 0);\n }\n return source.y < target.y ? PointExtensions.initialize(0, 1) : PointExtensions.initialize(0, -1);\n }\n\n private distance(a: IPoint, b: IPoint): number {\n return Math.sqrt(Math.pow(b.x - a.x, 2) + Math.pow(b.y - a.y, 2));\n }\n\n private buildPath(points: IPoint[], borderRadius: number): string {\n let path = '';\n for (let i = 0; i < points.length; i++) {\n const p = points[ i ];\n let segment = '';\n\n if (i > 0 && i < points.length - 1) {\n segment = this.getBend(points[ i - 1 ], p, points[ i + 1 ], borderRadius);\n } else if (i === points.length - 1) {\n segment = this.buildLastLineSegment(i, p);\n } else {\n segment = this.buildMoveOrLineSegment(i, p);\n }\n path += segment;\n }\n\n return path;\n }\n\n private getBend(a: IPoint, b: IPoint, c: IPoint, size: number): string {\n const bendSize = Math.min(this.distance(a, b) / 2, this.distance(b, c) / 2, size);\n const { x, y } = b;\n\n if ((a.x === x && x === c.x) || (a.y === y && y === c.y)) {\n return `L${ x } ${ y }`;\n }\n\n if (a.y === y) {\n const xDir = a.x < c.x ? -1 : 1;\n const yDir = a.y < c.y ? 1 : -1;\n return `L ${ x + bendSize * xDir },${ y }Q ${ x },${ y } ${ x },${ y + bendSize * yDir }`;\n }\n\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${ x },${ y + bendSize * yDir }Q ${ x },${ y } ${ x + bendSize * xDir },${ y }`;\n }\n\n private buildMoveOrLineSegment(index: number, point: IPoint): string {\n return `${ index === 0 ? 'M' : 'L' }${ point.x } ${ point.y }`;\n }\n\n private buildLastLineSegment(index: number, point: IPoint): string {\n return `L${ point.x + 0.0002 } ${ point.y + 0.0002 }`;\n }\n}\n","import { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';\nimport {\n IFConnectionBuilder,\n IFConnectionBuilderRequest,\n IFConnectionBuilderResponse\n} from '../../f-connection-builder';\n\nexport class FStraightPathBuilder implements IFConnectionBuilder {\n\n public handle(request: IFConnectionBuilderRequest): IFConnectionBuilderResponse {\n const { source, target } = request;\n const path = `M ${ source.x } ${ source.y } L ${ target.x + 0.0002 } ${ target.y + 0.0002 }`;\n\n const connectionCenter = new CalculateConnectionCenterHandler().handle(\n new CalculateConnectionCenterRequest([source, target])\n );\n\n return { path, connectionCenter, penultimatePoint: source };\n }\n}\n","import { normalizeDomElementId } from '@foblex/utils';\n\nexport const F_CONNECTION_IDENTIFIERS = {\n\n textId(connectionId: string): string {\n return normalizeDomElementId('connection_text_' + connectionId);\n },\n connectionForSelectionId(connectionId: string): string {\n return normalizeDomElementId('connection_for_selection_' + connectionId);\n },\n connectionId(connectionId: string): string {\n return normalizeDomElementId('connection_' + connectionId);\n },\n gradientId(connectionId: string): string {\n return normalizeDomElementId('connection_gradient_' + connectionId);\n },\n linkToGradient(connectionId: string): string {\n return `url(#${ F_CONNECTION_IDENTIFIERS.gradientId(connectionId) })`;\n },\n linkToConnection(connectionId: string): string {\n return `#${ F_CONNECTION_IDENTIFIERS.connectionId(connectionId) }`;\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const F_CONNECTION = new InjectionToken('F_CONNECTION');\n","import { Directive, ElementRef, Inject, OnInit } from '@angular/core';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { IHasConnectionText } from '../i-has-connection-text';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { BrowserService } from '@foblex/platform';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\n@Directive({\n selector: 'textPath[f-connection-text-path]',\n host: {\n '[attr.href]': 'linkToConnection'\n }\n})\nexport class FConnectionTextPathDirective implements IHasHostElement, OnInit {\n\n public get linkToConnection(): string {\n return F_CONNECTION_IDENTIFIERS.linkToConnection(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGTextPathElement {\n return this.elementReference.nativeElement;\n }\n\n public symbolWidth: number = 8;\n public fontSize: string = '12px';\n\n constructor(\n private elementReference: ElementRef<SVGTextPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionText & IHasConnectionFromTo,\n private fBrowser: BrowserService\n ) {\n }\n\n public ngOnInit(): void {\n this.hostElement.setAttribute('startOffset', '50%');\n this.hostElement.setAttribute('text-anchor', `middle`);\n this.symbolWidth = this.getSymbolWidth(this.base.fText || '');\n }\n\n public getBBox(): DOMRect {\n return this.hostElement.getBBox();\n }\n\n private getFontStyles(element: SVGTextPathElement): { fontSize: string, fontFamily: string } {\n const computedStyles = this.fBrowser.window.getComputedStyle(element);\n return {\n fontSize: computedStyles.fontSize,\n fontFamily: computedStyles.fontFamily\n };\n }\n\n private getSymbolWidth(name: string): number {\n const text = name || 'connection';\n const { fontFamily, fontSize } = this.getFontStyles(this.hostElement);\n this.fontSize = fontSize;\n const canvas = this.fBrowser.document.createElement('canvas');\n let context;\n\n try {\n context = canvas.getContext('2d');\n } catch (e) {\n context = null;\n }\n if (!context) {\n return 0;\n }\n\n context.font = `${ fontSize } ${ fontFamily }`;\n\n const metrics = context.measureText(text);\n const symbolWidth = metrics.width / text.length;\n return symbolWidth;\n }\n}\n\n","import { ILine } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_TEXT = new InjectionToken<IConnectionText>('CONNECTION_TEXT');\n\nexport interface IConnectionText extends IHasHostElement {\n\n redraw(line: ILine): void;\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject, ViewChild\n} from \"@angular/core\";\nimport { ILine, PointExtensions } from '@foblex/2d';\nimport { FConnectionTextPathDirective } from './f-connection-text-path.directive';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionText } from '../i-has-connection-text';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_TEXT, IConnectionText } from './i-connection-text';\n\n@Component({\n selector: \"text[f-connection-text]\",\n templateUrl: \"./f-connection-text.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-text\",\n '[attr.id]': 'textId',\n },\n providers: [ { provide: CONNECTION_TEXT, useExisting: FConnectionTextComponent } ],\n})\nexport class FConnectionTextComponent implements IConnectionText {\n\n public get textId(): string {\n return F_CONNECTION_IDENTIFIERS.textId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGTextElement {\n return this.elementReference.nativeElement;\n }\n\n public get text(): string {\n return this.base.fText || '';\n }\n\n @ViewChild(FConnectionTextPathDirective, { static: true })\n public textPathDirective!: FConnectionTextPathDirective;\n\n constructor(\n private elementReference: ElementRef<SVGTextElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionText & IHasConnectionFromTo,\n ) {\n }\n\n public redraw(line: ILine): void {\n\n const isTextReverse: boolean = FConnectionTextComponent.isTextReverse(line);\n const dyValue = this.calculateDy(this.textPathDirective.fontSize, isTextReverse);\n\n this.hostElement.setAttribute('dy', dyValue);\n\n const textRect = this.textPathDirective.getBBox();\n const textRectCenter = [ textRect.x + textRect.width / 2, textRect.y + textRect.height / 2 ];\n this.hostElement.setAttribute('transform', isTextReverse ? `rotate(180, ${ textRectCenter })` : '');\n const startOffset = FConnectionTextComponent.getTextStartOffset(line, this.base.fText || '', this.textPathDirective.symbolWidth);\n if (startOffset < 0) {\n\n this.hostElement.style.display = 'none';\n } else {\n\n this.hostElement.style.display = 'unset';\n }\n }\n\n private calculateDy(fontSize: string, isTextReverse: boolean): string {\n const fontSizeNumber = parseFloat(fontSize);\n\n const dyValue = isTextReverse ? fontSizeNumber * 1.5 : fontSizeNumber * -0.8;\n\n return dyValue.toString();\n }\n\n private static isTextReverse(line: ILine): boolean {\n return line.point1.x > line.point2.x;\n }\n\n private static getTextStartOffset(line: ILine, name: string, symbolWidth: number): number {\n const vectorLength: number = PointExtensions.hypotenuse(line.point1, line.point2);\n return vectorLength / 2 - ((name || '').length * symbolWidth) / 2;\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:textPath f-connection-text-path>\n {{ text }}\n </svg:textPath>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef\n} from \"@angular/core\";\nimport { IPoint } from '@foblex/2d';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const F_CONNECTION_DRAG_HANDLE_CLASS = 'f-connection-drag-handle';\n\n@Component({\n selector: \"circle[f-connection-drag-handle]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': 'class'\n }\n})\nexport class FConnectionDragHandleComponent implements IHasHostElement {\n\n public readonly class: string = F_CONNECTION_DRAG_HANDLE_CLASS;\n\n public get hostElement(): SVGCircleElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGCircleElement>\n ) {\n }\n\n public redraw(penultimatePoint: IPoint, endPoint: IPoint): void {\n const point = this.calculateCircleCenter(penultimatePoint, endPoint, 8);\n this.hostElement.setAttribute('cx', point.x.toString());\n this.hostElement.setAttribute('cy', point.y.toString());\n }\n\n private calculateCircleCenter(start: IPoint, end: IPoint, radius: number): IPoint {\n const direction = { x: end.x - start.x, y: end.y - start.y };\n const length = Math.sqrt(direction.x * direction.x + direction.y * direction.y) || 1;\n const unitDirection = { x: direction.x / length, y: direction.y / length };\n const scaledDirection = { x: unitDirection.x * radius, y: unitDirection.y * radius };\n return { x: end.x - scaledDirection.x, y: end.y - scaledDirection.y };\n }\n}\n\n","import { ILine } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_GRADIENT = new InjectionToken<IConnectionGradient>('CONNECTION_GRADIENT');\n\nexport interface IConnectionGradient extends IHasHostElement {\n\n initialize(): void;\n\n redraw(line: ILine): void;\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject } from \"@angular/core\";\nimport { ILine, Point } from '@foblex/2d';\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { IHasConnectionColor } from '../i-has-connection-color';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_GRADIENT, IConnectionGradient } from './i-connection-gradient';\n\n@Component({\n selector: \"linearGradient[fConnectionGradient]\",\n templateUrl: \"./f-connection-gradient.component.html\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-gradient\",\n '[attr.id]': 'gradientId'\n },\n providers: [ { provide: CONNECTION_GRADIENT, useExisting: FConnectionGradientComponent } ],\n})\nexport class FConnectionGradientComponent implements IConnectionGradient {\n\n public get gradientId(): string {\n return F_CONNECTION_IDENTIFIERS.gradientId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGLinearGradientElement {\n return this.elementReference.nativeElement;\n }\n\n public get stop1Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(0) as SVGStopElement;\n }\n\n public get stop2Element(): SVGStopElement {\n return this.elementReference.nativeElement.children.item(1) as SVGStopElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGLinearGradientElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionColor & IHasConnectionFromTo,\n ) {\n }\n\n public initialize(): void {\n this.stop1Element.setAttribute('offset', '0%');\n this.stop2Element.setAttribute('offset', '100%');\n }\n\n private updateGradient(): void {\n this.setFromColor(this.base.fStartColor);\n this.setToColor(this.base.fEndColor);\n }\n\n private setFromColor(color: string | undefined): void {\n this.stop1Element.setAttribute('stop-color', color || 'transparent');\n }\n\n private setToColor(color: string | undefined): void {\n this.stop2Element.setAttribute('stop-color', color || 'transparent');\n }\n\n public redraw(line: ILine): void {\n const x: number = line.point2.x - line.point1.x;\n const y: number = line.point2.y - line.point1.y;\n const distance: number = Math.sqrt(x * x + y * y) || 0.01;\n\n const from = new Point(0.5 - (0.5 * x) / distance, 0.5 - (0.5 * y) / distance);\n\n this.hostElement.setAttribute('x1', from.x.toString());\n this.hostElement.setAttribute('y1', from.y.toString());\n\n const to = new Point(0.5 + (0.5 * x) / distance, 0.5 + (0.5 * y) / distance);\n this.hostElement.setAttribute('x2', to.x.toString());\n this.hostElement.setAttribute('y2', to.y.toString());\n this.updateGradient();\n }\n}\n\n","<ng-container xmlns:svg=\"http://www.w3.org/2000/svg\">\n <svg:stop/>\n <svg:stop/>\n</ng-container>\n","import { InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\nexport const CONNECTION_PATH = new InjectionToken<IConnectionPath>('CONNECTION_PATH');\n\nexport interface IConnectionPath extends IHasHostElement {\n\n initialize(): void;\n\n setPath(path: string): void;\n\n select(): void;\n\n deselect(): void;\n}\n","import { normalizeDomElementId } from '@foblex/utils';\n\nexport function getMarkerStartId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerEndId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-marker-end-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedStartId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-selected-marker-start-${ fConnectionId }`);\n}\n\nexport function getMarkerSelectedEndId(fConnectionId: string): string {\n return normalizeDomElementId(`f-connection-selected-marker-end-${ fConnectionId }`);\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, Inject } from \"@angular/core\";\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionColor } from '../i-has-connection-color';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { CONNECTION_PATH, IConnectionPath } from './i-connection-path';\nimport {\n getMarkerEndId,\n getMarkerSelectedEndId,\n getMarkerSelectedStartId,\n getMarkerStartId,\n} from './get-path-marker-id';\n\n@Component({\n selector: \"path[f-connection-path]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-path\",\n '[attr.id]': 'attrConnectionId',\n '[attr.data-f-path-id]': 'fPathId',\n '[attr.stroke]': 'linkToGradient',\n },\n providers: [ { provide: CONNECTION_PATH, useExisting: FConnectionPathComponent } ],\n})\nexport class FConnectionPathComponent implements IConnectionPath {\n\n public get fPathId(): string {\n return this.base.fId;\n }\n\n public get linkToGradient(): string {\n return F_CONNECTION_IDENTIFIERS.linkToGradient(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get attrConnectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionColor & IHasConnectionFromTo\n ) {\n }\n\n public initialize(): void {\n this.deselect();\n }\n\n public setPath(path: string): void {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n\n public select(): void {\n this.hostElement.setAttribute('marker-start', `url(#${ getMarkerSelectedStartId(this.base.fId) })`);\n this.hostElement.setAttribute('marker-end', `url(#${ getMarkerSelectedEndId(this.base.fId) })`);\n }\n\n public deselect(): void {\n this.hostElement.setAttribute('marker-start', `url(#${ getMarkerStartId(this.base.fId) })`);\n this.hostElement.setAttribute('marker-end', `url(#${ getMarkerEndId(this.base.fId) })`);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, Inject\n} from \"@angular/core\";\nimport { F_CONNECTION_IDENTIFIERS } from '../f-connection-identifiers';\nimport { IHasConnectionFromTo } from '../i-has-connection-from-to';\nimport { F_CONNECTION } from '../f-connection.injection-token';\nimport { IHasHostElement } from '../../../i-has-host-element';\n\n@Component({\n selector: \"path[fConnectionSelection]\",\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection-selection\",\n '[attr.id]': 'connectionForSelectionId',\n },\n})\nexport class FConnectionSelectionComponent implements IHasHostElement {\n\n public get connectionForSelectionId(): string {\n return F_CONNECTION_IDENTIFIERS.connectionForSelectionId(\n this.base.fId + this.base.fOutputId + this.base.fInputId\n );\n }\n\n public get hostElement(): SVGPathElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGPathElement>,\n @Inject(F_CONNECTION) private base: IHasConnectionFromTo,\n ) {\n }\n\n public setPath(path: string) {\n this.hostElement.setAttribute(\"d\", `${ path }`);\n }\n}\n\n","import { InjectionToken } from '@angular/core';\nimport { IFConnectionBuilder } from './i-f-connection-builder';\n\nexport const F_CONNECTION_BUILDERS = new InjectionToken<IFConnectionBuilders>('F_CONNECTION_BUILDERS');\n\nexport interface IFConnectionBuilders {\n [key: string]: IFConnectionBuilder;\n}\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { IFConnectionBuilder } from './i-f-connection-builder';\nimport { EFConnectionType, FBezierPathBuilder, FSegmentPathBuilder, FStraightPathBuilder } from '../common';\nimport { F_CONNECTION_BUILDERS, IFConnectionBuilders } from './f-connection-builders';\nimport { IFConnectionFactoryRequest } from './i-f-connection-factory-request';\nimport { IFConnectionBuilderResponse } from './i-f-connection-builder-response';\nimport { IMap } from '../../domain';\n\n@Injectable()\nexport class FConnectionFactory {\n\n private readonly builders: IMap<IFConnectionBuilder> = {\n\n [ EFConnectionType.STRAIGHT ]: new FStraightPathBuilder(),\n\n [ EFConnectionType.BEZIER ]: new FBezierPathBuilder(),\n\n [ EFConnectionType.SEGMENT ]: new FSegmentPathBuilder(),\n }\n\n constructor(\n @Optional() @Inject(F_CONNECTION_BUILDERS) builders: IFConnectionBuilders\n ) {\n if (builders) {\n this.builders = { ...this.builders, ...builders };\n }\n }\n\n public handle(request: IFConnectionFactoryRequest): IFConnectionBuilderResponse {\n const builder = this.builders[ request.type ];\n if (!builder) {\n throw new Error(`FConnectionBuilder not found for type ${ request.type }`);\n }\n\n return builder.handle(request.payload);\n }\n}\n","import { Directive, ElementRef } from '@angular/core';\nimport { ILine, IPoint, LineExtensions, PointExtensions } from '@foblex/2d';\nimport { Subject } from 'rxjs';\nimport { EFConnectionBehavior } from './e-f-connection-behavior';\nimport { EFConnectionType } from './e-f-connection-type';\nimport { IHasConnectionColor } from './i-has-connection-color';\nimport { IHasConnectionFromTo } from './i-has-connection-from-to';\nimport { IHasConnectionText } from './i-has-connection-text';\nimport { IConnectionPath } from './f-path';\nimport { IConnectionGradient } from './f-gradient';\nimport { FConnectionDragHandleComponent } from './f-drag-handle';\nimport { FConnectionSelectionComponent } from './f-selection';\nimport { IConnectionText } from './f-connection-text';\nimport { IHasStateChanges } from '../../i-has-state-changes';\nimport { FMarkerBase } from '../f-marker';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { IHasHostElement } from '../../i-has-host-element';\nimport {\n ICanChangeSelection, ICanChangeVisibility,\n mixinChangeSelection, mixinChangeVisibility\n} from '../../mixins';\n\nconst MIXIN_BASE = mixinChangeSelection(\n mixinChangeVisibility(\n class {\n constructor(\n public hostElement: HTMLElement\n ) {\n }\n }));\n\n@Directive()\nexport abstract class FConnectionBase extends MIXIN_BASE\n implements IHasHostElement, ICanChangeSelection,\n ICanChangeVisibility,\n IHasStateChanges, IHasConnectionColor,\n IHasConnectionFromTo, IHasConnectionText {\n\n public abstract override fId: string;\n\n public abstract fStartColor: string;\n\n public abstract fEndColor: string;\n\n public abstract fOutputId: string;\n\n public abstract fInputId: string;\n\n public abstract fRadius: number;\n\n public abstract fOffset: number;\n\n public path: string = '';\n\n public line: ILine = LineExtensions.initialize();\n\n public readonly stateChanges: Subject<void> = new Subject<void>();\n\n public abstract fDraggingDisabled: boolean;\n\n public abstract override fSelectionDisabled: boolean;\n\n public abstract boundingElement: HTMLElement | SVGElement;\n\n public abstract fBehavior: EFConnectionBehavior;\n\n public abstract fType: EFConnectionType;\n\n public abstract fDefs: ElementRef<SVGDefsElement>;\n\n public abstract fPath: IConnectionPath;\n\n public abstract fGradient: IConnectionGradient;\n\n public abstract fDragHandle: FConnectionDragHandleComponent;\n\n public abstract fSelection: FConnectionSelectionComponent;\n\n public abstract fTextComponent: IConnectionText;\n\n public abstract fText: string;\n\n public abstract fConnectionCenter: ElementRef<HTMLDivElement>;\n\n private penultimatePoint: IPoint = PointExtensions.initialize();\n\n protected constructor(\n elementReference: ElementRef<HTMLElement>,\n private cFactory: FConnectionFactory\n ) {\n super(elementReference.nativeElement);\n }\n\n public initialize(): void {\n this.fPath.initialize();\n this.fGradient.initialize();\n this.redraw();\n }\n\n public isContains(element: HTMLElement | SVGElement): boolean {\n return (this.hostElement.firstChild?.lastChild as HTMLElement).contains(element);\n }\n\n public setLine(source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide): void {\n this.line = LineExtensions.initialize(source, target);\n const pathResult = this.getPathResult(source, sourceSide, target, targetSide);\n this.path = pathResult.path;\n this.penultimatePoint = pathResult.penultimatePoint || source;\n this.fConnectionCenter?.nativeElement?.setAttribute('style', this.getTransform(pathResult.connectionCenter));\n }\n\n private getPathResult(source: IPoint, sourceSide: EFConnectableSide, target: IPoint, targetSide: EFConnectableSide): any {\n const radius = this.fRadius > 0 ? this.fRadius : 0;\n const offset = this.fOffset > 0 ? this.fOffset : 1;\n return this.cFactory.handle(\n {\n type: this.fType,\n payload: { source, sourceSide, target, targetSide, radius, offset }\n }\n );\n }\n\n private getTransform(position: IPoint): string {\n return `position: absolute; pointerEvents: all; transform: translate(-50%, -50%); left: ${ position.x }px; top: ${ position.y }px`;\n }\n\n public override selectChild(): void {\n this.fPath.select();\n }\n\n public override deselectChild(): void {\n this.fPath.deselect();\n }\n\n public redraw(): void {\n this.fPath.setPath(this.path);\n this.fSelection.setPath(this.path);\n this.fGradient.redraw(this.line);\n this.fDragHandle.redraw(this.penultimatePoint, this.line.point2);\n this.fTextComponent.redraw(this.line);\n }\n}\n","export enum EFConnectionBehavior {\n\n FIXED = 'fixed',\n\n FIXED_CENTER = 'fixed_center',\n\n FLOATING = 'floating',\n}\n","export enum EFConnectionType {\n\n SEGMENT = 'segment',\n\n STRAIGHT = 'straight',\n\n BEZIER = 'bezier',\n}\n","import {\n Directive\n} from \"@angular/core\";\n\n@Directive({\n selector: \"[fConnectionCenter]\"\n})\nexport class FConnectionCenterDirective {\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ContentChildren, ElementRef, Input, OnDestroy, OnInit, QueryList, ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { FComponentsStore } from '../../f-storage';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection-for-create\",\n templateUrl: \"./f-connection-for-create.component.html\",\n styleUrls: [ \"./f-connection-for-create.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-connection-for-create\"\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionForCreateComponent } ],\n})\nexport class FConnectionForCreateComponent\n extends FConnectionBase implements AfterViewInit, OnInit, OnDestroy {\n\n public override fId: string = `f-connection-for-create-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n private _fRadius: number = 8;\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override set fBehavior(value: EFConnectionBehavior | string) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fType(): EFConnectionType {\n return this._type;\n }\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fTempConnection = this;\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.fTempConnection = undefined;\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component, ContentChildren,\n ElementRef,\n Input,\n OnDestroy,\n OnInit, QueryList,\n ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH,\n CONNECTION_TEXT,\n FConnectionDragHandleComponent,\n FConnectionSelectionComponent,\n IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FComponentsStore } from '../../f-storage';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\n//TODO: Need to deal with cyclic dependencies, since in some cases an error occurs when importing them ../common\n// TypeError: Class extends value undefined is not a constructor or null\n// at f-connection-for-create.component.ts:34:11\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-connection\",\n exportAs: 'fComponent',\n templateUrl: \"./f-connection.component.html\",\n styleUrls: [ \"./f-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.id]': 'fId',\n class: \"f-component f-connection\",\n '[class.f-connection-selection-disabled]': 'fSelectionDisabled',\n '[class.f-connection-reassign-disabled]': 'fDraggingDisabled',\n },\n providers: [ { provide: F_CONNECTION, useExisting: FConnectionComponent } ],\n})\nexport class FConnectionComponent\n extends FConnectionBase implements OnInit, OnDestroy {\n\n @Input('fConnectionId')\n public override fId: string = `f-connection-${ uniqueId++ }`;\n\n private _fText: string = '';\n @Input()\n public override set fText(value: string) {\n this._fText = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fText(): string {\n return this._fText;\n }\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n private _fOutputId!: string;\n @Input()\n public override set fOutputId(value: string) {\n this._fOutputId = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOutputId(): string {\n return this._fOutputId;\n }\n\n private _fInputId!: string;\n @Input()\n public override set fInputId(value: string) {\n this._fInputId = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fInputId(): string {\n return this._fInputId;\n }\n\n private _fRadius: number = 8;\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n @Input()\n public override set fBehavior(value: string | EFConnectionBehavior) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = value as unknown as EFConnectionType; //castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fType(): EFConnectionType {\n return this._type;\n }\n\n @Input('fReassignDisabled')\n public override fDraggingDisabled: boolean = false;\n\n @Input()\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.addComponent(this.fComponentsStore.fConnections, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fConnections, this);\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"overflow: visible; display: block; vertical-align: middle;\">\n <defs #defs></defs>\n <ng-content></ng-content>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path [attr.d]=\"path\"></path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n","export enum EFMarkerType {\n\n START = 'f-connection-marker-start',\n\n END = 'f-connection-marker-end',\n\n SELECTED_START = 'f-connection-selected-marker-start',\n\n SELECTED_END = 'f-connection-selected-marker-end',\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../../i-has-host-element';\n\nexport const F_MARKER = new InjectionToken('F_MARKER');\n\n@Directive()\nexport abstract class FMarkerBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract width: number;\n\n public abstract height: number;\n\n public abstract refX: number;\n\n public abstract refY: number;\n\n public abstract type: string;\n\n public abstract orient: 'auto' | 'auto-start-reverse' | string;\n\n public abstract markerUnits: 'strokeWidth' | 'userSpaceOnUse';\n}\n","import {\n Directive, ElementRef, Input, OnDestroy, OnInit\n} from \"@angular/core\";\nimport { F_MARKER, FMarkerBase } from './f-marker-base';\nimport { EFMarkerType } from './e-f-marker-type';\nimport { FComponentsStore } from '../../f-storage';\n\n@Directive({\n selector: \"svg[fMarker]\",\n host: {\n class: \"f-component f-marker\"\n },\n providers: [ { provide: F_MARKER, useExisting: FMarkerDirective } ],\n})\nexport class FMarkerDirective extends FMarkerBase implements OnInit, OnDestroy {\n\n @Input()\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override width: number = 0;\n\n @Input()\n public override height: number = 0;\n\n @Input()\n public override refX: number = 0;\n\n @Input()\n public override refY: number = 0;\n\n @Input()\n public override type: string = EFMarkerType.START;\n\n @Input()\n public override orient: 'auto' | 'auto-start-reverse' | 'calculated' | string = 'auto';\n\n @Input()\n public override markerUnits: 'strokeWidth' | 'userSpaceOnUse' = 'strokeWidth';\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private elementReference: ElementRef<HTMLElement>,\n ) {\n super();\n this.hostElement.style.display = 'none';\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.addComponent(this.fComponentsStore.fMarkers, this);\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.removeComponent(this.fComponentsStore.fMarkers, this);\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, ContentChildren, ElementRef, Input, OnDestroy, OnInit, QueryList, ViewChild\n} from \"@angular/core\";\nimport {\n CONNECTION_GRADIENT,\n CONNECTION_PATH, CONNECTION_TEXT,\n FConnectionDragHandleComponent, FConnectionSelectionComponent, IConnectionGradient,\n IConnectionPath, IConnectionText,\n} from '../common';\nimport { EFConnectionBehavior } from '../common';\nimport { EFConnectionType } from '../common';\nimport { FConnectionCenterDirective } from '../f-connection-center';\nimport { FConnectionFactory } from '../f-connection-builder';\nimport { FComponentsStore } from '../../f-storage';\nimport { F_CONNECTION } from '../common/f-connection.injection-token';\nimport { FConnectionBase } from '../common/f-connection-base';\nimport { castToEnum } from '@foblex/utils';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-snap-connection\",\n templateUrl: \"./f-snap-connection.component.html\",\n styleUrls: [ \"./f-snap-connection.component.scss\" ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: \"f-component f-connection f-snap-connection\"\n },\n providers: [ { provide: F_CONNECTION, useExisting: FSnapConnectionComponent } ],\n})\nexport class FSnapConnectionComponent\n extends FConnectionBase implements AfterViewInit, OnInit, OnDestroy {\n\n public override fId: string = `f-snap-connection-${ uniqueId++ }`;\n\n public override fText: string = '';\n\n private _fStartColor: string = 'black';\n @Input()\n public override set fStartColor(value: string) {\n this._fStartColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fStartColor(): string {\n return this._fStartColor;\n }\n\n private _fEndColor: string = 'black';\n @Input()\n public override set fEndColor(value: string) {\n this._fEndColor = value;\n this.fComponentsStore.componentDataChanged();\n }\n\n public override get fEndColor(): string {\n return this._fEndColor;\n }\n\n @Input()\n public fSnapThreshold: number = 20;\n\n public override fOutputId!: string;\n\n public override fInputId!: string;\n\n private _fRadius: number = 8;\n\n @Input()\n public override set fRadius(value: number) {\n this._fRadius = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fRadius(): number {\n return this._fRadius;\n }\n\n private _fOffset: number = 32;\n\n @Input()\n public override set fOffset(value: number) {\n this._fOffset = value;\n this.fComponentsStore.componentDataChanged();\n }\n public override get fOffset(): number {\n return this._fOffset;\n }\n\n private _behavior: EFConnectionBehavior = EFConnectionBehavior.FIXED;\n\n @Input()\n public override set fBehavior(value: EFConnectionBehavior | string) {\n this._behavior = castToEnum(value, 'fBehavior', EFConnectionBehavior);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fBehavior(): EFConnectionBehavior {\n return this._behavior;\n }\n\n private _type: EFConnectionType = EFConnectionType.STRAIGHT;\n\n @Input()\n public override set fType(value: EFConnectionType | string) {\n this._type = castToEnum(value, 'fType', EFConnectionType);\n this.fComponentsStore.componentDataChanged();\n }\n public override get fType(): EFConnectionType {\n return this._type;\n }\n\n public override fDraggingDisabled: boolean = false;\n\n public override fSelectionDisabled: boolean = false;\n\n @ViewChild('defs', { static: true })\n public override fDefs!: ElementRef<SVGDefsElement>;\n\n @ViewChild(CONNECTION_PATH, { static: true })\n public override fPath!: IConnectionPath;\n\n @ViewChild(CONNECTION_GRADIENT, { static: true })\n public override fGradient!: IConnectionGradient;\n\n @ViewChild(FConnectionDragHandleComponent, { static: true })\n public override fDragHandle!: FConnectionDragHandleComponent;\n\n @ViewChild(FConnectionSelectionComponent, { static: true })\n public override fSelection!: FConnectionSelectionComponent;\n\n @ViewChild(CONNECTION_TEXT, { static: true })\n public override fTextComponent!: IConnectionText;\n\n @ViewChild('fConnectionCenter', { static: false })\n public override fConnectionCenter!: ElementRef<HTMLDivElement>;\n\n @ContentChildren(FConnectionCenterDirective, { descendants: true })\n public fConnectionCenters!: QueryList<FConnectionCenterDirective>;\n\n public override get boundingElement(): HTMLElement | SVGElement {\n return this.fPath.hostElement;\n }\n\n constructor(\n elementReference: ElementRef<HTMLElement>,\n fConnectionFactory: FConnectionFactory,\n private fComponentsStore: FComponentsStore\n ) {\n super(elementReference, fConnectionFactory);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fSnapConnection = this;\n }\n\n public ngAfterViewInit(): void {\n this.hide();\n }\n\n public ngOnDestroy(): void {\n this.fComponentsStore.fSnapConnection = undefined;\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\">\n <defs #defs></defs>\n <g class=\"f-connection-group\">\n <linearGradient fConnectionGradient></linearGradient>\n <path fConnectionSelection [attr.d]=\"path\"></path>\n <g>\n <path f-connection-path\n [attr.d]=\"path\">\n </path>\n <circle f-connection-drag-handle r=\"8\"></circle>\n </g>\n <text f-connection-text></text>\n </g>\n <ng-content></ng-content>\n</svg>\n<div #fConnectionCenter class=\"f-connection-center\" *ngIf=\"fConnectionCenters.length\">\n <ng-content select=\"[fConnectionCenter]\"></ng-content>\n</div>\n","import {\n FConnectionDragHandleComponent,\n FConnectionGradientComponent, FConnectionPathComponent, FConnectionSelectionComponent,\n FConnectionTextComponent,\n FConnectionTextPathDirective\n} from './common';\nimport { FConnectionComponent } from './f-connection';\nimport { FConnectionCenterDirective } from './f-connection-center';\nimport { FConnectionForCreateComponent } from './f-connection-for-create';\nimport { FMarkerDirective } from './f-marker';\nimport { FSnapConnectionComponent } from './f-snap-connection';\n\nexport const F_CONNECTION_PROVIDERS = [\n\n FConnectionTextComponent,\n FConnectionTextPathDirective,\n FConnectionDragHandleComponent,\n FConnectionGradientComponent,\n FConnectionPathComponent,\n FConnectionSelectionComponent,\n\n FConnectionComponent,\n FConnectionCenterDirective,\n FConnectionForCreateComponent,\n FMarkerDirective,\n FSnapConnectionComponent\n];\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionPreparationRequest } from './reassign-connection-preparation.request';\nimport { IPoint, ITransformModel, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { UpdateItemAndChildrenLayersRequest } from '../../../../domain';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS, FConnectionBase } from '../../../../f-connection';\nimport { ReassignConnectionDragHandler } from '../reassign-connection.drag-handler';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ReassignConnectionPreparationRequest)\nexport class ReassignConnectionPreparationExecution implements IExecution<ReassignConnectionPreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ReassignConnectionPreparationRequest): void {\n const connectionToReassign = this.getConnectionHandler(\n this.getDragHandleElement(request.event.getPosition())\n )!;\n if (connectionToReassign.fDraggingDisabled) {\n return;\n }\n\n this.fMediator.send<void>(\n new UpdateItemAndChildrenLayersRequest(\n connectionToReassign, this.fComponentsStore.fCanvas!.fConnectionsContainer.nativeElement\n )\n );\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n\n this.fDraggableDataContext.draggableItems = [\n new ReassignConnectionDragHandler(this.fMediator, this.fComponentsStore, connectionToReassign)\n ];\n }\n\n private getDragHandleElement(position: IPoint): HTMLElement {\n return this.getElementsFromPoint(position).filter((x) => {\n return !!this.getConnectionHandler(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\n }).find((x) => !!x)!;\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n public getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fConnections.find(c => c.isContains(element));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ReassignConnectionPreparationRequest } from './reassign-connection-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable-data-context';\nimport { F_CONNECTION_DRAG_HANDLE_CLASS, FConnectionBase } from '../../../../f-connection';\nimport { FComponentsStore } from '../../../../f-storage';\nimport { IPoint } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FValidatorRegister(ReassignConnectionPreparationRequest)\nexport class ReassignConnectionPreparationValidator implements IValidator<ReassignConnectionPreparationRequest> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ReassignConnectionPreparationRequest): boolean {\n return !!this.getDragHandleElements(request.event.getPosition()).length\n && !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getDragHandleElements(position: IPoint): HTMLElement[] {\n return this.getElementsFromPoint(position).filter((x) => {\n return !!this.getConnectionHandler(x as HTMLElement) && x.classList.contains(F_CONNECTION_DRAG_HANDLE_CLASS);\n });\n }\n\n private getElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y) as HTMLElement[];\n }\n\n public getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fConnections.find(c => c.isContains(element));\n }\n}\n","import {\n CreateConnectionDragHandlerExecution,\n CreateConnectionFinalizeExecution,\n CreateConnectionFinalizeValidator,\n CreateConnectionFromOutletPreparationExecution,\n CreateConnectionFromOutputPreparationExecution,\n CreateConnectionFromOutputPreparationValidator,\n CreateConnectionPreparationExecution,\n CreateConnectionPreparationValidator,\n GetCanBeConnectedOutputByOutletExecution,\n GetCanBeConnectedOutputByOutletValidator\n} from './create-connection';\nimport {\n ReassignConnectionFinalizeExecution,\n ReassignConnectionFinalizeValidator,\n ReassignConnectionPreparationExecution, ReassignConnectionPreparationValidator,\n} from './reassign-connection';\nimport { GetInputUnderPointerExecution, GetInputUnderPointerValidator } from './get-input-under-pointer';\n\nexport const CONNECTIONS_PROVIDERS = [\n\n GetInputUnderPointerExecution,\n\n GetInputUnderPointerValidator,\n\n CreateConnectionFinalizeExecution,\n\n CreateConnectionFinalizeValidator,\n\n CreateConnectionDragHandlerExecution,\n\n CreateConnectionFromOutletPreparationExecution,\n\n GetCanBeConnectedOutputByOutletExecution,\n\n GetCanBeConnectedOutputByOutletValidator,\n\n CreateConnectionFromOutputPreparationExecution,\n\n CreateConnectionFromOutputPreparationValidator,\n\n CreateConnectionPreparationExecution,\n\n CreateConnectionPreparationValidator,\n\n ReassignConnectionFinalizeExecution,\n\n ReassignConnectionFinalizeValidator,\n\n ReassignConnectionPreparationExecution,\n\n ReassignConnectionPreparationValidator,\n];\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNodePaddingRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodePaddingRequest } from './get-node-padding.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(GetNodePaddingRequest)\nexport class GetNodePaddingExecution\n implements IExecution<GetNodePaddingRequest, [ number, number, number, number ]> {\n\n constructor(\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: GetNodePaddingRequest): [ number, number, number, number ] {\n return request.fNode.fIncludePadding ? this.getPaddingData(request.fNode, request.rect) : [ 0, 0, 0, 0 ];\n }\n\n private getPaddingData(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n const style = this.fBrowser.window.getComputedStyle(node.hostElement);\n return [\n this.fBrowser.toPixels(style.paddingLeft, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingTop, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingRight, rect.width, rect.height, style.fontSize),\n this.fBrowser.toPixels(style.paddingBottom, rect.width, rect.height, style.fontSize)\n ];\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedNodeRectRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedNodeRectRequest } from './get-normalized-node-rect.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedNodeRectRequest)\nexport class GetNormalizedNodeRectExecution\n implements IExecution<GetNormalizedNodeRectRequest, IRect> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetNormalizedNodeRectRequest): IRect {\n return this.normalizeRect(RectExtensions.fromElement(request.fNode.hostElement), request.fNode.position);\n }\n\n private normalizeRect(scaledRect: IRect, position: IPoint): IRect {\n const rect = RectExtensions.div(scaledRect, this.fComponentsStore.fCanvas!.transform.scale);\n\n return RectExtensions.initialize(position.x, position.y, rect.width, rect.height);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedParentNodeRectRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedParentNodeRectRequest } from './get-normalized-parent-node-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { GetNormalizedNodeRectRequest } from '../get-normalized-node-rect';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { GetNodePaddingRequest } from '../get-node-padding';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedParentNodeRectRequest)\nexport class GetNormalizedParentNodeRectExecution\n implements IExecution<GetNormalizedParentNodeRectRequest, IRect> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNormalizedParentNodeRectRequest): IRect {\n let result = RectExtensions.initialize(-Infinity, -Infinity, Infinity, Infinity);\n const parentNode = this.getNode(request.fNode.fParentId);\n if (parentNode) {\n result = this.getParentRect(parentNode);\n }\n return result;\n }\n\n private getNode(fId?: string | null): FNodeBase | undefined {\n return this.fComponentsStore.fNodes.find((x) => x.fId === fId);\n }\n\n private getParentRect(node: FNodeBase): IRect {\n const rect = this.getNormalizedNodeRect(node);\n const padding = this.getNodePadding(node, rect);\n return RectExtensions.initialize(\n rect.x + padding[0],\n rect.y + padding[1],\n rect.width - padding[0] - padding[2],\n rect.height - padding[1] - padding[3]\n );\n }\n\n private getNormalizedNodeRect(node: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(node));\n }\n\n private getNodePadding(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this.fMediator.send<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetParentNodesRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetParentNodesRequest } from './get-parent-nodes.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FExecutionRegister(GetParentNodesRequest)\nexport class GetParentNodesExecution\n implements IExecution<GetParentNodesRequest, FNodeBase[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetParentNodesRequest): FNodeBase[] {\n return this.getParentNodes(request.fNode, new Set<string>(), []);\n }\n\n private getParentNodes(fNode: FNodeBase, visited: Set<string>, result: FNodeBase[]): FNodeBase[] {\n if (visited.has(fNode.fId)) {\n throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fNode.fId);\n }\n visited.add(fNode.fId);\n\n const parent = this.fComponentsStore.fNodes.find((x) => x.fId === fNode.fParentId);\n if (!parent) {\n return result;\n }\n\n result.push(parent);\n return this.getParentNodes(parent, visited, result);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class IsArrayHasParentNodeRequest {\n\n constructor(\n public fNode: FNodeBase,\n public fNodes: FNodeBase[]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { IsArrayHasParentNodeRequest } from './is-array-has-parent-node.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { GetParentNodesRequest } from '../get-parent-nodes';\n\n@Injectable()\n@FExecutionRegister(IsArrayHasParentNodeRequest)\nexport class IsArrayHasParentNodeExecution\n implements IExecution<IsArrayHasParentNodeRequest, boolean> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: IsArrayHasParentNodeRequest): boolean {\n return this.isParentNodeInArray(this.getParentNodeIds(request.fNode), request.fNodes);\n }\n\n private getParentNodeIds(fNode: FNodeBase): string[] {\n return this.getParentNodes(fNode).map((x) => x.fId);\n }\n\n private getParentNodes(fNode: FNodeBase): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetParentNodesRequest(fNode));\n }\n\n private isParentNodeInArray(parentNodeIds: string[], fNodes: FNodeBase[]): boolean {\n return fNodes.some((x) => parentNodeIds.includes(x.fId));\n }\n}\n\n\n","import { GetNormalizedNodeRectExecution } from './get-normalized-node-rect';\nimport { GetParentNodesExecution } from './get-parent-nodes';\nimport { IsArrayHasParentNodeExecution } from './is-array-has-parent-node';\nimport { GetNormalizedParentNodeRectExecution } from './get-normalized-parent-node-rect';\nimport { GetNodePaddingExecution } from './get-node-padding';\n\nexport const DRAG_AND_DROP_COMMON_PROVIDERS = [\n\n GetNodePaddingExecution,\n\n GetNormalizedNodeRectExecution,\n\n GetNormalizedParentNodeRectExecution,\n\n GetParentNodesExecution,\n\n IsArrayHasParentNodeExecution\n];\n","import { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\n\nexport class PutInputConnectionHandlersToArrayRequest {\n\n constructor(\n public nodeDragHandler: NodeDragHandler,\n public outputIds: string[],\n public result: IDraggableItem[]\n ) {\n }\n}\n","import { IDraggableItem } from '../i-draggable-item';\nimport { FConnectionBase } from '../../f-connection';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FMediator } from '@foblex/mediator';\nimport { Directive } from '@angular/core';\nimport { INodeMoveRestrictions } from './create-move-nodes-drag-model-from-selection';\nimport { ILine, IPoint } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetConnectorWithRectRequest, IConnectorWithRect } from '../../domain';\n\n@Directive()\nexport abstract class ConnectionBaseDragHandler implements IDraggableItem {\n\n protected fOutputWithRect!: IConnectorWithRect;\n protected fInputWithRect!: IConnectorWithRect;\n\n protected constructor(\n protected fMediator: FMediator,\n protected fComponentsStore: FComponentsStore,\n public connection: FConnectionBase,\n ) {\n }\n\n public initialize(): void {\n this.fOutputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getOutput()));\n this.fInputWithRect = this.fMediator.send<IConnectorWithRect>(new GetConnectorWithRectRequest(this.getInput()));\n }\n\n private getOutput(): FConnectorBase {\n return this.fComponentsStore.fOutputs.find((x) => x.id === this.connection.fOutputId)!;\n }\n\n private getInput(): FConnectorBase {\n return this.fComponentsStore.fInputs.find((x) => x.id === this.connection.fInputId)!\n }\n\n public abstract move(difference: IPoint): void;\n\n protected getDifference(difference: IPoint, restrictions: INodeMoveRestrictions): IPoint {\n return {\n x: Math.min(Math.max(difference.x, restrictions.min.x), restrictions.max.x),\n y: Math.min(Math.max(difference.y, restrictions.min.y), restrictions.max.y)\n }\n }\n\n protected redrawConnection(line: ILine): void {\n this.connection.setLine(line.point1, this.fOutputWithRect.fConnector.fConnectableSide, line.point2, this.fInputWithRect.fConnector.fConnectableSide);\n this.connection.redraw();\n }\n}\n","import { ILine, IPoint, RoundedRect } from '@foblex/2d';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport {\n GetConnectionLineRequest,\n} from '../../domain';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { INodeMoveRestrictions } from './create-move-nodes-drag-model-from-selection';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionDragHandler extends ConnectionBaseDragHandler {\n\n private sourceRestrictions!: INodeMoveRestrictions;\n private targetRestrictions!: INodeMoveRestrictions;\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public setOutputRestrictions(min: IPoint, max: IPoint) {\n this.sourceRestrictions = { min, max };\n }\n\n public setInputRestrictions(min: IPoint, max: IPoint) {\n this.targetRestrictions = { min, max };\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n RoundedRect.fromRect(this.fOutputWithRect.fRect).addPoint(this.getDifference({ ...difference }, this.sourceRestrictions)),\n RoundedRect.fromRect(this.fInputWithRect.fRect).addPoint(this.getDifference({ ...difference }, this.targetRestrictions)),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { ILine, IPoint, RoundedRect } from '@foblex/2d';\nimport {\n GetConnectionLineRequest,\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionTargetDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n public minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n RoundedRect.fromRect(this.fOutputWithRect.fRect),\n RoundedRect.fromRect(this.fInputWithRect.fRect).addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PutInputConnectionHandlersToArrayRequest } from './put-input-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\nimport { ConnectionDragHandler } from '../../../connection.drag-handler';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { FConnectionBase } from '../../../../../f-connection';\nimport { ConnectionTargetDragHandler } from '../../../connection-target.drag-handler';\n\n@Injectable()\n@FExecutionRegister(PutInputConnectionHandlersToArrayRequest)\nexport class PutInputConnectionHandlersToArrayExecution\n implements IExecution<PutInputConnectionHandlersToArrayRequest, void> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: PutInputConnectionHandlersToArrayRequest): void {\n this.getInputConnections(request.nodeDragHandler.fNode).forEach((connection) => {\n const index = this.getExistingConnectionHandlerIndex(request.result, connection);\n if (index !== -1) {\n this.updateExistingConnectionHandler(request.result, index, request.nodeDragHandler);\n } else {\n request.result.push(this.createNewConnectionHandler(request.nodeDragHandler, request.outputIds, connection));\n }\n });\n }\n\n public getInputConnections(node: FNodeBase): FConnectionBase[] {\n const inputIds = new Set(this.getInputsForNode(node).map((x) => x.id));\n return this.fConnections.filter((x) => inputIds.has(x.fInputId));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getExistingConnectionHandlerIndex(result: IDraggableItem[], connection: FConnectionBase): number {\n return result.findIndex(\n (x) => x instanceof ConnectionDragHandler && x.connection.fId === connection.fId\n );\n }\n\n private createNewConnectionHandler(nodeDragHandler: NodeDragHandler, outputIds: string[], connection: FConnectionBase): IDraggableItem {\n let result: IDraggableItem;\n if (outputIds.includes(connection.fOutputId)) {\n result = this.getNewConnectionHandler(connection, nodeDragHandler);\n } else {\n result = this.getNewSourceConnectionHandler(connection, nodeDragHandler);\n }\n return result;\n }\n\n private getNewConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionDragHandler {\n const handler = new ConnectionDragHandler(this.fMediator, this.fComponentsStore, connection);\n handler.setInputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n return handler;\n }\n\n private updateExistingConnectionHandler(result: IDraggableItem[], index: number, nodeDragHandler: NodeDragHandler): void {\n (result[ index ] as ConnectionDragHandler).setInputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n\n private getNewSourceConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionTargetDragHandler {\n return new ConnectionTargetDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n}\n\n","import { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\n\nexport class PutOutputConnectionHandlersToArrayRequest {\n\n constructor(\n public nodeDragHandler: NodeDragHandler,\n public inputIds: string[],\n public result: IDraggableItem[]\n ) {\n }\n}\n","import { ILine, IPoint, RoundedRect } from '@foblex/2d';\nimport {\n GetConnectionLineRequest\n} from '../../domain';\nimport { FConnectionBase } from '../../f-connection';\nimport { FMediator } from '@foblex/mediator';\nimport { ConnectionBaseDragHandler } from './connection-base-drag-handler';\nimport { FComponentsStore } from '../../f-storage';\n\nexport class ConnectionSourceDragHandler extends ConnectionBaseDragHandler {\n\n constructor(\n fMediator: FMediator,\n fComponentsStore: FComponentsStore,\n connection: FConnectionBase,\n public minDistance: IPoint,\n public maxDistance: IPoint\n ) {\n super(fMediator, fComponentsStore, connection);\n }\n\n public override move(difference: IPoint): void {\n this.redrawConnection(this.getNewLineValue(difference));\n }\n\n private getNewLineValue(difference: IPoint): ILine {\n return this.fMediator.send<ILine>(new GetConnectionLineRequest(\n RoundedRect.fromRect(this.fOutputWithRect.fRect).addPoint(this.getDifference({ ...difference }, { min: this.minDistance, max: this.maxDistance })),\n RoundedRect.fromRect(this.fInputWithRect.fRect),\n this.connection.fBehavior,\n this.fOutputWithRect.fConnector.fConnectableSide,\n this.fInputWithRect.fConnector.fConnectableSide\n ));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { PutOutputConnectionHandlersToArrayRequest } from './put-output-connection-handlers-to-array.request';\nimport { FComponentsStore } from '../../../../../f-storage';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../../../f-node';\nimport { NodeDragHandler } from '../../../node.drag-handler';\nimport { IDraggableItem } from '../../../../i-draggable-item';\nimport { ConnectionDragHandler } from '../../../connection.drag-handler';\nimport { ConnectionSourceDragHandler } from '../../../connection-source.drag-handler';\nimport { FConnectorBase } from '../../../../../f-connectors';\nimport { FConnectionBase } from '../../../../../f-connection';\n\n@Injectable()\n@FExecutionRegister(PutOutputConnectionHandlersToArrayRequest)\nexport class PutOutputConnectionHandlersToArrayExecution\n implements IExecution<PutOutputConnectionHandlersToArrayRequest, void> {\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: PutOutputConnectionHandlersToArrayRequest): void {\n this.getOutputConnections(request.nodeDragHandler.fNode).forEach((connection) => {\n const index = this.getExistingConnectionHandlerIndex(request.result, connection);\n if (index !== -1) {\n this.updateExistingConnectionHandler(request.result, index, request.nodeDragHandler);\n } else {\n request.result.push(this.createNewConnectionHandler(request.nodeDragHandler, request.inputIds, connection));\n }\n });\n }\n\n public getOutputConnections(node: FNodeBase): FConnectionBase[] {\n const outputsIds = new Set(this.getOutputsForNode(node).map((x) => x.id));\n return this.fConnections.filter((x) => outputsIds.has(x.fOutputId));\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getExistingConnectionHandlerIndex(result: IDraggableItem[], connection: FConnectionBase): number {\n return result.findIndex(\n (x) => x instanceof ConnectionDragHandler && x.connection.fId === connection.fId\n );\n }\n\n private createNewConnectionHandler(nodeDragHandler: NodeDragHandler, inputIds: string[], connection: FConnectionBase): IDraggableItem {\n let result: IDraggableItem;\n if (inputIds.includes(connection.fInputId)) {\n result = this.getNewConnectionHandler(connection, nodeDragHandler);\n } else {\n result = this.getNewSourceConnectionHandler(connection, nodeDragHandler);\n }\n return result;\n }\n\n private getNewConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionDragHandler {\n const handler = new ConnectionDragHandler(this.fMediator, this.fComponentsStore, connection);\n handler.setOutputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n return handler;\n }\n\n private updateExistingConnectionHandler(result: IDraggableItem[], index: number, nodeDragHandler: NodeDragHandler): void {\n (result[ index ] as ConnectionDragHandler).setOutputRestrictions(nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n\n private getNewSourceConnectionHandler(connection: FConnectionBase, nodeDragHandler: NodeDragHandler): ConnectionSourceDragHandler {\n return new ConnectionSourceDragHandler(this.fMediator, this.fComponentsStore, connection, nodeDragHandler.minDistance, nodeDragHandler.maxDistance);\n }\n}\n\n","import { FNodeBase } from '../../../../../f-node';\n\nexport class GetNodeMoveRestrictionsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public hasParentNodeInSelected: boolean\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodeMoveRestrictionsRequest } from './get-node-move-restrictions.request';\nimport { IRect, PointExtensions } from '@foblex/2d';\nimport { INodeMoveRestrictions } from './i-node-move-restrictions';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNormalizedNodeRectRequest, GetNormalizedParentNodeRectRequest } from '../../../../domain';\nimport { FNodeBase } from '../../../../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetNodeMoveRestrictionsRequest)\nexport class GetNodeMoveRestrictionsExecution\n implements IExecution<GetNodeMoveRestrictionsRequest, INodeMoveRestrictions> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNodeMoveRestrictionsRequest): INodeMoveRestrictions {\n if (request.fNode.fParentId && !request.hasParentNodeInSelected) {\n const fParentNodeRect = this.getParentNodeRect(request.fNode);\n const fCurrentNodeRect = this.getCurrentNodeRect(request.fNode);\n return {\n min: PointExtensions.initialize(fParentNodeRect.x - fCurrentNodeRect.x, fParentNodeRect.y - fCurrentNodeRect.y),\n max: PointExtensions.initialize(\n (fParentNodeRect.x + fParentNodeRect.width) - (fCurrentNodeRect.x + fCurrentNodeRect.width),\n (fParentNodeRect.y + fParentNodeRect.height) - (fCurrentNodeRect.y + fCurrentNodeRect.height),\n )\n };\n }\n return { ...DEFAULT_RESTRICTIONS };\n }\n\n private getCurrentNodeRect(fNode: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(fNode));\n }\n\n private getParentNodeRect(fNode: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedParentNodeRectRequest(fNode));\n }\n}\n\nconst DEFAULT_RESTRICTIONS: INodeMoveRestrictions = {\n min: PointExtensions.initialize(-Infinity, -Infinity),\n max: PointExtensions.initialize(Infinity, Infinity)\n};\n","export class CreateMoveNodesDragModelFromSelectionRequest {\n\n}\n","import { IPoint, Point, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { FNodeBase } from '../../f-node';\nimport {\n INodeMoveRestrictions\n} from './create-move-nodes-drag-model-from-selection';\n\nexport class NodeDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n public fNode: FNodeBase,\n public minDistance: IPoint,\n public maxDistance: IPoint,\n ) {\n this.onPointerDownPosition = { ...fNode.position };\n }\n\n public move(difference: IPoint): void {\n const restrictedDifference = this.getDifference(difference, { min: this.minDistance, max: this.maxDistance });\n\n this.redrawNode(this.getNewPosition(restrictedDifference));\n this.fDraggableDataContext.fLineAlignment?.handle(restrictedDifference);\n }\n\n private getNewPosition(difference: IPoint): IPoint {\n return Point.fromPoint(this.onPointerDownPosition).add(difference);\n }\n\n private getDifference(difference: IPoint, restrictions: INodeMoveRestrictions): IPoint {\n return {\n x: Math.min(Math.max(difference.x, restrictions.min.x), restrictions.max.x),\n y: Math.min(Math.max(difference.y, restrictions.min.y), restrictions.max.y)\n }\n }\n\n private redrawNode(position: IPoint): void {\n this.fNode.updatePosition(position);\n this.fNode.redraw();\n }\n\n public complete(): void {\n this.fNode.positionChange.emit(this.fNode.position);\n }\n}\n","import { IPoint, PointExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n//TODO: Implement this class\nexport class NodeResizeByChildDragHandler implements IDraggableItem {\n\n private onPointerDownPosition: IPoint = PointExtensions.initialize();\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n\n }\n\n\n public move(difference: IPoint): void {\n\n }\n\n public complete(): void {\n\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from './create-move-nodes-drag-model-from-selection.request';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { NodeDragHandler } from '../node.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { FConnectorBase } from '../../../f-connectors';\nimport { INodeWithDistanceRestrictions } from './i-node-with-distance-restrictions';\nimport { GetNodeMoveRestrictionsRequest, INodeMoveRestrictions } from './domain/get-node-move-restrictions';\nimport { PutOutputConnectionHandlersToArrayRequest } from './domain/put-output-connection-handlers-to-array';\nimport {\n PutInputConnectionHandlersToArrayRequest\n} from './domain/put-input-connection-handlers-to-array';\nimport { NodeResizeByChildDragHandler } from '../node-resize-by-child.drag-handler';\nimport { GetParentNodesRequest, IsArrayHasParentNodeRequest } from '../../domain';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../../domain';\nimport { flatMap } from '@foblex/utils';\n\n@Injectable()\n@FExecutionRegister(CreateMoveNodesDragModelFromSelectionRequest)\nexport class CreateMoveNodesDragModelFromSelectionExecution\n implements IExecution<CreateMoveNodesDragModelFromSelectionRequest, IDraggableItem[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: CreateMoveNodesDragModelFromSelectionRequest): IDraggableItem[] {\n const itemsToDrag = this.getNodesWithRestrictions(this.getSelectedNodes());\n return this.getDragHandlersWithConnections(\n this.getDragHandlersFromNodes(itemsToDrag),\n this.getAllOutputIds(itemsToDrag),\n this.getAllInputIds(itemsToDrag)\n );\n }\n\n private getSelectedNodes(): FNodeBase[] {\n return this.fDraggableDataContext.selectedItems\n .map((x) => this.fComponentsStore.findNode(x.hostElement))\n .filter((x): x is FNodeBase => !!x);\n }\n\n private getNodesWithRestrictions(selectedNodes: FNodeBase[]): INodeWithDistanceRestrictions[] {\n const result: INodeWithDistanceRestrictions[] = [];\n\n selectedNodes.forEach((x) => {\n const hasParentNodeInSelected = this.fMediator.send<boolean>(new IsArrayHasParentNodeRequest(x, selectedNodes));\n const restrictions = this.fMediator.send<INodeMoveRestrictions>(new GetNodeMoveRestrictionsRequest(x, hasParentNodeInSelected));\n const parentNodes = this.fMediator.send<FNodeBase[]>(new GetParentNodesRequest(x));\n result.push({ node: x, parentNodes, ...restrictions }, ...this.getChildrenItemsToDrag(x, restrictions));\n });\n\n return result;\n }\n\n private getChildrenItemsToDrag(node: FNodeBase, restrictions: INodeMoveRestrictions): INodeWithDistanceRestrictions[] {\n return this.getChildrenNodes(node.fId).map((x) => ({ node: x, ...restrictions }));\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private getAllOutputIds(items: INodeWithDistanceRestrictions[]): string[] {\n return flatMap(items, (item: INodeWithDistanceRestrictions) => this.getOutputsForNode(item.node).map((x) => x.id));\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getAllInputIds(items: INodeWithDistanceRestrictions[]): string[] {\n return flatMap(items, (item: INodeWithDistanceRestrictions) => this.getInputsForNode(item.node).map((x) => x.id));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getDragHandlersFromNodes(items: INodeWithDistanceRestrictions[]): IDraggableItem[] {\n let result: IDraggableItem[] = [];\n\n items.forEach((node) => {\n result.push(\n new NodeDragHandler(this.fDraggableDataContext, node.node, node.min, node.max),\n ...(node.parentNodes || []).map((parent) => new NodeResizeByChildDragHandler(this.fDraggableDataContext))\n );\n });\n return result;\n }\n\n private getDragHandlersWithConnections(\n handlers: IDraggableItem[], outputIds: string[], inputIds: string[]\n ): IDraggableItem[] {\n let result: IDraggableItem[] = handlers;\n handlers.filter((x) => x instanceof NodeDragHandler).forEach((dragHandler) => {\n this.fMediator.send(new PutOutputConnectionHandlersToArrayRequest(dragHandler as NodeDragHandler, inputIds, result));\n this.fMediator.send(new PutInputConnectionHandlersToArrayRequest(dragHandler as NodeDragHandler, outputIds, result));\n });\n return result;\n }\n}\n","import { CreateMoveNodesDragModelFromSelectionExecution } from './create-move-nodes-drag-model-from-selection.execution';\nimport { GetNodeMoveRestrictionsExecution } from './domain/get-node-move-restrictions';\nimport { PutInputConnectionHandlersToArrayExecution } from './domain/put-input-connection-handlers-to-array';\nimport { PutOutputConnectionHandlersToArrayExecution } from './domain/put-output-connection-handlers-to-array';\n\nexport const CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS = [\n\n GetNodeMoveRestrictionsExecution,\n\n PutInputConnectionHandlersToArrayExecution,\n\n PutOutputConnectionHandlersToArrayExecution,\n\n CreateMoveNodesDragModelFromSelectionExecution,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeMovePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMovePreparationRequest } from './node-move-preparation.request';\nimport { ITransformModel, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { NodeDragHandler } from '../node.drag-handler';\nimport { FNodeBase } from '../../../f-node';\nimport { CreateMoveNodesDragModelFromSelectionRequest } from '../create-move-nodes-drag-model-from-selection';\nimport { SelectAndUpdateNodeLayerRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(NodeMovePreparationRequest)\nexport class NodeMovePreparationExecution implements IExecution<NodeMovePreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: NodeMovePreparationRequest): void {\n this.selectAndUpdateNodeLayer(request.event.targetElement);\n\n const itemsToDrag: IDraggableItem[] = this.createDragModelFromSelection();\n\n this.initializeLineAlignment(this.filterNodesFromDraggableItems(itemsToDrag));\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.draggableItems = itemsToDrag;\n }\n\n private selectAndUpdateNodeLayer(targetElement: HTMLElement) {\n this.fMediator.send(\n new SelectAndUpdateNodeLayerRequest(this.getNode(targetElement))\n );\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase {\n return this.fComponentsStore.findNode(targetElement)!;\n }\n\n private createDragModelFromSelection(): IDraggableItem[] {\n return this.fMediator.send(new CreateMoveNodesDragModelFromSelectionRequest());\n }\n\n private initializeLineAlignment(nodesToDrag: FNodeBase[]): void {\n this.fDraggableDataContext.fLineAlignment?.initialize(\n this.fComponentsStore.fNodes,\n nodesToDrag\n );\n }\n\n private filterNodesFromDraggableItems(items: IDraggableItem[]): FNodeBase[] {\n return items.filter((x) => x instanceof NodeDragHandler).map(x => (x as NodeDragHandler).fNode);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMovePreparationRequest } from './node-move-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\nimport { isClosestElementHasClass } from '@foblex/utils';\n\n@Injectable()\n@FValidatorRegister(NodeMovePreparationRequest)\nexport class NodeMovePreparationValidator implements IValidator<NodeMovePreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeMovePreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isDragHandleElement(request.event.targetElement)\n && this.isNodeCanBeDragged(this.getNode(request.event.targetElement));\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n return this.fComponentsStore.findNode(targetElement);\n }\n\n private isNodeCanBeDragged(node: FNodeBase | undefined): boolean {\n return !!node && !node.fDraggingDisabled;\n }\n\n private isDragHandleElement(targetElement: HTMLElement): boolean {\n return isClosestElementHasClass(targetElement, '.f-drag-handle');\n }\n}\n","import { NodeMovePreparationExecution } from './node-move-preparation.execution';\nimport { NodeMovePreparationValidator } from './node-move-preparation.validator';\n\nexport const NODE_MOVE_PREPARATION_PROVIDERS = [\n\n NodeMovePreparationExecution,\n\n NodeMovePreparationValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeMoveFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","export class IsConnectionUnderNodeRequest {\n\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMoveFinalizeRequest } from './node-move-finalize.request';\nimport { IPoint, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n IsConnectionUnderNodeRequest\n} from '../../../domain/is-connection-under-node/is-connection-under-node.request';\n\n@Injectable()\n@FExecutionRegister(NodeMoveFinalizeRequest)\nexport class NodeMoveFinalizeExecution implements IExecution<NodeMoveFinalizeRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: NodeMoveFinalizeRequest): void {\n const difference = this.getDifferenceWithLineAlignment(\n this.getDifferenceBetweenPreparationAndFinalize(request.event.getPosition())\n );\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.move({ ...difference });\n x.complete?.();\n });\n this.fMediator.send(new IsConnectionUnderNodeRequest());\n this.fDraggableDataContext.fLineAlignment?.complete();\n }\n\n private getDifferenceBetweenPreparationAndFinalize(position: IPoint): Point {\n return Point.fromPoint(position).elementTransform(this.flowHost)\n .div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n }\n\n private getDifferenceWithLineAlignment(difference: IPoint): IPoint {\n const intersection = this.fDraggableDataContext.fLineAlignment?.findNearestCoordinate(difference);\n if (intersection) {\n difference.x = intersection.xResult.value ? (difference.x - intersection.xResult.distance!) : difference.x;\n difference.y = intersection.yResult.value ? (difference.y - intersection.yResult.distance!) : difference.y;\n }\n return difference;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeMoveFinalizeRequest } from './node-move-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeDragHandler } from '../node.drag-handler';\n\n@Injectable()\n@FValidatorRegister(NodeMoveFinalizeRequest)\nexport class NodeMoveFinalizeValidator implements IValidator<NodeMoveFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeMoveFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) => x instanceof NodeDragHandler);\n }\n}\n","import { NodeMoveFinalizeExecution } from './node-move-finalize.execution';\nimport { NodeMoveFinalizeValidator } from './node-move-finalize.validator';\n\nexport const NODE_MOVE_FINALIZE_PROVIDERS = [\n\n NodeMoveFinalizeExecution,\n\n NodeMoveFinalizeValidator,\n];\n","import { CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS } from './create-move-nodes-drag-model-from-selection';\nimport { NODE_MOVE_FINALIZE_PROVIDERS } from './node-move-finalize';\nimport { NODE_MOVE_PREPARATION_PROVIDERS } from './node-move-preparation';\n\nexport const NODE_PROVIDERS = [\n\n ...CREATE_MOVE_NODE_DRAG_MODEL_FROM_SELECTION_PROVIDERS,\n\n ...NODE_MOVE_FINALIZE_PROVIDERS,\n\n ...NODE_MOVE_PREPARATION_PROVIDERS,\n];\n","import { IRect } from '@foblex/2d';\n\nexport class ApplyChildResizeRestrictionsRequest {\n\n constructor(\n public rect: IRect,\n public restrictionsRect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplyChildResizeRestrictionsRequest } from './apply-child-resize-restrictions.request';\nimport { IRect } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\nconst OFFSET = 0;\n\n@Injectable()\n@FExecutionRegister(ApplyChildResizeRestrictionsRequest)\nexport class ApplyChildResizeRestrictionsExecution\n implements IExecution<ApplyChildResizeRestrictionsRequest, void> {\n\n public handle(request: ApplyChildResizeRestrictionsRequest): void {\n this.applyRestrictions(request.rect, request.restrictionsRect);\n }\n\n private applyRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.left(rect, restrictionsRect);\n this.top(rect, restrictionsRect);\n this.right(rect, restrictionsRect);\n this.bottom(rect, restrictionsRect);\n }\n\n private left(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x > restrictionsRect.x - OFFSET) {\n rect.width += rect.x - restrictionsRect.x - OFFSET;\n rect.x = restrictionsRect.x - OFFSET;\n }\n }\n\n private top(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y > restrictionsRect.y - OFFSET) {\n rect.height += rect.y - restrictionsRect.y - OFFSET;\n rect.y = restrictionsRect.y - OFFSET;\n }\n }\n\n private right(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x + rect.width <= restrictionsRect.x + restrictionsRect.width + OFFSET) {\n rect.width = restrictionsRect.x + restrictionsRect.width - rect.x + OFFSET;\n }\n }\n\n private bottom(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y + rect.height <= restrictionsRect.y + restrictionsRect.height + OFFSET) {\n rect.height = restrictionsRect.y + restrictionsRect.height - rect.y + OFFSET;\n }\n }\n}\n","import { IRect } from '@foblex/2d';\n\nexport class ApplyParentResizeRestrictionsRequest {\n\n constructor(\n public rect: IRect,\n public restrictionsRect: IRect,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApplyParentResizeRestrictionsRequest } from './apply-parent-resize-restrictions.request';\nimport { IRect } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\nconst OFFSET = 0;\n\n@Injectable()\n@FExecutionRegister(ApplyParentResizeRestrictionsRequest)\nexport class ApplyParentResizeRestrictionsExecution\n implements IExecution<ApplyParentResizeRestrictionsRequest, void> {\n\n public handle(request: ApplyParentResizeRestrictionsRequest): void {\n this.applyRestrictions(request.rect, request.restrictionsRect);\n }\n\n private applyRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.left(rect, restrictionsRect);\n this.top(rect, restrictionsRect);\n this.right(rect, restrictionsRect);\n this.bottom(rect, restrictionsRect);\n }\n\n private left(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x <= restrictionsRect.x + OFFSET) {\n rect.width -= restrictionsRect.x - rect.x + OFFSET;\n rect.x = restrictionsRect.x + OFFSET;\n }\n }\n\n private top(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y <= restrictionsRect.y + OFFSET) {\n rect.height -= restrictionsRect.y - rect.y + OFFSET;\n rect.y = restrictionsRect.y + OFFSET;\n }\n }\n\n private right(rect: IRect, restrictionsRect: IRect): void {\n if (rect.x + rect.width > restrictionsRect.x + restrictionsRect.width - OFFSET) {\n rect.width = restrictionsRect.x + restrictionsRect.width - rect.x - OFFSET;\n }\n }\n\n private bottom(rect: IRect, restrictionsRect: IRect): void {\n if (rect.y + rect.height > restrictionsRect.y + restrictionsRect.height - OFFSET) {\n rect.height = restrictionsRect.y + restrictionsRect.height - rect.y - OFFSET;\n }\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { EFResizeHandleType } from '../../../f-node';\n\nexport class CalculateChangedPositionRequest {\n\n constructor(\n public originalRect: IRect,\n public changedRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { EFResizeHandleType } from '../../f-node';\n\nexport const RESIZE_DIRECTIONS = {\n\n [ EFResizeHandleType.LEFT_TOP ]: { x: -1, y: -1 },\n\n [ EFResizeHandleType.RIGHT_TOP ]: { x: 1, y: -1 },\n\n [ EFResizeHandleType.RIGHT_BOTTOM ]: { x: 1, y: 1 },\n\n [ EFResizeHandleType.LEFT_BOTTOM ]: { x: -1, y: 1 },\n};\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedPositionRequest } from './calculate-changed-position.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedPositionRequest)\nexport class CalculateChangedPositionExecution\n implements IExecution<CalculateChangedPositionRequest, IRect> {\n\n public handle(request: CalculateChangedPositionRequest): IRect {\n return this.change(request.originalRect, request.difference, RESIZE_DIRECTIONS[request.fResizeHandleType], request.changedRect);\n }\n\n private change(originalRect: IRect, difference: IPoint, direction: IPoint, changedRect: IRect): IRect {\n return RectExtensions.initialize(\n originalRect.x + (direction.x === -1 ? difference.x : 0) + changedRect.x,\n originalRect.y + (direction.y === -1 ? difference.y : 0) + changedRect.y,\n changedRect.width,\n changedRect.height\n );\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { EFResizeHandleType } from '../../../f-node';\n\nexport class CalculateChangedSizeRequest {\n\n constructor(\n public originalRect: IRect,\n public difference: IPoint,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size.request';\nimport { IPoint, IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { RESIZE_DIRECTIONS } from '../resize-direction';\n\n@Injectable()\n@FExecutionRegister(CalculateChangedSizeRequest)\nexport class CalculateChangedSizeExecution\n implements IExecution<CalculateChangedSizeRequest, IRect> {\n\n public handle(request: CalculateChangedSizeRequest): IRect {\n return this.change(\n request.originalRect,\n request.difference,\n RESIZE_DIRECTIONS[request.fResizeHandleType],\n );\n }\n\n private change(rect: IRect, difference: IPoint, direction: IPoint): IRect {\n const result = RectExtensions.initialize(\n 0, 0,\n rect.width + direction.x * difference.x,\n rect.height + direction.y * difference.y\n );\n\n\n if (result.width < 0) {\n result.x = result.width;\n result.width = Math.abs(result.width);\n }\n\n if (result.height < 0) {\n result.y = result.height;\n result.height = Math.abs(result.height);\n }\n\n return RectExtensions.copy(result);\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class GetNormalizedChildrenNodesRectRequest {\n\n constructor(\n public fNode: FNodeBase,\n public paddings: [ number, number, number, number ]\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNormalizedChildrenNodesRectRequest } from './get-normalized-children-nodes-rect.request';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../../f-node';\nimport { GetNormalizedNodeRectRequest } from '../../domain';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../../domain';\n\n@Injectable()\n@FExecutionRegister(GetNormalizedChildrenNodesRectRequest)\nexport class GetNormalizedChildrenNodesRectExecution\n implements IExecution<GetNormalizedChildrenNodesRectRequest, IRect | null> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNormalizedChildrenNodesRectRequest): IRect | null {\n const childNodeRect = RectExtensions.union(\n this.getChildrenNodes(request.fNode.fId).map((x) => this.normalizeRect(x))\n );\n return childNodeRect ?\n this.concatRectWithParentPadding(childNodeRect, request.paddings) : null;\n }\n\n private getChildrenNodes(fId: string): FNodeBase[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId));\n }\n\n private normalizeRect(node: FNodeBase): IRect {\n return this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(node));\n }\n\n private concatRectWithParentPadding(rect: IRect, padding: [ number, number, number, number ]): IRect {\n return RectExtensions.initialize(\n rect.x - padding[0],\n rect.y - padding[1],\n rect.width + padding[0] + padding[2],\n rect.height + + padding[1] + padding[3]\n );\n }\n}\n","import { FNodeBase } from '../../../f-node';\nimport { IRect } from '@foblex/2d';\n\nexport class GetNodeResizeRestrictionsRequest {\n\n constructor(\n public fNode: FNodeBase,\n public rect: IRect\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetNodeResizeRestrictionsRequest } from './get-node-resize-restrictions.request';\nimport { IRect, SizeExtensions } from '@foblex/2d';\nimport { INodeResizeRestrictions } from './i-node-resize-restrictions';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetNodePaddingRequest, GetNormalizedParentNodeRectRequest } from '../../domain';\nimport { GetNormalizedChildrenNodesRectRequest } from '../get-normalized-children-nodes-rect';\nimport { FNodeBase } from '../../../f-node';\n\n\n@Injectable()\n@FExecutionRegister(GetNodeResizeRestrictionsRequest)\nexport class GetNodeResizeRestrictionsExecution\n implements IExecution<GetNodeResizeRestrictionsRequest, INodeResizeRestrictions> {\n\n constructor(\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: GetNodeResizeRestrictionsRequest): INodeResizeRestrictions {\n const fNodePaddings = this.getNodePaddings(request.fNode, request.rect);\n const childRect = this.fMediator.send<IRect | null>(new GetNormalizedChildrenNodesRectRequest(request.fNode, fNodePaddings));\n const parentRect = this.fMediator.send<IRect>(new GetNormalizedParentNodeRectRequest(request.fNode));\n\n return {\n parentRect,\n childRect,\n minSize: SizeExtensions.initialize(fNodePaddings[0] + fNodePaddings[2], fNodePaddings[1] + fNodePaddings[3])\n }\n }\n\n private getNodePaddings(node: FNodeBase, rect: IRect): [ number, number, number, number ] {\n return this.fMediator.send<[ number, number, number, number ]>(new GetNodePaddingRequest(node, rect));\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeResizeFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizeFinalizeRequest } from './node-resize-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\n\n@Injectable()\n@FExecutionRegister(NodeResizeFinalizeRequest)\nexport class NodeResizeFinalizeExecution implements IExecution<NodeResizeFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: NodeResizeFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","import { IPoint, IRect, ISize, RectExtensions } from '@foblex/2d';\nimport { IDraggableItem } from '../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../f-node';\nimport { FMediator } from '@foblex/mediator';\nimport { GetNormalizedNodeRectRequest } from '../domain';\nimport { GetNodeResizeRestrictionsRequest, INodeResizeRestrictions } from './get-node-resize-restrictions';\nimport { ApplyChildResizeRestrictionsRequest } from './apply-child-resize-restrictions';\nimport { CalculateChangedSizeRequest } from './calculate-changed-size';\nimport { CalculateChangedPositionRequest } from './calculate-changed-position';\nimport { ApplyParentResizeRestrictionsRequest } from './apply-parent-resize-restrictions';\n\nexport class NodeResizeDragHandler implements IDraggableItem {\n\n private originalRect!: IRect;\n\n private restrictions!: INodeResizeRestrictions;\n\n private childRestrictions: (rect: IRect, restrictionsRect: IRect) => void = () => {\n };\n\n constructor(\n private fMediator: FMediator,\n public fNode: FNodeBase,\n public fResizeHandleType: EFResizeHandleType,\n ) {\n }\n\n public initialize(): void {\n this.originalRect = this.fMediator.send<IRect>(new GetNormalizedNodeRectRequest(this.fNode));\n\n this.restrictions = this.fMediator.send<INodeResizeRestrictions>(new GetNodeResizeRestrictionsRequest(this.fNode, this.originalRect));\n if (this.restrictions.childRect) {\n this.childRestrictions = (rect: IRect, restrictionsRect: IRect) => {\n this.applyChildRestrictions(rect, restrictionsRect);\n };\n }\n }\n\n public move(difference: IPoint): void {\n const changedRect = this.changePosition(difference, this.changeSize(difference, this.restrictions.minSize));\n\n this.childRestrictions(changedRect, this.restrictions.childRect!);\n this.applyParentRestrictions(changedRect, this.restrictions.parentRect);\n\n this.fNode.updatePosition(changedRect);\n this.fNode.updateSize(changedRect);\n this.fNode.redraw();\n }\n\n private changeSize(difference: IPoint, minSize: ISize): IRect {\n return this.fMediator.send<IRect>(\n new CalculateChangedSizeRequest(this.originalRect, difference, this.fResizeHandleType)\n );\n }\n\n private changePosition(difference: IPoint, changedRect: IRect): IRect {\n return this.fMediator.send<IRect>(\n new CalculateChangedPositionRequest(this.originalRect, changedRect, difference, this.fResizeHandleType)\n );\n }\n\n private applyChildRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.fMediator.send(\n new ApplyChildResizeRestrictionsRequest(rect, restrictionsRect)\n );\n }\n\n private applyParentRestrictions(rect: IRect, restrictionsRect: IRect): void {\n this.fMediator.send(\n new ApplyParentResizeRestrictionsRequest(rect, restrictionsRect)\n );\n }\n\n public complete(): void {\n this.fNode.sizeChange.emit(\n RectExtensions.initialize(\n this.fNode.position.x, this.fNode.position.y, this.fNode.size.width, this.fNode.size.height\n )\n );\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizeFinalizeRequest } from './node-resize-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\n\n@Injectable()\n@FValidatorRegister(NodeResizeFinalizeRequest)\nexport class NodeResizeFinalizeValidator implements IValidator<NodeResizeFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeResizeFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) =>\n x instanceof NodeResizeDragHandler\n );\n }\n}\n","import { NodeResizeFinalizeExecution } from './node-resize-finalize.execution';\nimport { NodeResizeFinalizeValidator } from './node-resize-finalize.validator';\n\nexport const NODE_RESIZE_FINALIZE_PROVIDERS = [\n\n NodeResizeFinalizeExecution,\n\n NodeResizeFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class NodeResizePreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizePreparationRequest } from './node-resize-preparation.request';\nimport { ITransformModel, Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport {\n SelectAndUpdateNodeLayerRequest,\n} from '../../../domain';\nimport { IDraggableItem } from '../../i-draggable-item';\nimport { EFResizeHandleType, FNodeBase } from '../../../f-node';\nimport { NodeResizeDragHandler } from '../node-resize.drag-handler';\nimport { getDataAttrValueFromClosestElementWithClass } from '@foblex/utils';\n\n@Injectable()\n@FExecutionRegister(NodeResizePreparationRequest)\nexport class NodeResizePreparationExecution implements IExecution<NodeResizePreparationRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: NodeResizePreparationRequest): void {\n this.selectAndUpdateNodeLayer(request.event.targetElement);\n\n const handleType = getDataAttrValueFromClosestElementWithClass(request.event.targetElement, 'fResizeHandleType', '.f-resize-handle');\n const itemsToDrag: IDraggableItem[] = [\n new NodeResizeDragHandler(\n this.fMediator,\n this.getNode(request.event.targetElement),\n EFResizeHandleType[ handleType as keyof typeof EFResizeHandleType ]\n )\n ];\n\n this.fDraggableDataContext.onPointerDownScale = this.transform.scale;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost).div(this.transform.scale);\n this.fDraggableDataContext.draggableItems = itemsToDrag;\n }\n\n private selectAndUpdateNodeLayer(targetElement: HTMLElement) {\n this.fMediator.send(\n new SelectAndUpdateNodeLayerRequest(this.getNode(targetElement))\n );\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase {\n return this.fComponentsStore.findNode(targetElement)!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NodeResizePreparationRequest } from './node-resize-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable-data-context';\nimport { FNodeBase } from '../../../f-node';\nimport { isClosestElementHasClass } from '@foblex/utils';\n\n@Injectable()\n@FValidatorRegister(NodeResizePreparationRequest)\nexport class NodeResizePreparationValidator implements IValidator<NodeResizePreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: NodeResizePreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isDragHandleElement(request.event.targetElement)\n && this.isNodeCanBeDragged(this.getNode(request.event.targetElement));\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private getNode(targetElement: HTMLElement): FNodeBase | undefined {\n return this.fComponentsStore.findNode(targetElement);\n }\n\n private isNodeCanBeDragged(node: FNodeBase | undefined): boolean {\n return !!node && !node.fDraggingDisabled;\n }\n\n private isDragHandleElement(targetElement: HTMLElement): boolean {\n return isClosestElementHasClass(targetElement, '.f-resize-handle');\n }\n}\n","import { NodeResizePreparationExecution } from './node-resize-preparation.execution';\nimport { NodeResizePreparationValidator } from './node-resize-preparation.validator';\n\nexport const NODE_RESIZE_PREPARATION_PROVIDERS = [\n\n NodeResizePreparationExecution,\n\n NodeResizePreparationValidator,\n];\n","import { NODE_RESIZE_FINALIZE_PROVIDERS } from './node-resize-finalize';\nimport { NODE_RESIZE_PREPARATION_PROVIDERS } from './node-resize-preparation';\nimport { GetNodeResizeRestrictionsExecution } from './get-node-resize-restrictions';\nimport { ApplyChildResizeRestrictionsExecution } from './apply-child-resize-restrictions';\nimport { ApplyParentResizeRestrictionsExecution } from './apply-parent-resize-restrictions';\nimport { CalculateChangedSizeExecution } from './calculate-changed-size';\nimport { CalculateChangedPositionExecution } from './calculate-changed-position';\nimport { GetNormalizedChildrenNodesRectExecution } from './get-normalized-children-nodes-rect';\n\nexport const NODE_RESIZE_PROVIDERS = [\n\n ApplyChildResizeRestrictionsExecution,\n\n ApplyParentResizeRestrictionsExecution,\n\n CalculateChangedPositionExecution,\n\n CalculateChangedSizeExecution,\n\n GetNormalizedChildrenNodesRectExecution,\n\n GetNodeResizeRestrictionsExecution,\n\n ...NODE_RESIZE_FINALIZE_PROVIDERS,\n\n ...NODE_RESIZE_PREPARATION_PROVIDERS,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class SingleSelectRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { SingleSelectRequest } from './single-select.request';\nimport { UpdateItemAndChildrenLayersRequest } from '../../domain';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FConnectionBase } from '../../f-connection';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\nimport { EOperationSystem, PlatformService } from '@foblex/platform';\nimport { ICanChangeSelection } from '../../mixins';\n\n@Injectable()\n@FExecutionRegister(SingleSelectRequest)\nexport class SingleSelectExecution implements IExecution<SingleSelectRequest, void> {\n\n constructor(\n private fPlatform: PlatformService,\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: SingleSelectRequest): void {\n const { event } = request;\n\n const item = this.getSelectableItem(event);\n if (item) {\n this.fMediator.send<void>(new UpdateItemAndChildrenLayersRequest(item, item.hostElement.parentElement!));\n }\n\n this.isMultiselectEnabled(event) ? this.multiSelect(item) : this.singleSelect(item);\n }\n\n private getSelectableItem(event: IPointerEvent): ICanChangeSelection | undefined {\n return this.fComponentsStore.findNode(event.targetElement) || this.getConnectionHandler(event.targetElement);\n }\n\n private getConnectionHandler(element: HTMLElement | SVGElement): FConnectionBase | undefined {\n return this.fComponentsStore.fConnections.find(c => c.isContains(element) || c.fConnectionCenter?.nativeElement?.contains(element));\n }\n\n private isMultiselectEnabled(event: IPointerEvent): boolean {\n return this.isCommandButton(this.fPlatform.getOS()!, event.originalEvent) ||\n this.isShiftPressed(event.originalEvent);\n }\n\n private isShiftPressed(event: { shiftKey: boolean }): boolean {\n return event.shiftKey;\n }\n\n private isCommandButton(platform: EOperationSystem, event: { metaKey: boolean, ctrlKey: boolean }): boolean {\n return platform === EOperationSystem.MAC_OS ? event.metaKey : event.ctrlKey;\n }\n\n private singleSelect(item: ICanChangeSelection | undefined): void {\n if (item) {\n if (!item.isSelected() && !item.fSelectionDisabled) {\n this.clearSelection();\n this.selectItem(item);\n }\n } else {\n this.clearSelection();\n }\n }\n\n private multiSelect(item: ICanChangeSelection | undefined): void {\n if (item && !item.fSelectionDisabled) {\n item.isSelected() ? this.deselectItem(item) : this.selectItem(item);\n }\n }\n\n private deselectItem(item: ICanChangeSelection): void {\n const index = this.fDraggableDataContext.selectedItems.indexOf(item);\n if (index > -1) {\n this.fDraggableDataContext.selectedItems.splice(index, 1);\n }\n item.deselect();\n this.fDraggableDataContext.markSelectionAsChanged();\n }\n\n private selectItem(item: ICanChangeSelection): void {\n this.fDraggableDataContext.selectedItems.push(item);\n item.select();\n this.fDraggableDataContext.markSelectionAsChanged();\n }\n\n private clearSelection(): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n this.fDraggableDataContext.markSelectionAsChanged();\n });\n this.fDraggableDataContext.selectedItems = [];\n }\n}\n","import { Injectable } from '@angular/core';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { SingleSelectRequest } from './single-select.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../f-draggable-data-context';\n\n@Injectable()\n@FValidatorRegister(SingleSelectRequest)\nexport class SingleSelectValidator implements IValidator<SingleSelectRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SingleSelectRequest): boolean {\n return this.fComponentsStore.fFlow!.hostElement.contains(request.event.targetElement)\n && !this.fDraggableDataContext.draggableItems.length;\n }\n}\n","import { SingleSelectExecution } from './single-select.execution';\nimport { SingleSelectValidator } from './single-select.validator';\n\nexport const SINGLE_SELECT_PROVIDERS = [\n\n SingleSelectExecution,\n\n SingleSelectValidator\n];\n","import { Directive, EventEmitter, } from '@angular/core';\nimport { FCreateConnectionEvent, FReassignConnectionEvent } from './connections';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FCreateNodeEvent } from '../f-external-item';\nimport { DragAndDropBase, ICanRunOutsideAngular } from '@foblex/drag-toolkit';\n\n@Directive()\nexport abstract class FDraggableBase extends DragAndDropBase {\n\n public abstract fSelectionChange: EventEmitter<FSelectionChangeEvent>;\n\n public abstract fCreateNode: EventEmitter<FCreateNodeEvent>;\n\n public abstract fReassignConnection: EventEmitter<FReassignConnectionEvent>;\n\n public abstract fCreateConnection: EventEmitter<FCreateConnectionEvent>;\n\n protected constructor(\n ngZone: ICanRunOutsideAngular | undefined\n ) {\n super(ngZone);\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ExternalItemFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { IRect } from '@foblex/2d';\n\nexport class FCreateNodeEvent<TData = any> {\n\n constructor(\n public rect: IRect,\n public data: TData,\n ) {\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { ExternalItemFinalizeRequest } from './external-item-finalize.request';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\nimport { FCreateNodeEvent } from '../f-create-node.event';\nimport { GetElementRectInFlowRequest } from '../../../domain';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ExternalItemFinalizeRequest)\nexport class ExternalItemFinalizeExecution implements IExecution<ExternalItemFinalizeRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n private get fCreateNode(): EventEmitter<FCreateNodeEvent> {\n return this.fComponentsStore.fDraggable!.fCreateNode;\n }\n\n private get dragHandler(): ExternalItemDragHandler {\n return this.fDraggableDataContext.draggableItems[ 0 ] as ExternalItemDragHandler;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ExternalItemFinalizeRequest): void {\n this.emitEvent(\n this.getExternalItemElementsFromPoint(request.event.getPosition())\n );\n\n this.dragHandler.complete();\n }\n\n private getExternalItemElementsFromPoint(position: IPoint): HTMLElement[] {\n return this.fBrowser.document.elementsFromPoint(position.x, position.y)\n .filter(x => !x.closest('.f-external-item')) as HTMLElement[];\n }\n\n private emitEvent(elements: HTMLElement[]): void {\n if (this.isPointerInCanvasRect(elements)) {\n this.fCreateNode.emit(\n new FCreateNodeEvent(this.getRectInCanvas(), this.dragHandler.externalItem.fData)\n );\n }\n }\n\n private isPointerInCanvasRect(elements: HTMLElement[]): boolean {\n return elements.length ? this.flowHost.contains(elements[ 0 ]) : false;\n }\n\n private getRectInCanvas(): IRect {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(this.dragHandler.placeholder!));\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { FExternalItemBase } from '../index';\nimport { IDraggableItem } from '../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\nimport { deepCloneNode } from '@foblex/utils';\n\nexport class ExternalItemDragHandler implements IDraggableItem {\n\n public placeholder: HTMLElement | SVGElement | undefined;\n\n private onPointerDownRect: IRect = RectExtensions.initialize();\n\n private difference: IPoint = PointExtensions.initialize();\n\n constructor(\n public externalItem: FExternalItemBase,\n private fBrowser: BrowserService\n ) {\n }\n\n private getStyle(position: IPoint): string {\n return `position: absolute; left: 0; top: 0; transform: translate(${ position.x }px, ${ position.y }px)`;\n }\n\n public initialize(): void {\n this.onPointerDownRect = this.getExternalItemRect();\n this.placeholder = deepCloneNode(this.externalItem.hostElement);\n this.placeholder.setAttribute('style', this.getStyle(Point.fromPoint(this.onPointerDownRect)));\n this.fBrowser.document.body.appendChild(this.placeholder);\n }\n\n private getExternalItemRect(): IRect {\n const rect = this.externalItem.hostElement.getBoundingClientRect();\n const scrollTop = this.fBrowser.window.pageYOffset || this.fBrowser.document.documentElement.scrollTop;\n const scrollLeft = this.fBrowser.window.pageXOffset || this.fBrowser.document.documentElement.scrollLeft;\n const offsetTop = rect.top + scrollTop;\n const offsetLeft = rect.left + scrollLeft;\n return RectExtensions.initialize(offsetLeft, offsetTop, rect.width, rect.height);\n }\n\n public move(difference: IPoint): void {\n this.difference = difference;\n const position = Point.fromPoint(this.onPointerDownRect).add(this.difference);\n this.placeholder!.setAttribute('style', this.getStyle(position));\n }\n\n public complete(): void {\n this.fBrowser.document.body.removeChild(this.placeholder!);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemFinalizeRequest } from './external-item-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\n\n\n@Injectable()\n@FValidatorRegister(ExternalItemFinalizeRequest)\nexport class ExternalItemFinalizeValidator implements IValidator<ExternalItemFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: ExternalItemFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof ExternalItemDragHandler\n );\n }\n}\n","import { ExternalItemFinalizeExecution } from './external-item-finalize.execution';\nimport { ExternalItemFinalizeValidator } from './external-item-finalize.validator';\n\nexport const EXTERNAL_ITEM_FINALIZE_PROVIDERS = [\n\n ExternalItemFinalizeExecution,\n\n ExternalItemFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class ExternalItemPreparationRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemPreparationRequest } from './external-item-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExternalItemBase, FExternalItemService, getExternalItem } from '../../index';\nimport { ExternalItemDragHandler } from '../external-item.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(ExternalItemPreparationRequest)\nexport class ExternalItemPreparationExecution implements IExecution<ExternalItemPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fExternalItemService: FExternalItemService,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: ExternalItemPreparationRequest): void {\n this.fDraggableDataContext.onPointerDownScale = 1;\n\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition()).elementTransform(this.flowHost);\n\n this.fDraggableDataContext.draggableItems = [\n new ExternalItemDragHandler(this.getExternalItem(request.event.targetElement), this.fBrowser)\n ];\n }\n\n private getExternalItem(targetElement: HTMLElement): FExternalItemBase<any> {\n return this.fExternalItemService.getItem(getExternalItem(targetElement))!;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ExternalItemPreparationRequest } from './external-item-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FExternalItemBase, FExternalItemService, getExternalItem, isExternalItem } from '../../index';\n\n@Injectable()\n@FValidatorRegister(ExternalItemPreparationRequest)\nexport class ExternalItemPreparationValidator implements IValidator<ExternalItemPreparationRequest> {\n\n\n constructor(\n private fExternalItemService: FExternalItemService\n ) {\n }\n\n public handle(request: ExternalItemPreparationRequest): boolean {\n const externalItem = this.getExternalItem(request.event.targetElement);\n return isExternalItem(request.event.targetElement) && !!externalItem && !externalItem.fDisabled;\n }\n\n private getExternalItem(targetElement: HTMLElement): FExternalItemBase<any> | undefined {\n return this.fExternalItemService.getItem(getExternalItem(targetElement));\n }\n}\n","import { ExternalItemPreparationExecution } from './external-item-preparation.execution';\nimport { ExternalItemPreparationValidator } from './external-item-preparation.validator';\n\nexport const EXTERNAL_ITEM_PREPARATION_PROVIDERS = [\n\n ExternalItemPreparationExecution,\n\n ExternalItemPreparationValidator,\n];\n","import { EXTERNAL_ITEM_PREPARATION_PROVIDERS } from './external-item-preparation';\nimport { EXTERNAL_ITEM_FINALIZE_PROVIDERS } from './external-item-finalize';\n\nexport const F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS = [\n\n ...EXTERNAL_ITEM_FINALIZE_PROVIDERS,\n\n ...EXTERNAL_ITEM_PREPARATION_PROVIDERS,\n];\n","import { Directive, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_EXTERNAL_ITEM = new InjectionToken<FExternalItemBase>('F_EXTERNAL_ITEM');\n\n@Directive()\nexport abstract class FExternalItemBase<TData = any> implements IHasHostElement {\n\n public abstract fExternalItemId: string;\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract fData: TData | undefined;\n\n public abstract fDisabled: boolean;\n}\n","export function isExternalItem(element: HTMLElement | SVGElement): boolean {\n return !!element.closest('[fExternalItem]');\n}\n\nexport function getExternalItem(element: HTMLElement | SVGElement): HTMLElement | SVGElement {\n return element.closest('[fExternalItem]') as HTMLElement | SVGElement;\n}\n","import { Injectable } from '@angular/core';\nimport { FExternalItemBase } from './f-external-item-base';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FExternalItemService {\n\n private items: FExternalItemBase[] = [];\n\n public registerItem(item: FExternalItemBase): void {\n this.items.push(item);\n }\n\n public getItem(element: HTMLElement | SVGElement): FExternalItemBase | undefined {\n return this.items.find(item => item.hostElement === element);\n }\n\n public removeItem(item: FExternalItemBase): void {\n const index = this.items.indexOf(item);\n if (index !== -1) {\n this.items.splice(index, 1);\n }\n }\n}\n","import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FExternalItemBase, F_EXTERNAL_ITEM } from './f-external-item-base';\nimport { FExternalItemService } from './f-external-item.service';\n\nlet uniqueId: number = 0;\n\n@Directive({\n selector: \"[fExternalItem]\",\n host: {\n '[attr.id]': 'fExternalItemId',\n class: \"f-component f-external-item\",\n '[class.f-external-item-disabled]': 'fDisabled',\n },\n providers: [\n { provide: F_EXTERNAL_ITEM, useExisting: FExternalItemDirective }\n ],\n})\nexport class FExternalItemDirective<TData> extends FExternalItemBase<TData> implements OnInit, OnDestroy {\n\n @Input()\n public override fExternalItemId: string = `f-external-item-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement | SVGElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public override fData: TData | undefined;\n\n @Input()\n public override fDisabled: boolean = false;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fExternalItemService: FExternalItemService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fExternalItemService.registerItem(this);\n this.disablePointerEvents(Array.from(this.hostElement.children) as HTMLElement[]);\n }\n\n private disablePointerEvents(children: HTMLElement[]): void {\n children.forEach((x) => {\n x.style.pointerEvents = 'none';\n this.disablePointerEvents(Array.from(x.children) as HTMLElement[]);\n });\n }\n\n public ngOnDestroy(): void {\n this.fExternalItemService.removeItem(this);\n }\n}\n","import { FExternalItemDirective } from './f-external-item.directive';\n\nexport const F_EXTERNAL_ITEM_PROVIDERS = [\n FExternalItemDirective\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { InjectionToken } from '@angular/core';\n\nexport const F_DRAG_AND_DROP_PLUGIN: InjectionToken<IFDragAndDropPlugin> = new InjectionToken<IFDragAndDropPlugin>('F_DRAG_AND_DROP_PLUGIN');\n\nexport interface IFDragAndDropPlugin {\n\n onSelect?(event: Event): void;\n\n onPointerDown?(event: IPointerEvent): void;\n\n prepareDragSequence?(event: IPointerEvent): void;\n\n onPointerUp?(event: IPointerEvent): void;\n}\n","import {\n AfterViewInit, ContentChildren,\n Directive,\n ElementRef,\n EventEmitter, Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit, Optional, Output, QueryList\n} from \"@angular/core\";\nimport { FDraggableBase } from './f-draggable-base';\nimport { FComponentsStore } from '../f-storage';\nimport { FDraggableDataContext } from './f-draggable-data-context';\nimport { Subscription } from 'rxjs';\nimport { IPoint, Point } from '@foblex/2d';\nimport { NodeMoveFinalizeRequest, NodeMovePreparationRequest } from './node';\nimport { CanvasMoveFinalizeRequest, CanvasMovePreparationRequest } from './canvas';\nimport {\n FCreateConnectionEvent,\n FReassignConnectionEvent,\n ReassignConnectionPreparationRequest,\n ReassignConnectionFinalizeRequest,\n CreateConnectionPreparationRequest,\n CreateConnectionFinalizeRequest\n} from './connections';\nimport { FSelectionChangeEvent } from './f-selection-change-event';\nimport { FMediator } from '@foblex/mediator';\nimport { EmitTransformChangesRequest, GetSelectionRequest } from '../domain';\nimport {\n ExternalItemFinalizeRequest,\n ExternalItemPreparationRequest,\n FCreateNodeEvent,\n isExternalItem\n} from '../f-external-item';\nimport { SingleSelectRequest } from './single-select';\nimport { NodeResizeFinalizeRequest, NodeResizePreparationRequest } from './node-resize';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from './i-f-drag-and-drop-plugin';\nimport { BrowserService } from '@foblex/platform';\nimport { ICanRunOutsideAngular, IPointerEvent } from '@foblex/drag-toolkit';\n\n@Directive({\n selector: \"f-flow[fDraggable]\",\n exportAs: 'fDraggable'\n})\nexport class FDraggableDirective extends FDraggableBase implements OnInit, AfterViewInit, OnDestroy {\n\n private subscriptions$: Subscription = new Subscription();\n\n @Input('fDraggableDisabled')\n public override disabled: boolean = false;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Output()\n public override fSelectionChange: EventEmitter<FSelectionChangeEvent> = new EventEmitter<FSelectionChangeEvent>();\n\n // @Output()\n // public override fConnectionIntersectNode: EventEmitter<ConnectionIntersectNodeEvent> = new EventEmitter<ConnectionIntersectNodeEvent>();\n\n @Output()\n public override fCreateNode: EventEmitter<FCreateNodeEvent> = new EventEmitter<FCreateNodeEvent>();\n\n @Output()\n public override fReassignConnection: EventEmitter<FReassignConnectionEvent> = new EventEmitter<FReassignConnectionEvent>();\n\n @Output()\n public override fCreateConnection: EventEmitter<FCreateConnectionEvent> = new EventEmitter<FCreateConnectionEvent>();\n\n @ContentChildren(F_DRAG_AND_DROP_PLUGIN, { descendants: true })\n private plugins!: QueryList<IFDragAndDropPlugin>;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fDraggableDataContext: FDraggableDataContext,\n @Inject(NgZone) @Optional() ngZone: ICanRunOutsideAngular,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n super(ngZone);\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fDraggable = this;\n }\n\n public ngAfterViewInit(): void {\n super.subscribe(this.fBrowser.document);\n }\n\n public override onPointerDown(event: IPointerEvent): boolean {\n this.fDraggableDataContext.reset();\n let result: boolean = event.isMouseLeftButton();\n\n this.plugins.forEach((p) => {\n p.onPointerDown?.(event);\n });\n\n this.fMediator.send<void>(new SingleSelectRequest(event));\n\n this.fMediator.send<void>(new ReassignConnectionPreparationRequest(event));\n\n this.fMediator.send<void>(new CreateConnectionPreparationRequest(event));\n\n if (!result) {\n this.finalizeDragSequence();\n }\n return result;\n }\n\n protected override prepareDragSequence(event: IPointerEvent) {\n\n this.plugins.forEach((p) => {\n p.prepareDragSequence?.(event);\n });\n\n this.fMediator.send<void>(new NodeResizePreparationRequest(event));\n\n this.fMediator.send<void>(new NodeMovePreparationRequest(event));\n\n this.fMediator.send<void>(new CanvasMovePreparationRequest(event));\n\n this.fMediator.send<void>(new ExternalItemPreparationRequest(event));\n\n this.fDraggableDataContext.draggableItems.forEach((item) => {\n item.initialize?.();\n });\n\n if (this.fDraggableDataContext.draggableItems.length > 0) {\n this.hostElement.classList.add('f-dragging');\n this.emitSelectionChangeEvent();\n }\n }\n\n protected override onSelect(event: Event): void {\n\n this.plugins.forEach((p) => {\n p.onSelect?.(event);\n });\n\n if (this.isTargetItemExternal(event)) {\n event.preventDefault();\n }\n }\n\n private isTargetItemExternal(event: Event): boolean {\n let isTargetItemExternal = this.isExternalItem(event.target as HTMLElement);\n let isTargetParentItemExternal = this.isExternalItem((event.target as Node).parentNode as HTMLElement);\n return isTargetItemExternal || isTargetParentItemExternal;\n }\n\n private isExternalItem(target: HTMLElement): boolean {\n let result = false;\n try {\n result = isExternalItem(target);\n } catch (e) {\n }\n return result;\n }\n\n public override onPointerMove(event: IPointerEvent): void {\n const pointerPositionInCanvas = Point.fromPoint(event.getPosition()).elementTransform(this.hostElement);\n const difference: IPoint = pointerPositionInCanvas.div(this.fDraggableDataContext.onPointerDownScale).sub(this.fDraggableDataContext.onPointerDownPosition);\n this.fDraggableDataContext.draggableItems.forEach((item) => {\n item.move({ ...difference });\n });\n }\n\n public override onPointerUp(event: IPointerEvent): void {\n\n this.plugins.forEach((p) => {\n p.onPointerUp?.(event);\n });\n\n this.fMediator.send<void>(new ReassignConnectionFinalizeRequest(event));\n\n this.fMediator.send<void>(new CreateConnectionFinalizeRequest(event));\n\n this.fMediator.send<void>(new NodeResizeFinalizeRequest(event));\n\n this.fMediator.send<void>(new NodeMoveFinalizeRequest(event));\n\n this.fMediator.send<void>(new CanvasMoveFinalizeRequest(event));\n\n this.fMediator.send<void>(new ExternalItemFinalizeRequest(event));\n\n this.hostElement.classList.remove('f-dragging');\n\n this.fDraggableDataContext.reset();\n }\n\n protected override finalizeDragSequence(): void {\n this.emitSelectionChangeEvent();\n }\n\n private emitSelectionChangeEvent(): void {\n if (\n !this.fDraggableDataContext.isSelectedChanged\n ) {\n return;\n }\n this.fSelectionChange.emit(this.fMediator.send<FSelectionChangeEvent>(new GetSelectionRequest()));\n this.fDraggableDataContext.isSelectedChanged = false;\n this.fMediator.send<void>(new EmitTransformChangesRequest());\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n this.subscriptions$.unsubscribe();\n }\n}\n\n","export class FSelectionChangeEvent {\n\n constructor(\n public nodes: string[],\n public connections: string[],\n ) {\n }\n}\n","import { IPoint, IRect } from '@foblex/2d';\nimport { FMinimapData } from '../f-minimap-data';\n\nexport class CalculateFlowPointFromMinimapPointRequest {\n\n constructor(\n public flowRect: IRect,\n public canvasPosition: IPoint,\n public eventPoint: IPoint,\n public minimap: FMinimapData\n ) {\n }\n}\n","import { IPoint, IRect, Point, PointExtensions, RectExtensions } from '@foblex/2d';\nimport { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FMinimapData } from '../f-minimap-data';\n\n@Injectable()\n@FExecutionRegister(CalculateFlowPointFromMinimapPointRequest)\nexport class CalculateFlowPointFromMinimapPointExecution\n implements IExecution<CalculateFlowPointFromMinimapPointRequest, IPoint> {\n\n private get canvasScale(): number {\n return this.fComponentsStore.fCanvas!.transform.scale;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(payload: CalculateFlowPointFromMinimapPointRequest): IPoint {\n return PointExtensions.sub(\n payload.canvasPosition,\n PointExtensions.sub(\n this.getPositionInViewBox(payload.eventPoint, payload.minimap),\n this.getNormalizedFlowCenter(payload.flowRect)\n )\n );\n }\n\n private getNormalizedFlowCenter(flowRect: IRect): IPoint {\n return Point.fromPoint(flowRect.gravityCenter).sub(flowRect);\n }\n\n private getPositionInViewBox(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n const eventPointInFlow = this.normalizeEventPoint(eventPoint, minimap);\n return PointExtensions.sum(\n eventPointInFlow,\n RectExtensions.mult(minimap.viewBox, this.canvasScale)\n );\n }\n\n public normalizeEventPoint(point: IPoint, minimap: FMinimapData): Point {\n return this.getEventPointInMinimap(point, minimap)\n .mult(minimap.scale).mult(this.canvasScale);\n }\n\n private getEventPointInMinimap(eventPoint: IPoint, minimap: FMinimapData): Point {\n return Point.fromPoint(eventPoint).elementTransform(minimap.element as unknown as HTMLElement);\n }\n}\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class MinimapDragFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragFinalizeRequest } from './minimap-drag-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(MinimapDragFinalizeRequest)\nexport class MinimapDragFinalizeExecution implements IExecution<MinimapDragFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: MinimapDragFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","import { IPoint, IRect, Point } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { IDraggableItem } from '../../f-draggable';\nimport { FMediator } from '@foblex/mediator';\nimport { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point';\nimport { FMinimapData } from './f-minimap-data';\n\nexport class FMinimapDragHandler implements IDraggableItem {\n\n private lastDifference: IPoint | null = null;\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private flowRect: IRect,\n private canvasPosition: IPoint,\n private eventPoint: IPoint,\n private minimap: FMinimapData\n ) {\n }\n\n public initialize(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.add('f-scaled-animate');\n }\n\n public move(difference: IPoint): void {\n if (this.lastDifference && this.isSamePoint(difference, this.lastDifference)) {\n return;\n }\n\n this.lastDifference = difference;\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(Point.fromPoint(this.eventPoint).add(difference)));\n this.fComponentsStore.fCanvas!.redraw();\n }\n\n private isSamePoint(point1: IPoint, point2: IPoint): boolean {\n return point1.x === point2.x && point1.y === point2.y;\n }\n\n private getNewPosition(eventPoint: IPoint): IPoint {\n return this.fMediator.send<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.flowRect, this.canvasPosition, eventPoint, this.minimap\n ));\n }\n\n public complete(): void {\n this.fComponentsStore.fCanvas?.hostElement.classList.remove('f-scaled-animate');\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragFinalizeRequest } from './minimap-drag-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\n\n@Injectable()\n@FValidatorRegister(MinimapDragFinalizeRequest)\nexport class MinimapDragFinalizeValidator implements IValidator<MinimapDragFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: MinimapDragFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some(\n (x) => x instanceof FMinimapDragHandler\n );\n }\n}\n","import { MinimapDragFinalizeExecution } from './minimap-drag-finalize.execution';\nimport { MinimapDragFinalizeValidator } from './minimap-drag-finalize.validator';\n\nexport const MINIMAP_DRAG_FINALIZE_PROVIDERS = [\n\n MinimapDragFinalizeExecution,\n\n MinimapDragFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FMinimapData } from '../f-minimap-data';\n\nexport class MinimapDragPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public minimap: FMinimapData\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragPreparationRequest } from './minimap-drag-preparation.request';\nimport { IPoint, IRect, Point, RectExtensions } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FMinimapDragHandler } from '../f-minimap.drag-handler';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { CalculateFlowPointFromMinimapPointRequest } from '../calculate-flow-point-from-minimap-point';\nimport { FMinimapData } from '../f-minimap-data';\n\n@Injectable()\n@FExecutionRegister(MinimapDragPreparationRequest)\nexport class MinimapDragPreparationExecution implements IExecution<MinimapDragPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: MinimapDragPreparationRequest): void {\n const eventPoint = request.event.getPosition();\n const startCanvasPosition = Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position);\n\n this.fComponentsStore.fCanvas!.setPosition(this.getNewPosition(eventPoint, request.minimap));\n this.fComponentsStore.fCanvas!.redraw();\n this.fComponentsStore.fCanvas!.emitCanvasChangeEvent();\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(eventPoint).elementTransform(this.flowHost);\n this.fDraggableDataContext.draggableItems = [\n new FMinimapDragHandler(\n this.fComponentsStore, this.fMediator, this.getFlowRect(),\n startCanvasPosition, eventPoint, request.minimap,\n )\n ];\n }\n\n private getNewPosition(eventPoint: IPoint, minimap: FMinimapData): IPoint {\n return this.fMediator.send<IPoint>(new CalculateFlowPointFromMinimapPointRequest(\n this.getFlowRect(),\n Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position),\n eventPoint, minimap,\n ));\n }\n\n private getFlowRect(): IRect {\n return RectExtensions.fromElement(this.flowHost);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { MinimapDragPreparationRequest } from './minimap-drag-preparation.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FComponentsStore } from '../../../f-storage';\n\n@Injectable()\n@FValidatorRegister(MinimapDragPreparationRequest)\nexport class MinimapDragPreparationValidator implements IValidator<MinimapDragPreparationRequest> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: MinimapDragPreparationRequest): boolean {\n return !this.fDraggableDataContext.draggableItems.length &&\n !!request.event.targetElement.closest('.f-minimap') &&\n this.fComponentsStore.flowHost.contains(request.event.targetElement);\n }\n}\n","import { MinimapDragPreparationExecution } from './minimap-drag-preparation.execution';\nimport { MinimapDragPreparationValidator } from './minimap-drag-preparation.validator';\n\nexport const MINIMAP_DRAG_PREPARATION_PROVIDERS = [\n\n MinimapDragPreparationExecution,\n\n MinimapDragPreparationValidator,\n];\n","import { IRect, RectExtensions } from '@foblex/2d';\n\nexport function checkRectIsFinite(rect: IRect): IRect {\n if (!Number.isFinite(rect.width) || !Number.isFinite(rect.height) || !Number.isFinite(rect.x) || !Number.isFinite(rect.y)) {\n return RectExtensions.initialize(0, 0, 0, 0);\n }\n return rect;\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\n\nexport class FMinimapData {\n\n constructor(\n public element: SVGSVGElement,\n public scale: number = 1,\n public viewBox: IRect = RectExtensions.initialize(0, 0, 0, 0)\n ) {\n }\n}\n","import { MINIMAP_DRAG_PREPARATION_PROVIDERS } from './minimap-drag-preparation';\nimport { MINIMAP_DRAG_FINALIZE_PROVIDERS } from './minimap-drag-finalize';\nimport { CalculateFlowPointFromMinimapPointExecution } from './calculate-flow-point-from-minimap-point';\n\nexport const F_MINIMAP_DRAG_AND_DROP_PROVIDERS = [\n\n CalculateFlowPointFromMinimapPointExecution,\n\n ...MINIMAP_DRAG_FINALIZE_PROVIDERS,\n\n ...MINIMAP_DRAG_PREPARATION_PROVIDERS,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\n\nexport class SelectionAreaFinalizeRequest {\n\n constructor(\n public event: IPointerEvent\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaFinalizeRequest } from './selection-area-finalize.request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaFinalizeRequest)\nexport class SelectionAreaFinalizeExecution implements IExecution<SelectionAreaFinalizeRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectionAreaFinalizeRequest): void {\n this.fDraggableDataContext.draggableItems.forEach((x) => {\n x.complete?.();\n });\n }\n}\n","export class GetCanBeSelectedItemsRequest {\n}\n","import { IPoint, Point, RectExtensions } from '@foblex/2d';\nimport { FComponentsStore } from '../../f-storage';\nimport { EmitTransformChangesRequest, ISelectableWithRect } from '../../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { GetCanBeSelectedItemsRequest } from '../../domain/get-can-be-selected-items/get-can-be-selected-items-request';\nimport { FDraggableDataContext, IDraggableItem } from '../../f-draggable';\nimport { FSelectionAreaBase } from '../f-selection-area-base';\nimport { ICanChangeSelection } from '../../mixins';\n\nexport class SelectionAreaDragHandle implements IDraggableItem {\n\n private canBeSelected: ISelectableWithRect[] = [];\n\n private selectedByMove: ICanChangeSelection[] = [];\n\n private get canvasPosition(): Point {\n return Point.fromPoint(this.fComponentsStore.fCanvas!.transform.position).add(this.fComponentsStore.fCanvas!.transform.scaledPosition);\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fSelectionArea: FSelectionAreaBase,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public initialize(): void {\n this.canBeSelected = this.fMediator.send(new GetCanBeSelectedItemsRequest());\n\n this.fSelectionArea.show();\n this.fSelectionArea.draw(\n RectExtensions.initialize(\n this.fDraggableDataContext.onPointerDownPosition.x,\n this.fDraggableDataContext.onPointerDownPosition.y\n )\n );\n }\n\n public move(difference: IPoint): void {\n const currentPoint = Point.fromPoint(difference).add(this.fDraggableDataContext.onPointerDownPosition);\n const x: number = Math.min(this.fDraggableDataContext.onPointerDownPosition.x, currentPoint.x);\n const y: number = Math.min(this.fDraggableDataContext.onPointerDownPosition.y, currentPoint.y);\n\n const width = Math.abs(difference.x);\n const height = Math.abs(difference.y);\n\n this.fSelectionArea.draw(\n RectExtensions.initialize(x, y, width, height)\n );\n this.selectedByMove = [];\n this.canBeSelected.forEach((item) => {\n item.element.deselect();\n\n const itemRect = RectExtensions.addPoint(item.rect, this.canvasPosition);\n\n const isIntersect = RectExtensions.intersectionWithRect(itemRect, RectExtensions.initialize(x, y, width, height));\n if (isIntersect) {\n\n item.element.select();\n this.selectedByMove.push(item.element);\n }\n });\n this.fMediator.send<void>(new EmitTransformChangesRequest());\n }\n\n public complete(): void {\n this.fSelectionArea.hide();\n this.fDraggableDataContext.selectedItems.push(...this.selectedByMove);\n if (this.selectedByMove.length > 0) {\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaFinalizeRequest } from './selection-area-finalize.request';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\n\n@Injectable()\n@FValidatorRegister(SelectionAreaFinalizeRequest)\nexport class SelectionAreaFinalizeValidator implements IValidator<SelectionAreaFinalizeRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SelectionAreaFinalizeRequest): boolean {\n return this.fDraggableDataContext.draggableItems.some((x) =>\n x instanceof SelectionAreaDragHandle\n );\n }\n}\n","import { SelectionAreaFinalizeExecution } from './selection-area-finalize.execution';\nimport { SelectionAreaFinalizeValidator } from './selection-area-finalize.validator';\n\nexport const SELECTION_AREA_FINALIZE_PROVIDERS = [\n\n SelectionAreaFinalizeExecution,\n\n SelectionAreaFinalizeValidator,\n];\n","import { IPointerEvent } from '@foblex/drag-toolkit';\nimport { FSelectionAreaBase } from '../../f-selection-area-base';\n\nexport class SelectionAreaPreparationRequest {\n\n constructor(\n public event: IPointerEvent,\n public fSelectionArea: FSelectionAreaBase\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaPreparationRequest } from './selection-area-preparation.request';\nimport { Point } from '@foblex/2d';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { SelectionAreaDragHandle } from '../selection-area.drag-handle';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectionAreaPreparationRequest)\nexport class SelectionAreaPreparationExecution implements IExecution<SelectionAreaPreparationRequest, void> {\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: SelectionAreaPreparationRequest): void {\n this.fDraggableDataContext.draggableItems = [\n new SelectionAreaDragHandle(\n this.fComponentsStore, request.fSelectionArea, this.fDraggableDataContext, this.fMediator\n )\n ];\n\n this.fDraggableDataContext.onPointerDownScale = 1;\n this.fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())\n .elementTransform(this.flowHost);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { SelectionAreaPreparationRequest } from './selection-area-preparation.request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { FValidatorRegister, IValidator } from '@foblex/mediator';\n\n@Injectable()\n@FValidatorRegister(SelectionAreaPreparationRequest)\nexport class SelectionAreaPreparationValidator implements IValidator<SelectionAreaPreparationRequest> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext\n ) {\n }\n\n public handle(request: SelectionAreaPreparationRequest): boolean {\n return this.isDragHandlesEmpty()\n && this.isShiftPressed(request.event.originalEvent);\n }\n\n private isDragHandlesEmpty(): boolean {\n return !this.fDraggableDataContext.draggableItems.length;\n }\n\n private isShiftPressed(event: { shiftKey: boolean }): boolean {\n return event.shiftKey;\n }\n}\n","import { SelectionAreaPreparationExecution } from './selection-area-preparation.execution';\nimport { SelectionAreaPreparationValidator } from './selection-area-preparation.validator';\n\nexport const SELECTION_AREA_PREPARATION_PROVIDERS = [\n\n SelectionAreaPreparationExecution,\n\n SelectionAreaPreparationValidator,\n];\n","import { SELECTION_AREA_FINALIZE_PROVIDERS } from './selection-area-finalize';\nimport { SELECTION_AREA_PREPARATION_PROVIDERS } from './selection-area-preparation';\n\nexport const F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS = [\n\n ...SELECTION_AREA_FINALIZE_PROVIDERS,\n\n ...SELECTION_AREA_PREPARATION_PROVIDERS\n];\n","import { IRect } from '@foblex/2d';\nimport { Directive } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\n@Directive()\nexport abstract class FSelectionAreaBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract hide(): void;\n\n public abstract show(): void;\n\n public abstract draw(object: IRect): void;\n}\n","import { Component, ElementRef, OnInit } from '@angular/core';\nimport { FSelectionAreaBase } from './f-selection-area-base';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { SelectionAreaFinalizeRequest, SelectionAreaPreparationRequest } from './domain';\n\n@Component({\n selector: \"f-selection-area\",\n template: ``,\n styleUrls: [ './f-selection-area.component.scss' ],\n host: {\n 'class': 'f-selection-area f-component'\n },\n providers: [\n { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FSelectionAreaComponent },\n ],\n})\nexport class FSelectionAreaComponent extends FSelectionAreaBase implements OnInit, IFDragAndDropPlugin {\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FMediator\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.hostElement.style.display = 'none';\n }\n\n public override hide(): void {\n this.hostElement.style.display = 'none';\n }\n\n public override show(): void {\n this.hostElement.style.display = 'block';\n }\n\n public override draw(object: IRect): void {\n const style = this.hostElement.style;\n style.left = object.x + 'px';\n style.top = object.y + 'px';\n style.width = object.width + 'px';\n style.height = object.height + 'px';\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this.fMediator.send(new SelectionAreaPreparationRequest(event, this));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this.fMediator.send(new SelectionAreaFinalizeRequest(event));\n }\n}\n","import { FSelectionAreaComponent } from './f-selection-area.component';\n\nexport const F_SELECTION_AREA_PROVIDERS = [\n\n FSelectionAreaComponent\n];\n","import { CANVAS_PROVIDERS } from './canvas';\nimport { CONNECTIONS_PROVIDERS } from './connections';\nimport { SINGLE_SELECT_PROVIDERS } from './single-select';\nimport { NODE_PROVIDERS } from './node';\nimport { NODE_RESIZE_PROVIDERS } from './node-resize';\nimport { F_MINIMAP_DRAG_AND_DROP_PROVIDERS } from '../f-minimap/domain';\nimport { F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS } from '../f-external-item';\nimport { F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS } from '../f-selection-area';\nimport { DRAG_AND_DROP_COMMON_PROVIDERS } from './domain';\n\nexport const F_DRAGGABLE_PROVIDERS = [\n\n ...CANVAS_PROVIDERS,\n\n ...CONNECTIONS_PROVIDERS,\n\n ...DRAG_AND_DROP_COMMON_PROVIDERS,\n\n ...SINGLE_SELECT_PROVIDERS,\n\n ...F_EXTERNAL_ITEM_DRAG_AND_DROP_PROVIDERS,\n\n ...NODE_PROVIDERS,\n\n ...NODE_RESIZE_PROVIDERS,\n\n ...F_SELECTION_AREA_DRAG_AND_DROP_PROVIDERS,\n\n ...F_MINIMAP_DRAG_AND_DROP_PROVIDERS\n];\n","import { ClearSelectionRequest } from './clear-selection.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(ClearSelectionRequest)\nexport class ClearSelectionExecution implements IExecution<ClearSelectionRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: ClearSelectionRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => x.deselect());\n this.fDraggableDataContext.selectedItems = [];\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class GetSelectionRequest {\n\n}\n","import { GetSelectionRequest } from './get-selection.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FDraggableDataContext, FSelectionChangeEvent } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(GetSelectionRequest)\nexport class GetSelectionExecution implements IExecution<GetSelectionRequest, FSelectionChangeEvent> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(): FSelectionChangeEvent {\n\n let selectedNodes: string[] = [];\n let selectedConnections: string[] = [];\n\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n if (x.hostElement.classList.contains('f-node')) {\n selectedNodes.push(x.hostElement.dataset['fNodeId']!)\n } else {\n selectedConnections.push(x.hostElement.id);\n }\n });\n\n return new FSelectionChangeEvent(selectedNodes, selectedConnections);\n }\n}\n","export class SelectRequest {\n\n constructor(\n public nodes: string[],\n public connections: string[]\n ) {\n }\n}\n","import { SelectRequest } from './select.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectRequest)\nexport class SelectExecution implements IExecution<SelectRequest, void> {\n\n constructor(\n private fDataContext: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n });\n this.fDraggableDataContext.selectedItems = [];\n\n request.nodes.forEach((key) => {\n const node = this.fDataContext.fNodes.find((x) => x.fId === key);\n if(node) {\n node.select();\n this.fDraggableDataContext.selectedItems.push(node);\n }\n });\n\n request.connections.forEach((key) => {\n const connection = this.fDataContext.fConnections.find((x) => x.fId === key);\n if(connection) {\n connection.select();\n this.fDraggableDataContext.selectedItems.push(connection);\n }\n });\n\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","export class SelectAllRequest {\n\n}\n","import { SelectAllRequest } from './select-all.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FDraggableDataContext } from '../../../f-draggable';\n\n@Injectable()\n@FExecutionRegister(SelectAllRequest)\nexport class SelectAllExecution implements IExecution<SelectAllRequest, void> {\n\n constructor(\n private fDataContext: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n ) {\n }\n\n public handle(request: SelectAllRequest): void {\n this.fDraggableDataContext.selectedItems.forEach((x) => {\n x.deselect();\n });\n this.fDraggableDataContext.selectedItems = [];\n this.fDataContext.fNodes.forEach((x) => {\n x.select();\n this.fDraggableDataContext.selectedItems.push(x);\n });\n this.fDataContext.fConnections.forEach((x) => {\n x.select();\n this.fDraggableDataContext.selectedItems.push(x);\n });\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n}\n","import { FNodeBase } from '../../../f-node';\n\nexport class SelectAndUpdateNodeLayerRequest {\n\n constructor(\n public fNode: FNodeBase\n ) {\n }\n}\n","export class MoveFrontElementsBeforeTargetElementRequest {\n\n constructor(\n public fItemsContainer: HTMLElement, // fGroupsContainer || fNodesContainer || fConnectionsContainer\n public allElements: Element[],\n public elementsThatShouldBeInFront: Element[],\n public targetIndex: number\n ) {\n }\n}\n","import { MoveFrontElementsBeforeTargetElementRequest } from './move-front-elements-before-target-element.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(MoveFrontElementsBeforeTargetElementRequest)\nexport class MoveFrontElementsBeforeTargetElementExecution implements IExecution<MoveFrontElementsBeforeTargetElementRequest, void> {\n\n public handle(request: MoveFrontElementsBeforeTargetElementRequest): void {\n const elementsToMove: Element[] = [];\n for (let i = request.targetIndex + 1; i < request.allElements.length; i++) {\n const element = request.allElements[ i ];\n if (!request.elementsThatShouldBeInFront.includes(element)) {\n elementsToMove.push(element);\n }\n }\n elementsToMove.forEach((x) => {\n request.fItemsContainer.removeChild(x);\n request.fItemsContainer.insertBefore(x, request.allElements[ request.targetIndex ]);\n });\n }\n}\n","import { ICanChangeSelection } from '../../mixins';\n\nexport class UpdateItemAndChildrenLayersRequest {\n\n constructor(\n public item: ICanChangeSelection,\n public itemContainer: HTMLElement,\n ) {\n }\n}\n","export class GetDeepChildrenNodesAndGroupsRequest {\n\n constructor(\n public fId: string\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetDeepChildrenNodesAndGroupsRequest } from './get-deep-children-nodes-and-groups.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FNodeBase } from '../../f-node';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetDeepChildrenNodesAndGroupsRequest)\nexport class GetDeepChildrenNodesAndGroupsExecution\n implements IExecution<GetDeepChildrenNodesAndGroupsRequest, FNodeBase[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: GetDeepChildrenNodesAndGroupsRequest): FNodeBase[] {\n return this.getChildrenNodes(request.fId);\n }\n\n private getChildrenNodes(fId: string, visited: Set<string> = new Set()): FNodeBase[] {\n if (visited.has(fId)) {\n throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fId);\n }\n visited.add(fId);\n\n const result = this.fComponentsStore.fNodes.filter((x) => x.fParentId === fId);\n result.forEach((x) => {\n result.push(...this.getChildrenNodes(x.fId, visited));\n });\n return result;\n }\n}\n","import { UpdateItemAndChildrenLayersRequest } from './update-item-and-children-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport { FNodeBase } from '../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../get-deep-children-nodes-and-groups';\nimport { MoveFrontElementsBeforeTargetElementRequest } from './move-front-elements-before-target-element';\n\n@Injectable()\n@FExecutionRegister(UpdateItemAndChildrenLayersRequest)\nexport class UpdateItemAndChildrenLayersExecution implements IExecution<UpdateItemAndChildrenLayersRequest, void> {\n\n private get fGroupsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement;\n }\n\n private get fNodesContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement;\n }\n\n private get fConnectionsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fConnectionsContainer.nativeElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(request: UpdateItemAndChildrenLayersRequest): void {\n\n switch (request.itemContainer) {\n case this.fGroupsContainer:\n this.handleGroup(request);\n break;\n case this.fNodesContainer:\n this.handleNode(request);\n break;\n case this.fConnectionsContainer:\n this.handleConnection(request);\n break;\n default:\n throw new Error('Unknown container');\n }\n }\n\n private handleGroup(request: UpdateItemAndChildrenLayersRequest): void {\n const childrenNodesAndGroups = this.getChildrenNodesAndGroups(request.item.fId);\n const childrenGroups = this.getChildrenGroups(childrenNodesAndGroups);\n this.updateLayers(this.fGroupsContainer, request.item.hostElement as HTMLElement, childrenGroups);\n const childrenNodes = this.getChildrenNodes(childrenNodesAndGroups);\n if (childrenNodes.length) {\n this.updateLayers(this.fNodesContainer, childrenNodes[ 0 ], childrenNodes);\n }\n }\n\n private handleNode(request: UpdateItemAndChildrenLayersRequest): void {\n const childrenNodesAndGroups = this.getChildrenNodesAndGroups(request.item.fId);\n const childrenNodes = this.getChildrenNodes(childrenNodesAndGroups);\n this.updateLayers(request.itemContainer, request.item.hostElement as HTMLElement, childrenNodes);\n }\n\n private handleConnection(request: UpdateItemAndChildrenLayersRequest): void {\n this.updateLayers(request.itemContainer, request.item.hostElement as HTMLElement, []);\n }\n\n private updateLayers(itemContainer: HTMLElement, item: HTMLElement, elementsThatShouldBeInFront: HTMLElement[]): void {\n const allElements = Array.from(itemContainer.children) as HTMLElement[];\n const targetIndex = allElements.findIndex((x) => x === item);\n if (this.isAnythingNeedToBeMoved(allElements, targetIndex, elementsThatShouldBeInFront)) {\n this.fMediator.send(\n new MoveFrontElementsBeforeTargetElementRequest(itemContainer, allElements, elementsThatShouldBeInFront, targetIndex)\n );\n }\n }\n\n private isAnythingNeedToBeMoved(allElements: HTMLElement[], targetIndex: number, elementsThatShouldBeInFront: HTMLElement[]): boolean {\n for (let i = targetIndex + 1; i < allElements.length; i++) {\n if (!elementsThatShouldBeInFront.includes(allElements[ i ])) {\n return true;\n }\n }\n return false;\n }\n\n private getChildrenGroups(elements: HTMLElement[]): HTMLElement[] {\n const allElements = Array.from(this.fGroupsContainer.children) as HTMLElement[];\n return elements.filter((x) => this.fGroupsContainer.contains(x))\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodes(elements: HTMLElement[]): HTMLElement[] {\n const allElements = Array.from(this.fNodesContainer.children) as HTMLElement[];\n return elements.filter((x) => this.fNodesContainer.contains(x))\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodesAndGroups(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId)).map((x) => x.hostElement);\n }\n}\n","import { IHandler } from '@foblex/mediator';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator } from '@foblex/mediator';\nimport { SelectAndUpdateNodeLayerRequest } from './select-and-update-node-layer.request';\nimport { FDraggableDataContext } from '../../../f-draggable';\nimport { UpdateItemAndChildrenLayersRequest } from '../../update-item-and-children-layers';\nimport { FNodeBase } from '../../../f-node';\n\n@Injectable()\n@FExecutionRegister(SelectAndUpdateNodeLayerRequest)\nexport class SelectAndUpdateNodeLayerExecution implements IHandler<SelectAndUpdateNodeLayerRequest, void> {\n\n constructor(\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator\n ) {\n }\n public handle(request: SelectAndUpdateNodeLayerRequest): void {\n this.selectNodeIfNotSelected(request.fNode);\n\n this.fMediator.send<void>(\n new UpdateItemAndChildrenLayersRequest(request.fNode, request.fNode.hostElement.parentElement as HTMLElement)\n );\n }\n\n private selectNodeIfNotSelected(fNode: FNodeBase) {\n if (!this.fDraggableDataContext.selectedItems.includes(fNode) && !fNode.fSelectionDisabled) {\n this.fDraggableDataContext.selectedItems.push(fNode);\n fNode.select();\n this.fDraggableDataContext.isSelectedChanged = true;\n }\n }\n}\n","import { ClearSelectionExecution } from './clear-selection';\nimport { GetSelectionExecution } from './get-selection';\nimport { SelectExecution } from './select';\nimport { SelectAllExecution } from './select-all';\nimport {\n SelectAndUpdateNodeLayerExecution\n} from './select-and-update-node-layer/select-and-update-node-layer.execution';\n\nexport const F_SELECTION_FEATURES = [\n\n ClearSelectionExecution,\n\n GetSelectionExecution,\n\n SelectExecution,\n\n SelectAllExecution,\n\n SelectAndUpdateNodeLayerExecution\n];\n","import { Injectable } from '@angular/core';\nimport { IRect, ITransformModel, RectExtensions } from '@foblex/2d';\nimport { ISelectableWithRect } from './i-selectable-with-rect';\nimport { GetCanBeSelectedItemsRequest } from './get-can-be-selected-items-request';\nimport { FNodeBase } from '../../f-node';\nimport { FConnectionBase } from '../../f-connection';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext } from '../../f-draggable';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(GetCanBeSelectedItemsRequest)\nexport class GetCanBeSelectedItemsExecution implements IExecution<void, ISelectableWithRect[]> {\n\n private get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n private get fConnections(): FConnectionBase[] {\n return this.fComponentsStore.fConnections;\n }\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(): ISelectableWithRect[] {\n return [ ...this.getNodesWithRects(), ...this.getConnectionsWithRects() ].filter((x) => {\n return !this.fDraggableDataContext.selectedItems.includes(x.element);\n });\n }\n\n private getNodesWithRects(): ISelectableWithRect[] {\n return this.fNodes.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n rect: RectExtensions.mult(\n this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement)),\n this.transform.scale\n )\n };\n });\n }\n\n private getConnectionsWithRects(): ISelectableWithRect[] {\n return this.fConnections.filter((x) => !x.fSelectionDisabled).map((x) => {\n return {\n element: x,\n rect: RectExtensions.mult(\n this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.boundingElement)),\n this.transform.scale\n )\n };\n });\n }\n}\n","import { EFConnectionBehavior } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { IRoundedRect } from '@foblex/2d';\n\nexport class GetConnectionLineRequest {\n\n constructor(\n public outputRect: IRoundedRect,\n public inputRect: IRoundedRect,\n public behavior: EFConnectionBehavior | string,\n public outputSide: EFConnectableSide,\n public inputSide: EFConnectableSide,\n ) {\n\n }\n}\n","import { GetConnectionLineRequest } from './get-connection-line.request';\nimport { Injectable } from '@angular/core';\nimport { EFConnectionBehavior } from '../../f-connection';\nimport { EFConnectableSide } from '../../f-connectors';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { GetIntersections, ILine, IPoint, IRect, IRoundedRect, Line, Point } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(GetConnectionLineRequest)\nexport class GetConnectionLineExecution implements IExecution<GetConnectionLineRequest, ILine> {\n\n private behaviorHandlers = {\n\n [ EFConnectionBehavior.FLOATING.toString() ]: this.floatingBehavior,\n\n [ EFConnectionBehavior.FIXED_CENTER.toString() ]: this.fixedCenterBehavior,\n\n [ EFConnectionBehavior.FIXED.toString() ]: this.fixedOutboundBehaviour,\n }\n\n public handle(payload: GetConnectionLineRequest): ILine {\n return this.behaviorHandlers[ payload.behavior ](payload);\n }\n\n private floatingBehavior(payload: GetConnectionLineRequest): ILine {\n const fromResult = GetIntersections.getRoundedRectIntersections(payload.outputRect.gravityCenter, payload.inputRect.gravityCenter, payload.outputRect)[ 0 ];\n const toResult = GetIntersections.getRoundedRectIntersections(payload.inputRect.gravityCenter, payload.outputRect.gravityCenter, payload.inputRect)[ 0 ];\n return new Line(\n fromResult ? fromResult : payload.outputRect.gravityCenter,\n toResult ? toResult : payload.inputRect.gravityCenter\n );\n }\n\n private fixedCenterBehavior(payload: GetConnectionLineRequest): ILine {\n return new Line(\n payload.outputRect.gravityCenter,\n payload.inputRect.gravityCenter\n );\n }\n\n private fixedOutboundBehaviour(payload: GetConnectionLineRequest): ILine {\n return new Line(\n positionFixedOutbound[ payload.outputSide === EFConnectableSide.AUTO ? EFConnectableSide.BOTTOM : payload.outputSide ](payload.outputRect as IRoundedRect),\n positionFixedOutbound[ payload.inputSide === EFConnectableSide.AUTO ? EFConnectableSide.TOP : payload.inputSide ](payload.inputRect as IRoundedRect)\n );\n }\n}\n\nconst positionFixedOutbound = {\n [ EFConnectableSide.TOP ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.y = rect.y;\n result.x = rect.x + rect.width / 2;\n return result;\n },\n [ EFConnectableSide.BOTTOM ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.y = rect.y + rect.height;\n result.x = rect.x + rect.width / 2;\n return result;\n },\n [ EFConnectableSide.LEFT ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.x = rect.x;\n result.y = rect.y + rect.height / 2;\n return result;\n },\n [ EFConnectableSide.RIGHT ]: (rect: IRect): IPoint => {\n const result = new Point();\n result.x = rect.x + rect.width;\n result.y = rect.y + rect.height / 2;\n return result;\n },\n};\n\n\n\n\n","export class GetFlowStateConnectionsRequest {\n\n}\n","import { Injectable } from '@angular/core';\nimport { GetFlowStateConnectionsRequest } from './get-flow-state-connections-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IFFlowStateConnection } from '../i-f-flow-state-connection';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateConnectionsRequest)\nexport class GetFlowStateConnectionsExecution implements IExecution<GetFlowStateConnectionsRequest, IFFlowStateConnection[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetFlowStateConnectionsRequest): IFFlowStateConnection[] {\n return this.fComponentsStore.fConnections.map((x) => {\n return {\n id: x.fId,\n fOutputId: x.fOutputId,\n fInputId: x.fInputId,\n fType: x.fType,\n fBehavior: x.fBehavior,\n isSelected: x.isSelected()\n }\n });\n }\n}\n","import { Type } from '@angular/core';\n\nexport class GetFlowStateNodesRequest {\n\n constructor(\n public type: Type<any>\n ) {\n }\n}\n","import { Injectable } from '@angular/core';\nimport { GetFlowStateNodesRequest } from './get-flow-state-nodes-request';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { IFFlowStateNode } from '../i-f-flow-state-node';\nimport { FComponentsStore } from '../../../f-storage';\nimport { IFFlowStateConnector } from '../i-f-flow-state-connector';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateNodesRequest)\nexport class GetFlowStateNodesExecution implements IExecution<GetFlowStateNodesRequest, IFFlowStateNode[]> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetFlowStateNodesRequest): IFFlowStateNode[] {\n return this.fComponentsStore.fNodes.filter((x) => x instanceof request.type).map((x) => {\n return {\n id: x.fId,\n parent: x.fParentId,\n position: x.position,\n size: x.size,\n fOutputs: this.getOutputs(x.hostElement),\n fInputs: this.getInputs(x.hostElement),\n isSelected: x.isSelected()\n };\n });\n }\n\n private getOutputs(hostElement: HTMLElement): IFFlowStateConnector[] {\n return this.fComponentsStore.fOutputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {\n return {\n id: x.id,\n fConnectableSide: x.fConnectableSide\n }\n });\n }\n\n private getInputs(hostElement: HTMLElement): IFFlowStateConnector[] {\n return this.fComponentsStore.fInputs.filter((x) => hostElement.contains(x.hostElement)).map((x) => {\n return {\n id: x.id,\n fConnectableSide: x.fConnectableSide\n }\n });\n }\n}\n","export class GetFlowStateRequest {\n}\n","import { GetFlowStateRequest } from './get-flow-state.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IFFlowState } from './i-f-flow-state';\nimport { FComponentsStore } from '../../f-storage';\nimport { FGroupDirective, FNodeDirective } from '../../f-node';\nimport { IPoint, ITransformModel, PointExtensions } from '@foblex/2d';\nimport { GetFlowStateNodesRequest } from './get-flow-state-nodes';\nimport { GetFlowStateConnectionsRequest } from './get-flow-state-connections';\n\n@Injectable()\n@FExecutionRegister(GetFlowStateRequest)\nexport class GetFlowStateExecution implements IExecution<GetFlowStateRequest, IFFlowState> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n }\n\n public handle(payload: GetFlowStateRequest): IFFlowState {\n return {\n position: this.getCanvasPosition(this.fComponentsStore.fCanvas!.transform),\n scale: this.fComponentsStore.fCanvas!.transform.scale,\n nodes: this.fMediator.send(new GetFlowStateNodesRequest(FNodeDirective)),\n groups: this.fMediator.send(new GetFlowStateNodesRequest(FGroupDirective)),\n connections: this.fMediator.send(new GetFlowStateConnectionsRequest())\n }\n }\n\n private getCanvasPosition(transform: ITransformModel): IPoint {\n return PointExtensions.sum(transform.position, transform.scaledPosition);\n }\n}\n\n\n\n","import { GetFlowStateExecution } from './get-flow-state.execution';\nimport { GetFlowStateNodesExecution } from './get-flow-state-nodes';\nimport { GetFlowStateConnectionsExecution } from './get-flow-state-connections';\n\nexport const GET_FLOW_STATE_PROVIDERS = [\n\n GetFlowStateExecution,\n\n GetFlowStateNodesExecution,\n\n GetFlowStateConnectionsExecution\n];\n","export class GetScaledNodeRectsWithFlowPositionRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { GetScaledNodeRectsWithFlowPositionRequest } from './get-scaled-node-rects-with-flow-position.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetScaledNodeRectsWithFlowPositionRequest)\nexport class GetScaledNodeRectsWithFlowPositionExecution implements IExecution<GetScaledNodeRectsWithFlowPositionRequest, IRect | null> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetScaledNodeRectsWithFlowPositionRequest): IRect | null {\n return RectExtensions.union(this.getNodesRects());\n }\n\n private getNodesRects(): IRect[] {\n return this.getNodes().map((x) => {\n const rect = RectExtensions.fromElement(x.hostElement);\n return RectExtensions.initialize(x.position.x, x.position.y, rect.width, rect.height);\n });\n }\n\n private getNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n}\n","export class GetNodesRectRequest {\n\n}\n","import { IRect, RectExtensions } from '@foblex/2d';\nimport { GetNodesRectRequest } from './get-nodes-rect.request';\nimport { Injectable } from '@angular/core';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\nimport { FNodeBase } from '../../f-node';\n\n@Injectable()\n@FExecutionRegister(GetNodesRectRequest)\nexport class GetNodesRectExecution implements IExecution<GetNodesRectRequest, IRect | null> {\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetNodesRectRequest): IRect | null {\n return RectExtensions.union(this.getNodesRects());\n }\n\n private getNodesRects(): IRect[] {\n return this.getNodes().map((x) => RectExtensions.fromElement(x.hostElement));\n }\n\n private getNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n}\n","import { IPoint } from '@foblex/2d';\n\nexport class GetPositionInFlowRequest {\n constructor(\n public position: IPoint\n ) {\n }\n}\n","import { IPoint, ITransformModel, Point } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { GetPositionInFlowRequest } from './get-position-in-flow-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(GetPositionInFlowRequest)\nexport class GetPositionInFlowExecution implements IExecution<GetPositionInFlowRequest, IPoint> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: GetPositionInFlowRequest): IPoint {\n return Point.fromPoint(request.position).elementTransform(this.flowHost)\n .sub(this.transform.scaledPosition).sub(this.transform.position).div(this.transform.scale);\n }\n}\n","import { IRect, ITransformModel } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { IsConnectionUnderNodeRequest } from './is-connection-under-node.request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FDraggableDataContext, NodeDragHandler } from '../../f-draggable';\nimport { FNodeBase } from '../../f-node';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FConnectionBase } from '../../f-connection';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\n\n@Injectable()\n@FExecutionRegister(IsConnectionUnderNodeRequest)\nexport class IsConnectionUnderNodeExecution implements IExecution<IsConnectionUnderNodeRequest, void> {\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n // private getOutgoingConnectionsHandler: GetOutgoingConnectionsHandler,\n // private getIncomingConnectionsHandler: GetIncomingConnectionsHandler\n ) {\n }\n\n public handle(): void {\n\n const isValid = this.isValidRequest();\n if (!isValid) {\n return;\n }\n\n const fNode = (this.fDraggableDataContext.draggableItems[ 0 ] as NodeDragHandler).fNode;\n\n const outputsOfNode = this.getOutputsForNode(fNode);\n const inputsOfNode = this.getInputsForNode(fNode);\n\n const isCantBeConnectedByOutput = outputsOfNode.some((x) => !x.canBeConnected);\n\n const isCantBeConnectedByInput = this.fComponentsStore.fConnections.some((x) => {\n return inputsOfNode.find((input) => input.id === x.fInputId);\n });\n\n if (!isCantBeConnectedByInput && outputsOfNode.length && !isCantBeConnectedByOutput && inputsOfNode.length) {\n const output = outputsOfNode[ 0 ];\n const input = inputsOfNode[ 0 ];\n // const outgoingConnections = this.getOutgoingConnectionsHandler.handle([ output ]);\n // const incomingConnections = this.getIncomingConnectionsHandler.handle([ input ]);\n // if (outgoingConnections.length === 0 && incomingConnections.length === 0) {\n // const connections = this.findConnectionsUnderNode(fNode);\n // if (connections.length) {\n // //TODO: need to implement\n // }\n // }\n }\n }\n\n private isValidRequest(): boolean {\n const result =\n this.fDraggableDataContext.draggableItems.length === 1 &&\n this.fDraggableDataContext.draggableItems[ 0 ] instanceof NodeDragHandler;\n\n return result;\n }\n\n private getOutputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fOutputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private getInputsForNode(node: FNodeBase): FConnectorBase[] {\n return this.fComponentsStore.fInputs.filter((x) => node.isContains(x.hostElement));\n }\n\n private findConnectionsUnderNode(node: FNodeBase): FConnectionBase[] {\n const nodeRect = this.fMediator.send<IRect>(new GetElementRectInFlowRequest(node.hostElement));\n return this.fComponentsStore.fConnections.filter((x) => {\n // const intersection = [];// RectExtensions.intersectionWithVector(nodeRect, x.line.point1, x.line.point2, 0, 0, 0, 0);\n return ([]).length > 0\n });\n }\n}\n// @Injectable()\n// export class GetIncomingConnectionsHandler implements IHandler<FConnectorBase[], FConnectionBase[]> {\n//\n// private get fConnections(): FConnectionBase[] {\n// return this.fComponentsStore.fConnections;\n// }\n//\n// constructor(\n// private fComponentsStore: FComponentsStore,\n// ) {\n// }\n//\n// public handle(inputs: FConnectorBase[]): FConnectionBase[] {\n// const inputsIds = inputs.map((x) => x.id);\n// return this.fConnections.filter((x) => {\n// return inputsIds.includes(x.fInputId);\n// })!;\n// }\n// }\n// @Injectable()\n// export class GetOutgoingConnectionsHandler implements IHandler<FConnectorBase[], FConnectionBase[]> {\n//\n// private get fConnections(): FConnectionBase[] {\n// return this.fComponentsStore.fConnections;\n// }\n//\n// constructor(\n// private fComponentsStore: FComponentsStore,\n// ) {\n// }\n//\n// public handle(outputs: FConnectorBase[]): FConnectionBase[] {\n// const outputsIds = outputs.map((x) => x.id);\n// return this.fConnections.filter((x) => {\n// return outputsIds.includes(x.fOutputId);\n// })!;\n// }\n// }\n","export class RedrawConnectionsRequest {\n}\n","import { ILine } from '@foblex/2d';\nimport { Injectable } from '@angular/core';\nimport { RedrawConnectionsRequest } from './redraw-connections-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { GetConnectionLineRequest } from '../get-connection-line';\nimport { FConnectorBase } from '../../f-connectors';\nimport { FConnectionBase } from '../../f-connection';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { GetElementRectInFlowRequest } from '../get-element-rect-in-flow';\nimport { CreateConnectionMarkersRequest } from '../create-connection-markers';\nimport { IRoundedRect } from '@foblex/2d';\n\n@Injectable()\n@FExecutionRegister(RedrawConnectionsRequest)\nexport class RedrawConnectionsExecution implements IExecution<RedrawConnectionsRequest, void> {\n\n constructor(\n private readonly fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n ) {\n }\n\n public handle(request: RedrawConnectionsRequest): void {\n this.resetConnectors();\n\n if (this.fComponentsStore.fTempConnection) {\n this.setMarkers(this.fComponentsStore.fTempConnection);\n }\n\n if(this.fComponentsStore.fSnapConnection) {\n this.setMarkers(this.fComponentsStore.fSnapConnection);\n }\n\n this.fComponentsStore.fConnections.forEach((connection) => {\n const output = this.fComponentsStore.fOutputs.find((x) => x.id === connection.fOutputId);\n const input = this.fComponentsStore.fInputs.find((x) => x.id === connection.fInputId);\n if (output && input) {\n this.setupConnection(output, input, connection);\n }\n });\n }\n\n private resetConnectors(): void {\n this.fComponentsStore.fOutputs.forEach((output) => output.setConnected(false));\n this.fComponentsStore.fInputs.forEach((input) => input.setConnected(false));\n }\n\n private setupConnection(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): void {\n output.setConnected(true);\n input.setConnected(true);\n\n const line = this.getLine(output, input, connection);\n\n this.setMarkers(connection);\n\n connection.setLine(line.point1, output.fConnectableSide, line.point2, input.fConnectableSide);\n\n connection.initialize();\n connection.isSelected() ? connection.select() : null;\n }\n\n private getLine(output: FConnectorBase, input: FConnectorBase, connection: FConnectionBase): ILine {\n const outputRect = this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(output.hostElement));\n const inputRect = this.fMediator.send<IRoundedRect>(new GetElementRectInFlowRequest(input.hostElement));\n return this.fMediator.send(new GetConnectionLineRequest(\n outputRect,\n inputRect,\n connection.fBehavior,\n output.fConnectableSide,\n input.fConnectableSide\n )\n );\n }\n\n private setMarkers(connection: FConnectionBase): void {\n this.fMediator.send(\n new CreateConnectionMarkersRequest(connection)\n );\n }\n}\n","export class ShowConnectionsAfterCalculationsRequest {\n}\n","import { Injectable } from '@angular/core';\nimport { ShowConnectionsAfterCalculationsRequest } from './show-connections-after-calculations-request';\nimport { FComponentsStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(ShowConnectionsAfterCalculationsRequest)\nexport class ShowConnectionsAfterCalculationsExecution implements IExecution<ShowConnectionsAfterCalculationsRequest, void> {\n\n constructor(\n private readonly fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: ShowConnectionsAfterCalculationsRequest): void {\n this.fComponentsStore.fConnections.forEach((connection) => {\n connection.hostElement.style.display = 'unset';\n });\n }\n}\n","export class SortNodeLayersRequest {\n\n}\n","import { SortNodeLayersRequest } from './sort-node-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../get-deep-children-nodes-and-groups';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(SortNodeLayersRequest)\nexport class SortNodeLayersExecution implements IExecution<SortNodeLayersRequest, void> {\n\n private get fGroupsContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement;\n }\n\n private get fNodesContainer(): HTMLElement {\n return this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement;\n }\n\n private get fNodesContainerElements(): HTMLElement[] {\n return Array.from(this.fNodesContainer.children) as HTMLElement[];\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n }\n\n public handle(request: SortNodeLayersRequest): void {\n this.getGroups().forEach((parent: FNodeBase) => {\n this.moveChildrenNodes(this.getSortedChildrenNodes(parent));\n });\n }\n\n private getGroups(): FNodeBase[] {\n return this.fComponentsStore.fNodes.filter((x) => this.fGroupsContainer.contains(x.hostElement));\n }\n\n private getSortedChildrenNodes(\n parent: FNodeBase,\n ): HTMLElement[] {\n const allElements = this.fNodesContainerElements;\n return this.getChildrenNodes(parent.fId)\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenNodes(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId))\n .filter((x) => this.fNodesContainer.contains(x.hostElement)).map((x) => x.hostElement);\n }\n\n private moveChildrenNodes(\n sortedChildrenGroups: HTMLElement[],\n ): void {\n const fragment = this.fBrowser.document.createDocumentFragment();\n sortedChildrenGroups.forEach((childGroup: HTMLElement) => {\n fragment.appendChild(childGroup); // Append automatically removes the element from its current position\n });\n this.fNodesContainer.appendChild(fragment);\n }\n}\n","export class SortItemsByParentRequest {\n\n constructor(\n public fItemsContainer: HTMLElement // fGroupsContainer || fNodesContainer\n ) {\n }\n}\n","import { SortItemsByParentRequest } from './sort-items-by-parent.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { FComponentsStore } from '../../../f-storage';\nimport { FNodeBase } from '../../../f-node';\nimport { GetDeepChildrenNodesAndGroupsRequest } from '../../get-deep-children-nodes-and-groups';\nimport { BrowserService } from '@foblex/platform';\n\n@Injectable()\n@FExecutionRegister(SortItemsByParentRequest)\nexport class SortItemsByParentExecution implements IExecution<SortItemsByParentRequest, void> {\n\n private fItemsContainer!: HTMLElement;\n\n private get fItemsFromContainer(): HTMLElement[] {\n return Array.from(this.fItemsContainer.children) as HTMLElement[];\n }\n\n constructor(\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService\n ) {\n }\n\n public handle(request: SortItemsByParentRequest): void {\n this.fItemsContainer = request.fItemsContainer;\n this.getItems().forEach((parent: FNodeBase) => {\n this.moveChildrenItems(this.getSortedChildrenItems(parent), parent);\n });\n }\n\n private getItems(): FNodeBase[] {\n return this.fComponentsStore.fNodes.filter((x) => this.fItemsContainer.contains(x.hostElement));\n }\n\n private getSortedChildrenItems(\n parent: FNodeBase,\n ): HTMLElement[] {\n const allElements = this.fItemsFromContainer;\n const parentIndex = allElements.indexOf(parent.hostElement);\n return this.getChildrenGroups(parent.fId)\n .filter((child: HTMLElement) => allElements.indexOf(child) < parentIndex)\n .sort((a, b) => allElements.indexOf(a) - allElements.indexOf(b));\n }\n\n private getChildrenGroups(fId: string): HTMLElement[] {\n return this.fMediator.send<FNodeBase[]>(new GetDeepChildrenNodesAndGroupsRequest(fId))\n .filter((x) => this.fItemsContainer.contains(x.hostElement)).map((x) => x.hostElement);\n }\n\n private moveChildrenItems(\n sortedChildrenItems: HTMLElement[],\n parent: FNodeBase,\n ): void {\n let nextSibling = parent.hostElement.nextElementSibling;\n\n const fragment = this.fBrowser.document.createDocumentFragment();\n\n sortedChildrenItems.forEach((child: HTMLElement) => {\n fragment.appendChild(child); // Append automatically removes the element from its current position\n });\n this.fItemsContainer.insertBefore(fragment, nextSibling);\n }\n}\n","export class SortItemLayersRequest {\n\n}\n","import { SortItemLayersRequest } from './sort-item-layers.request';\nimport { Injectable } from '@angular/core';\nimport { FExecutionRegister, FMediator, IExecution } from '@foblex/mediator';\nimport { SortNodeLayersRequest } from './sort-node-layers-by-groups';\nimport { SortItemsByParentRequest } from './sort-items-by-parent';\nimport { FComponentsStore } from '../../f-storage';\n\n@Injectable()\n@FExecutionRegister(SortItemLayersRequest)\nexport class SortItemLayersExecution implements IExecution<SortItemLayersRequest, void> {\n\n constructor(\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n ) {\n }\n\n public handle(request: SortItemLayersRequest): void {\n this.fMediator.send(new SortItemsByParentRequest(this.fComponentsStore.fCanvas!.fGroupsContainer.nativeElement));\n this.fMediator.send(new SortNodeLayersRequest());\n this.fMediator.send(new SortItemsByParentRequest(this.fComponentsStore.fCanvas!.fNodesContainer.nativeElement));\n }\n}\n","export class SubscribeOnTransformChangesRequest {\n\n}\n","import { SubscribeOnTransformChangesRequest } from './subscribe-on-transform-changes.request';\nimport { Injectable } from '@angular/core';\nimport { merge, Observable } from 'rxjs';\nimport { FComponentsStore, FTransformStore } from '../../f-storage';\nimport { FExecutionRegister, IExecution } from '@foblex/mediator';\n\n@Injectable()\n@FExecutionRegister(SubscribeOnTransformChangesRequest)\nexport class SubscribeOnTransformChangesExecution\n implements IExecution<SubscribeOnTransformChangesRequest, Observable<void>> {\n\n constructor(\n private fTransformStore: FTransformStore,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public handle(request: SubscribeOnTransformChangesRequest): Observable<void> {\n return merge(\n this.fTransformStore.changes,\n this.fComponentsStore.componentsData$,\n this.fComponentsStore.componentsCount$\n );\n }\n}\n","export const F_CANVAS_ANIMATION_DURATION = 150;\n","import { BrowserService } from '@foblex/platform';\n\nexport function createSVGElement<K extends keyof SVGElementTagNameMap>(tag: K, fBrowser: BrowserService): SVGElementTagNameMap[K] {\n return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);\n}\n","import { GetConnectionLineExecution } from './get-connection-line';\nimport { RedrawConnectionsExecution } from './redraw-connections';\nimport { GetNodesRectExecution } from './get-nodes-rect';\nimport { GetElementRectInFlowExecution } from './get-element-rect-in-flow';\nimport {\n MoveFrontElementsBeforeTargetElementExecution,\n UpdateItemAndChildrenLayersExecution\n} from './update-item-and-children-layers';\nimport { GetPositionInFlowExecution } from './get-position-in-flow';\nimport { CreateConnectionMarkersExecution } from './create-connection-markers';\nimport { GetCanBeSelectedItemsExecution } from './get-can-be-selected-items';\nimport { IsConnectionUnderNodeExecution } from './is-connection-under-node';\nimport { GetScaledNodeRectsWithFlowPositionExecution } from './get-scaled-node-rects-with-flow-position';\nimport { EmitTransformChangesExecution } from './emit-transform-changes';\nimport { SubscribeOnTransformChangesExecution } from './subscribe-on-transform-changes';\nimport { SortItemLayersExecution, SortItemsByParentExecution, SortNodeLayersExecution } from './sort-item-layers';\nimport { GetDeepChildrenNodesAndGroupsExecution } from './get-deep-children-nodes-and-groups';\nimport { CreateRoundedRectFromElementExecution } from './create-rounded-rect-from-element';\nimport { GET_FLOW_STATE_PROVIDERS } from './get-flow-state';\nimport { ShowConnectionsAfterCalculationsExecution } from './show-connections-after-calculations';\nimport { F_SELECTION_FEATURES } from './f-selection';\nimport { F_BACKGROUND_FEATURES } from './f-background';\nimport { F_CANVAS_FEATURES } from './f-canvas';\nimport { F_CONNECTION_FEATURES } from './f-connection';\n\nexport const COMMON_PROVIDERS = [\n\n ...F_CANVAS_FEATURES,\n\n ...F_CONNECTION_FEATURES,\n\n ...F_BACKGROUND_FEATURES,\n\n CreateConnectionMarkersExecution,\n\n CreateRoundedRectFromElementExecution,\n\n EmitTransformChangesExecution,\n\n ...F_SELECTION_FEATURES,\n\n GetCanBeSelectedItemsExecution,\n\n GetDeepChildrenNodesAndGroupsExecution,\n\n GetConnectionLineExecution,\n\n GetElementRectInFlowExecution,\n\n ...GET_FLOW_STATE_PROVIDERS,\n\n GetScaledNodeRectsWithFlowPositionExecution,\n\n GetNodesRectExecution,\n\n GetPositionInFlowExecution,\n\n IsConnectionUnderNodeExecution,\n\n RedrawConnectionsExecution,\n\n ShowConnectionsAfterCalculationsExecution,\n\n SortItemLayersExecution,\n\n SortItemsByParentExecution,\n\n SortNodeLayersExecution,\n\n SubscribeOnTransformChangesExecution,\n\n UpdateItemAndChildrenLayersExecution,\n\n MoveFrontElementsBeforeTargetElementExecution,\n];\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef, Input, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport {\n IPoint, ISize, ITransformModel,\n PointExtensions, SizeExtensions, TransformModelExtensions\n} from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { Subject, Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport { createSVGElement } from '../../domain';\nimport { BrowserService } from '@foblex/platform';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-rect-pattern\",\n template: ``,\n host: {\n '[attr.id]': 'id'\n },\n providers: [\n { provide: F_BACKGROUND_PATTERN, useExisting: FRectPatternComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FRectPatternComponent implements OnInit, OnDestroy, IFBackgroundPattern {\n\n private _subscription$: Subscription = new Subscription();\n\n private _stateChanges: Subject<void> = new Subject<void>();\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n private _vColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set vColor(value: string) {\n this._vColor = value;\n this._stateChanges.next();\n }\n\n private _hColor: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set hColor(value: string) {\n this._vColor = value;\n this._stateChanges.next();\n }\n\n private _vSize: number = 20;\n\n @Input()\n public set vSize(value: number) {\n this._vSize = value;\n this._stateChanges.next();\n }\n\n private _hSize: number = 20;\n\n @Input()\n public set hSize(value: number) {\n this._hSize = value;\n this._stateChanges.next();\n }\n\n private _transform: ITransformModel = TransformModelExtensions.default();\n\n private _position: IPoint = PointExtensions.initialize();\n\n private _size: ISize = SizeExtensions.initialize(this._hSize, this._vSize);\n\n private _pattern!: SVGPatternElement;\n private _vLine!: SVGLineElement;\n private _hLine!: SVGLineElement;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fBrowser: BrowserService\n ) {\n this.createPattern();\n }\n\n private createPattern(): void {\n this._pattern = createSVGElement('pattern', this.fBrowser);\n this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');\n this.hostElement.appendChild(this._pattern);\n\n this._vLine = createSVGElement('line', this.fBrowser);\n this._pattern.appendChild(this._vLine);\n\n this._hLine = createSVGElement('line', this.fBrowser);\n this._pattern.appendChild(this._hLine);\n }\n\n public ngOnInit(): void {\n this._subscription$.add(this.subscribeToStateChanges());\n }\n\n private subscribeToStateChanges(): Subscription {\n return this._stateChanges.pipe(startWith(null)).subscribe(() => {\n this.redraw();\n });\n }\n\n private calculatePattern(): void {\n this._position.x = this._transform.position.x + this._transform.scaledPosition.x;\n this._position.y = this._transform.position.y + this._transform.scaledPosition.y;\n this._size = SizeExtensions.initialize(this._hSize * this._transform.scale, this._vSize * this._transform.scale);\n }\n\n private redraw(): void {\n this.calculatePattern();\n this.redrawPattern();\n\n this.redrawLine(this._vLine, this._vColor, this._size.width, 0, this._size.width, this._size.height);\n this.redrawLine(this._hLine, this._hColor, 0, this._size.height, this._size.width, this._size.height);\n }\n\n private redrawPattern(): void {\n this._pattern.setAttribute('x', `${ this._position.x }`);\n this._pattern.setAttribute('y', `${ this._position.y }`);\n this._pattern.setAttribute('width', `${ this._size.width }`);\n this._pattern.setAttribute('height', `${ this._size.height }`);\n }\n\n private redrawLine(line: SVGLineElement, color: string, x1: number, y1: number, x2: number, y2: number): void {\n line.setAttribute('stroke', `${ color }`);\n line.setAttribute('x1', `${ x1 }`);\n line.setAttribute('x2', `${ x2 }`);\n line.setAttribute('y1', `${ y1 }`);\n line.setAttribute('y2', `${ y2 }`);\n }\n\n public setTransform(transform: ITransformModel): void {\n this._transform = transform;\n this._stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this._subscription$.unsubscribe();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef, Input, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport {\n IPoint,\n ITransformModel,\n PointExtensions,\n TransformModelExtensions\n} from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from '../domain';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../../domain';\nimport { Subject, Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: \"f-circle-pattern\",\n template: ``,\n host: {\n '[attr.id]': 'id'\n },\n providers: [\n { provide: F_BACKGROUND_PATTERN, useExisting: FCirclePatternComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FCirclePatternComponent implements OnInit, OnDestroy, IFBackgroundPattern {\n\n private _subscription$: Subscription = new Subscription();\n\n private _stateChanges: Subject<void> = new Subject<void>();\n\n public get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Input()\n public id: string = `f-pattern-${ uniqueId++ }`;\n\n\n private _color: string = 'rgba(0,0,0,0.1)';\n\n @Input()\n public set color(value: string) {\n this._color = value;\n this._stateChanges.next();\n }\n\n private _radius: number = 20;\n private _scaledRadius: number = 20;\n\n @Input()\n public set radius(value: number) {\n this._radius = value;\n this._stateChanges.next();\n }\n\n private _transform: ITransformModel = TransformModelExtensions.default();\n\n private _position: IPoint = PointExtensions.initialize();\n\n private _pattern!: SVGPatternElement;\n private _circle!: SVGCircleElement;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fBrowser: BrowserService\n ) {\n this.createPattern();\n }\n\n private createPattern(): void {\n this._pattern = createSVGElement('pattern', this.fBrowser);\n this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');\n this.hostElement.appendChild(this._pattern);\n\n this._circle = createSVGElement('circle', this.fBrowser);\n this._pattern.appendChild(this._circle);\n }\n\n public ngOnInit(): void {\n this._subscription$.add(this.subscribeToStateChanges());\n }\n\n private subscribeToStateChanges(): Subscription {\n return this._stateChanges.pipe(startWith(null)).subscribe(() => {\n this.redraw();\n });\n }\n\n private calculatePattern(): void {\n this._position.x = this._transform.position.x + this._transform.scaledPosition.x;\n this._position.y = this._transform.position.y + this._transform.scaledPosition.y;\n this._scaledRadius = this._radius * this._transform.scale;\n }\n\n private redraw(): void {\n this.calculatePattern();\n this.redrawPattern();\n this.redrawElement();\n }\n\n private redrawPattern(): void {\n this._pattern.setAttribute('x', `${ this._position.x }`);\n this._pattern.setAttribute('y', `${ this._position.y }`);\n this._pattern.setAttribute('width', `${ this._scaledRadius }`);\n this._pattern.setAttribute('height', `${ this._scaledRadius }`);\n }\n\n private redrawElement(): void {\n this._circle.setAttribute('fill', this._color);\n this._circle.setAttribute('cx', `${ this._scaledRadius / 2 }`);\n this._circle.setAttribute('cy', `${ this._scaledRadius / 2 }`);\n this._circle.setAttribute('r', `${ this._scaledRadius / this._radius }`);\n }\n\n public setTransform(transform: ITransformModel): void {\n this._transform = transform;\n this._stateChanges.next();\n }\n\n public ngOnDestroy(): void {\n this._subscription$.unsubscribe();\n }\n}\n","import { Directive, InjectionToken } from '@angular/core';\nimport { ITransformModel } from '@foblex/2d';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_BACKGROUND = new InjectionToken<FBackgroundBase>('F_BACKGROUND');\n\n@Directive()\nexport abstract class FBackgroundBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement;\n\n public abstract isBackgroundElement(element: HTMLElement | SVGElement): boolean;\n\n public abstract setTransform(transform: ITransformModel): void;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ContentChild,\n ElementRef, OnDestroy,\n OnInit\n} from \"@angular/core\";\nimport { F_BACKGROUND, FBackgroundBase } from './f-background-base';\nimport { ITransformModel } from '@foblex/2d';\nimport { F_BACKGROUND_PATTERN, IFBackgroundPattern } from './domain';\nimport { FComponentsStore } from '../f-storage';\nimport { FMediator } from '@foblex/mediator';\nimport { AddPatternToBackgroundRequest } from '../domain';\n\n@Component({\n selector: \"f-background\",\n template: \"<svg><ng-content></ng-content></svg>\",\n styleUrls: [ \"./f-background.component.scss\" ],\n host: {\n 'class': 'f-component f-background'\n },\n providers: [ { provide: F_BACKGROUND, useExisting: FBackgroundComponent } ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FBackgroundComponent extends FBackgroundBase implements OnInit, AfterContentInit, OnDestroy {\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @ContentChild(F_BACKGROUND_PATTERN, { static: false })\n public fBackgroundPattern: IFBackgroundPattern | undefined;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fBackground = this;\n }\n\n public ngAfterContentInit(): void {\n this.fMediator.send(new AddPatternToBackgroundRequest(this.fBackgroundPattern!));\n }\n\n public override isBackgroundElement(element: HTMLElement | SVGElement): boolean {\n return this.hostElement.contains(element);\n }\n\n public setTransform(transform: ITransformModel): void {\n this.fBackgroundPattern?.setTransform(transform);\n }\n\n public ngOnDestroy() {\n this.fComponentsStore.fBackground = undefined;\n }\n}\n","import { FBackgroundComponent } from './f-background.component';\nimport { FRectPatternComponent } from './f-rect-pattern';\nimport { FCirclePatternComponent } from './f-circle-pattern';\n\nexport const F_BACKGROUND_PROVIDERS = [\n\n FBackgroundComponent,\n\n FRectPatternComponent,\n\n FCirclePatternComponent\n];\n","import { IPoint } from '@foblex/2d';\n\nexport class FCanvasChangeEvent {\n constructor(\n public readonly position: IPoint,\n public readonly scale: number,\n ) {\n }\n}\n","import { PointExtensions, TransformModelExtensions, IPoint } from '@foblex/2d';\nimport { Directive, ElementRef, EventEmitter, InjectionToken } from '@angular/core';\nimport { FCanvasChangeEvent } from './domain';\nimport { FNodeBase } from '../f-node';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_CANVAS = new InjectionToken<FCanvasBase>('F_CANVAS');\n\n\n@Directive()\nexport abstract class FCanvasBase implements IHasHostElement {\n\n public abstract fCanvasChange: EventEmitter<FCanvasChangeEvent>;\n\n public abstract fNodes: FNodeBase[];\n\n public abstract hostElement: HTMLElement;\n\n public abstract fGroupsContainer: ElementRef<HTMLElement>;\n\n public abstract fNodesContainer: ElementRef<HTMLElement>;\n\n public abstract fConnectionsContainer: ElementRef<HTMLElement>;\n\n public transform = TransformModelExtensions.default();\n\n public abstract redraw(): void;\n\n public abstract redrawWithAnimation(): void;\n\n public getPosition(): IPoint {\n return this.transform.position;\n }\n\n public setPosition(position: IPoint): void {\n this.transform.position = position;\n }\n\n public abstract setZoom(scale: number, toPosition: IPoint): void;\n\n public abstract resetZoom(): void;\n\n public emitCanvasChangeEvent(): void {\n this.fCanvasChange.emit(\n new FCanvasChangeEvent(PointExtensions.sum(this.transform.position, this.transform.scaledPosition), this.transform.scale)\n );\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild,\n} from \"@angular/core\";\nimport {\n FCanvasBase, F_CANVAS\n} from './f-canvas-base';\nimport { IPoint, PointExtensions, TransformModelExtensions } from '@foblex/2d';\nimport {\n FCanvasChangeEvent,\n} from './domain';\nimport { FComponentsStore } from '../f-storage';\nimport { FNodeBase } from '../f-node';\nimport { FMediator } from '@foblex/mediator';\nimport {\n CenterGroupOrNodeRequest,\n EmitTransformChangesRequest,\n F_CANVAS_ANIMATION_DURATION,\n FitToFlowRequest,\n InputCanvasPositionRequest,\n InputCanvasScaleRequest,\n ResetScaleAndCenterRequest, ResetScaleRequest, UpdateScaleRequest,\n} from '../domain';\n\n@Component({\n selector: 'f-canvas',\n templateUrl: './f-canvas.component.html',\n styleUrls: [ './f-canvas.component.scss' ],\n exportAs: 'fComponent',\n host: {\n 'class': 'f-component f-canvas',\n },\n providers: [\n { provide: F_CANVAS, useExisting: FCanvasComponent }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FCanvasComponent extends FCanvasBase implements OnInit {\n\n @Output()\n public override fCanvasChange: EventEmitter<FCanvasChangeEvent> = new EventEmitter<FCanvasChangeEvent>();\n\n @Input()\n public set position(value: IPoint | undefined) {\n this.fMediator.send(new InputCanvasPositionRequest(this.transform, value));\n }\n\n @Input()\n public set scale(value: number | undefined) {\n this.fMediator.send(new InputCanvasScaleRequest(this.transform, value));\n }\n\n public override get fNodes(): FNodeBase[] {\n return this.fComponentsStore.fNodes;\n }\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @ViewChild('fGroupsContainer', { static: true })\n public override fGroupsContainer!: ElementRef<HTMLElement>;\n\n @ViewChild('fNodesContainer', { static: true })\n public override fNodesContainer!: ElementRef<HTMLElement>;\n\n @ViewChild('fConnectionsContainer', { static: true })\n public override fConnectionsContainer!: ElementRef<HTMLElement>;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore,\n ) {\n super();\n }\n\n public ngOnInit() {\n this.fComponentsStore.fCanvas = this;\n }\n\n public override redraw(): void {\n this.fComponentsStore.fBackground?.setTransform(this.transform);\n this.hostElement.setAttribute(\"style\", `transform: ${ TransformModelExtensions.toString(this.transform) }`);\n this.fMediator.send(new EmitTransformChangesRequest());\n }\n\n public override redrawWithAnimation(): void {\n this.fComponentsStore.fBackground?.setTransform(this.transform);\n this.hostElement.setAttribute(\"style\", `transition: transform ${ F_CANVAS_ANIMATION_DURATION }ms ease-in-out; transform: ${ TransformModelExtensions.toString(this.transform) }`);\n setTimeout(() => {\n this.redraw();\n }, F_CANVAS_ANIMATION_DURATION);\n }\n\n public centerGroupOrNode(id: string, animated: boolean = true): void {\n this.fMediator.send(new CenterGroupOrNodeRequest(id, animated));\n }\n\n public fitToScreen(toCenter: IPoint = PointExtensions.initialize(), animated: boolean = true): void {\n this.fMediator.send(new FitToFlowRequest(toCenter, animated));\n }\n\n public resetScaleAndCenter(animated: boolean = true): void {\n this.fMediator.send(new ResetScaleAndCenterRequest(animated));\n }\n\n public override setZoom(scale: number, toPosition: IPoint = PointExtensions.initialize()): void {\n this.fMediator.send(new UpdateScaleRequest(scale, toPosition));\n }\n\n public override resetZoom(): void {\n this.fMediator.send(new ResetScaleRequest());\n }\n}\n","<ng-container>\n <div #fGroupsContainer>\n <ng-content select=\"[fGroup]\"></ng-content>\n </div>\n <div #fConnectionsContainer>\n <ng-content select=\"f-snap-connection\"></ng-content>\n <ng-content select=\"f-connection\"></ng-content>\n <ng-content select=\"f-connection-for-create\"></ng-content>\n </div>\n\n <div #fNodesContainer>\n <ng-content select=\"[fNode]\"></ng-content>\n </div>\n</ng-container>\n","import { FCanvasComponent } from './f-canvas.component';\n\nexport const F_CANVAS_PROVIDERS = [\n\n FCanvasComponent,\n];\n","import { ILineAlignmentRect } from './i-line-alignment-rect';\nimport { BrowserService } from '@foblex/platform';\n\nexport class LineElement {\n\n private readonly element: HTMLElement;\n\n constructor(\n fBrowser: BrowserService,\n private readonly hostElement: HTMLElement,\n ) {\n this.element = fBrowser.document.createElement('div');\n this.hostElement.appendChild(this.element);\n this.element.classList.add('f-line');\n }\n\n public hide(): void {\n this.element.style.display = 'none';\n }\n\n public show(): void {\n this.element.style.display = 'block'\n }\n\n public draw(object: Partial<ILineAlignmentRect>): void {\n this.element.style.position = 'absolute';\n Object.keys(object).forEach((key: string) => {\n // @ts-ignore\n this.element.style[ key ] = object[ key ] + 'px';\n });\n }\n}\n\n","import { ISize, ITransformModel } from '@foblex/2d';\nimport { LineElement } from './line-element';\nimport { BrowserService } from '@foblex/platform';\n\nexport class LineService {\n\n private fHorizontalLine: LineElement;\n private fVerticalLine: LineElement;\n\n constructor(fBrowser: BrowserService, private hostElement: HTMLElement) {\n this.fHorizontalLine = new LineElement(fBrowser, this.hostElement);\n this.fVerticalLine = new LineElement(fBrowser, this.hostElement);\n this.fHorizontalLine.hide();\n this.fVerticalLine.hide();\n }\n\n public drawVerticalLine(x: number, size: ISize, transform: ITransformModel): void {\n this.fVerticalLine.show();\n this.fVerticalLine.draw({\n left: x * transform.scale + transform.position.x + transform.scaledPosition.x,\n top: 0,\n width: 1,\n height: size.height\n });\n }\n\n public drawHorizontalLine(y: number, size: ISize, transform: ITransformModel): void {\n this.fHorizontalLine.show();\n this.fHorizontalLine.draw({\n left: 0,\n top: y * transform.scale + transform.position.y + transform.scaledPosition.y,\n width: size.width,\n height: 1\n });\n }\n\n public hideVerticalLine(): void {\n this.fVerticalLine.hide();\n }\n\n public hideHorizontalLine(): void {\n this.fHorizontalLine.hide();\n }\n}\n","import { IRect } from '@foblex/2d';\nimport { INearestCoordinateResult } from './i-nearest-coordinate-result';\n\n/**\n * A class to find the nearest coordinate.\n */\nexport class NearestCoordinateFinder {\n\n\n private elements: IRect[];\n private target: IRect;\n\n /**\n * Constructor to initialize the NearestCoordinateFinder.\n * @param elements - The array of IRect elements.\n * @param target - The target IRect element.\n * @param alignThreshold - The threshold to align the elements.\n */\n constructor(elements: IRect[], target: IRect, private alignThreshold: number = 10) {\n this.elements = elements;\n this.target = target;\n }\n\n /**\n * Finds the nearest coordinate on a specified axis.\n * @returns The nearest coordinate and its distance.\n */\n public findNearestCoordinateByX(): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of this.elements) {\n const distanceLeftLeft = this.target.x - element.x;\n const distanceLeftRight = this.target.x - (element.x + element.width);\n const distanceCenterCenter = this.target.gravityCenter.x - element.gravityCenter.x;\n const distanceRightLeft = (this.target.x + this.target.width) - element.x;\n const distanceRightRight = (this.target.x + this.target.width) - (element.x + element.width);\n\n if (\n Math.abs(distanceLeftLeft) <= this.alignThreshold ||\n Math.abs(distanceLeftRight) <= this.alignThreshold ||\n Math.abs(distanceCenterCenter) <= this.alignThreshold ||\n Math.abs(distanceRightLeft) <= this.alignThreshold ||\n Math.abs(distanceRightRight) <= this.alignThreshold\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.x;\n }\n if (Math.abs(distanceLeftLeft) < Math.abs(minDistance)) {\n minDistance = distanceLeftLeft;\n nearest = element.x;\n }\n if (Math.abs(distanceRightRight) < Math.abs(minDistance)) {\n minDistance = distanceRightRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceLeftRight) < Math.abs(minDistance)) {\n minDistance = distanceLeftRight;\n nearest = element.x + element.width;\n }\n if (Math.abs(distanceRightLeft) < Math.abs(minDistance)) {\n minDistance = distanceRightLeft;\n nearest = element.x;\n }\n }\n }\n return { value: nearest, distance: minDistance };\n }\n\n\n /**\n * Finds the nearest coordinate on a specified axis.\n * @returns The nearest coordinate and its distance.\n */\n public findNearestCoordinateByY(): INearestCoordinateResult {\n let nearest: number | undefined;\n let minDistance: number | undefined;\n\n for (const element of this.elements) {\n const distanceTopTop = this.target.y - element.y;\n const distanceTopBottom = this.target.y - (element.y + element.height);\n const distanceCenterCenter = this.target.gravityCenter.y - element.gravityCenter.y;\n const distanceBottomTop = (this.target.y + this.target.height) - element.y;\n const distanceBottomBottom = (this.target.y + this.target.height) - (element.y + element.height);\n\n if (\n Math.abs(distanceTopTop) <= this.alignThreshold ||\n Math.abs(distanceTopBottom) <= this.alignThreshold ||\n Math.abs(distanceCenterCenter) <= this.alignThreshold ||\n Math.abs(distanceBottomTop) <= this.alignThreshold ||\n Math.abs(distanceBottomBottom) <= this.alignThreshold\n ) {\n if (minDistance === undefined || Math.abs(distanceCenterCenter) < Math.abs(minDistance)) {\n minDistance = distanceCenterCenter;\n nearest = element.gravityCenter.y;\n }\n if (Math.abs(distanceTopTop) < Math.abs(minDistance)) {\n minDistance = distanceTopTop;\n nearest = element.y;\n }\n if (Math.abs(distanceBottomBottom) < Math.abs(minDistance)) {\n minDistance = distanceBottomBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceTopBottom) < Math.abs(minDistance)) {\n minDistance = distanceTopBottom;\n nearest = element.y + element.height;\n }\n if (Math.abs(distanceBottomTop) < Math.abs(minDistance)) {\n minDistance = distanceBottomTop;\n nearest = element.y;\n }\n }\n }\n\n return { value: nearest, distance: minDistance };\n }\n}\n\n","import { IPoint } from '@foblex/2d';\nimport { Directive, InjectionToken } from '@angular/core';\nimport { ILineAlignmentResult } from './domain';\nimport { FNodeBase } from '../f-node';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_LINE_ALIGNMENT = new InjectionToken<FLineAlignmentBase>('F_LINE_ALIGNMENT');\n\n@Directive()\nexport abstract class FLineAlignmentBase implements IHasHostElement {\n\n public abstract hostElement: HTMLElement | SVGElement;\n\n public abstract initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void;\n\n public abstract findNearestCoordinate(difference: IPoint): ILineAlignmentResult;\n\n public abstract handle(difference: IPoint): void;\n\n public abstract complete(): void;\n}\n","import { Component, ElementRef, Input, OnInit } from '@angular/core';\nimport { IPoint, IRect, ISize, ITransformModel, RectExtensions, SizeExtensions } from '@foblex/2d';\nimport { ILineAlignmentResult, LineService, NearestCoordinateFinder } from './domain';\nimport { F_LINE_ALIGNMENT, FLineAlignmentBase } from './f-line-alignment-base';\nimport { FComponentsStore } from '../f-storage';\nimport { FDraggableDataContext } from '../f-draggable';\nimport { FNodeBase } from '../f-node';\nimport { GetElementRectInFlowRequest } from '../domain';\nimport { FMediator } from '@foblex/mediator';\nimport { BrowserService } from '@foblex/platform';\n\n@Component({\n selector: \"f-line-alignment\",\n template: \"\",\n styleUrls: [ \"./f-line-alignment.component.scss\" ],\n exportAs: \"fComponent\",\n host: {\n 'class': 'f-line-alignment f-component'\n },\n providers: [\n { provide: F_LINE_ALIGNMENT, useExisting: FLineAlignmentComponent }\n ],\n})\nexport class FLineAlignmentComponent extends FLineAlignmentBase implements OnInit {\n\n @Input()\n public fAlignThreshold: number = 10;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n private lineService: LineService;\n\n private size: ISize = SizeExtensions.initialize();\n\n private draggedNodeRect: IRect = RectExtensions.initialize();\n\n private rects: IRect[] = [];\n\n private get transform(): ITransformModel {\n return this.fComponentsStore.fCanvas!.transform;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.fFlow!.hostElement;\n }\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fDraggableDataContext: FDraggableDataContext,\n private fMediator: FMediator,\n fBrowser: BrowserService\n ) {\n super();\n this.lineService = new LineService(fBrowser, this.hostElement);\n }\n\n public ngOnInit(): void {\n this.fDraggableDataContext.fLineAlignment = this;\n }\n\n public override initialize(allNodes: FNodeBase[], currentNodes: FNodeBase[]): void {\n this.size = this.flowHost.getBoundingClientRect();\n this.rects = [];\n const draggedNodeRects = currentNodes.map((x) => {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement));\n });\n this.draggedNodeRect = RectExtensions.union(draggedNodeRects) || RectExtensions.initialize();\n\n const allNodesExcludeCurrents = allNodes.filter((x) => {\n return !currentNodes.includes(x);\n });\n\n this.rects = allNodesExcludeCurrents.map((x) => {\n return this.fMediator.send<IRect>(new GetElementRectInFlowRequest(x.hostElement));\n });\n }\n\n public override handle(difference: IPoint): void {\n this.drawIntersectingLines(difference);\n }\n\n private drawIntersectingLines(difference: IPoint): void {\n const intersect = this.findNearestCoordinate(difference);\n if (intersect.xResult.value !== undefined) {\n this.lineService.drawVerticalLine(intersect.xResult.value, this.size, this.transform);\n } else {\n this.lineService.hideVerticalLine();\n }\n if (intersect.yResult.value !== undefined) {\n this.lineService.drawHorizontalLine(intersect.yResult.value, this.size, this.transform);\n } else {\n this.lineService.hideHorizontalLine();\n }\n }\n\n public findNearestCoordinate(difference: IPoint): ILineAlignmentResult {\n const rect = RectExtensions.addPoint(this.draggedNodeRect, difference);\n const finder = new NearestCoordinateFinder(this.rects, rect, this.fAlignThreshold);\n\n return { xResult: finder.findNearestCoordinateByX(), yResult: finder.findNearestCoordinateByY() };\n }\n\n public override complete(): void {\n this.lineService.hideVerticalLine();\n this.lineService.hideHorizontalLine();\n }\n}\n","import { FLineAlignmentComponent } from './f-line-alignment.component';\n\nexport const F_LINE_ALIGNMENT_PROVIDERS = [\n FLineAlignmentComponent\n];\n","import {\n Directive, ElementRef, Input,\n} from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport { IRect, ISize, RectExtensions, SizeExtensions } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport { checkRectIsFinite, FMinimapData } from './domain';\nimport { GetNodesRectRequest } from '../domain';\n\n@Directive({\n selector: 'svg[fMinimapFlow]'\n})\nexport class FMinimapFlowDirective {\n\n public model: FMinimapData;\n\n @Input()\n public fMinSize: number = 1000;\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n public get hostElement(): SVGSVGElement {\n return this.elementReference.nativeElement;\n }\n\n constructor(\n private elementReference: ElementRef<SVGSVGElement>,\n private fMediator: FMediator,\n private fComponentsStore: FComponentsStore\n ) {\n this.model = new FMinimapData(this.hostElement);\n }\n\n public update(): void {\n const nodesRect = this.getProcessedNodesRect();\n const minimapRect = this.getMinimapRect();\n\n const scale = this.calculateViewScale(nodesRect, minimapRect);\n const viewBox = this.calculateViewBox(nodesRect, minimapRect, scale);\n this.model = new FMinimapData(this.hostElement, scale, viewBox);\n this.setViewBox(viewBox);\n }\n\n private getProcessedNodesRect(): IRect {\n const normalizedRect = this.normalizeRect(this.getNodesRect());\n return this.ensureMinimumSize(normalizedRect);\n }\n\n private getNodesRect(): IRect {\n const rect = this.fMediator.send<IRect | null>(new GetNodesRectRequest()) || RectExtensions.initialize(0, 0, 0, 0);\n return RectExtensions.elementTransform(rect, this.flowHost)\n }\n\n private getMinimapRect(): IRect {\n return RectExtensions.elementTransform(RectExtensions.fromElement(this.hostElement), this.flowHost);\n }\n\n private normalizeRect(rect: IRect): IRect {\n return RectExtensions.div(rect, this.fComponentsStore.transform.scale);\n }\n\n private ensureMinimumSize(rect: IRect): IRect {\n return RectExtensions.initialize(\n rect.x - (Math.max(rect.width, this.fMinSize) - rect.width) / 2,\n rect.y - (Math.max(rect.height, this.fMinSize) - rect.height) / 2,\n Math.max(rect.width, this.fMinSize),\n Math.max(rect.height, this.fMinSize)\n );\n }\n\n private calculateViewScale(nodesRect: IRect, minimapRect: IRect): number {\n return Math.max(nodesRect.width / minimapRect.width, nodesRect.height / minimapRect.height);\n }\n\n private calculateViewBox(nodesRect: IRect, minimapRect: IRect, scale: number): IRect {\n return this.calculateCenteredViewBox(nodesRect, this.calculateViewSize(minimapRect, scale));\n }\n\n private calculateViewSize(minimapRect: IRect, scale: number): ISize {\n return SizeExtensions.initialize(minimapRect.width * scale || 0, minimapRect.height * scale || 0);\n }\n\n private calculateCenteredViewBox(nodesRect: IRect, viewSize: ISize): IRect {\n const centeredX = nodesRect.x - (viewSize.width - nodesRect.width) / 2;\n const centeredY = nodesRect.y - (viewSize.height - nodesRect.height) / 2;\n return RectExtensions.initialize(centeredX, centeredY, viewSize.width, viewSize.height);\n }\n\n private setViewBox(viewBox: IRect): void {\n viewBox = checkRectIsFinite(viewBox);\n this.hostElement.setAttribute('viewBox', `${ viewBox.x } ${ viewBox.y } ${ viewBox.width } ${ viewBox.height }`);\n }\n}\n","import {\n Directive, ElementRef,\n} from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport {\n IRect,\n RectExtensions\n} from '@foblex/2d';\nimport { FNodeBase, FNodeDirective } from '../f-node';\nimport { BrowserService } from '@foblex/platform';\nimport { createSVGElement } from '../domain';\nimport { checkRectIsFinite } from './domain';\n\n@Directive({\n selector: 'g[fMinimapCanvas]'\n})\nexport class FMinimapCanvasDirective {\n\n public get hostElement(): SVGGElement {\n return this.elementReference.nativeElement;\n }\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get flowScale(): number {\n return this.fComponentsStore.transform.scale;\n }\n\n constructor(\n private elementReference: ElementRef<SVGGElement>,\n private fComponentsStore: FComponentsStore,\n private fBrowser: BrowserService\n ) {\n }\n\n public redraw(): void {\n this.clearCanvas();\n this.fComponentsStore.fNodes.forEach((x) => this.renderNode(x));\n }\n\n private clearCanvas(): void {\n this.hostElement.innerHTML = '';\n }\n\n private renderNode(node: FNodeBase): void {\n const element = createSVGElement('rect', this.fBrowser);\n this.configureNodeElement(element, node);\n this.hostElement.appendChild(element);\n }\n\n private configureNodeElement(element: SVGRectElement, node: FNodeBase): void {\n this.setElementAttributes(element, this.getNodeRect(node));\n this.applyClassList(element, node, node instanceof FNodeDirective);\n }\n\n private getNodeRect(node: FNodeBase): IRect {\n const nodeRectInFlow = RectExtensions.elementTransform(RectExtensions.fromElement(node.hostElement), this.flowHost);\n return RectExtensions.div(nodeRectInFlow, this.flowScale);\n }\n\n private setElementAttributes(element: SVGRectElement, rect: IRect): void {\n rect = checkRectIsFinite(rect);\n element.setAttribute('x', rect.x.toString());\n element.setAttribute('y', rect.y.toString());\n element.setAttribute('width', rect.width.toString());\n element.setAttribute('height', rect.height.toString());\n }\n\n private applyClassList(element: SVGRectElement, node: FNodeBase, isNode: boolean): void {\n element.classList.add('f-component', isNode ? 'f-minimap-node' : 'f-minimap-group');\n if (node.isSelected()) {\n element.classList.add('f-selected');\n }\n }\n}\n","import { Directive, ElementRef } from \"@angular/core\";\nimport { FComponentsStore } from '../f-storage';\nimport { IRect, RectExtensions } from '@foblex/2d';\nimport { checkRectIsFinite } from './domain';\n\n@Directive({\n selector: 'rect[fMinimapView]',\n host: {\n 'class': 'f-component f-minimap-view',\n }\n})\nexport class FMinimapViewDirective {\n\n public get hostElement(): SVGRectElement {\n return this.elementReference.nativeElement;\n }\n\n private get flowScale(): number {\n return this.fComponentsStore!.transform!.scale!;\n }\n\n constructor(\n private elementReference: ElementRef<SVGRectElement>,\n private fComponentsStore: FComponentsStore\n ) {\n }\n\n public update(): void {\n const viewBox = RectExtensions.div(RectExtensions.fromElement(this.fComponentsStore.flowHost), this.flowScale);\n this.setAttributes(viewBox);\n }\n\n private setAttributes(viewBox: IRect): void {\n viewBox = checkRectIsFinite(viewBox);\n this.hostElement.setAttribute('x', '0');\n this.hostElement.setAttribute('y', '0');\n this.hostElement.setAttribute('width', viewBox.width.toString());\n this.hostElement.setAttribute('height', viewBox.height.toString());\n }\n}\n","import {\n AfterViewInit, ChangeDetectionStrategy, Component,\n ElementRef, Input, OnDestroy, ViewChild,\n} from \"@angular/core\";\nimport { FMediator } from '@foblex/mediator';\nimport { Observable, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { SubscribeOnTransformChangesRequest } from '../domain';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { IPointerEvent } from '@foblex/drag-toolkit';\nimport { F_DRAG_AND_DROP_PLUGIN, IFDragAndDropPlugin } from '../f-draggable';\nimport { MinimapDragFinalizeRequest, MinimapDragPreparationRequest } from './domain';\n\n@Component({\n selector: 'f-minimap',\n templateUrl: './f-minimap.component.html',\n styleUrls: [ './f-minimap.component.scss' ],\n exportAs: 'fComponent',\n host: {\n 'class': 'f-component f-minimap',\n },\n providers: [\n { provide: F_DRAG_AND_DROP_PLUGIN, useExisting: FMinimapComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FMinimapComponent implements AfterViewInit, OnDestroy, IFDragAndDropPlugin {\n\n private subscriptions$: Subscription = new Subscription();\n\n @ViewChild(FMinimapCanvasDirective, { static: true })\n public fMinimapCanvas!: FMinimapCanvasDirective;\n\n @ViewChild(FMinimapFlowDirective, { static: true })\n public fMinimapFlow!: FMinimapFlowDirective;\n\n @ViewChild(FMinimapViewDirective, { static: true })\n public fMinimapView!: FMinimapViewDirective;\n\n @Input()\n public fMinSize: number = 1000;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fMediator: FMediator\n ) {\n }\n\n public ngAfterViewInit(): void {\n this.subscriptions$.add(this.subscribeOnTransformChanges());\n }\n\n private subscribeOnTransformChanges(): Subscription {\n return this.getTransformChanges().pipe(debounceTime(5)).subscribe(() => {\n this.fMinimapFlow.update();\n this.fMinimapView.update();\n this.fMinimapCanvas.redraw();\n });\n }\n\n private getTransformChanges(): Observable<void> {\n return this.fMediator.send<Observable<void>>(new SubscribeOnTransformChangesRequest());\n }\n\n public onPointerDown(event: IPointerEvent): void {\n this.fMediator.send(new MinimapDragPreparationRequest(event, this.fMinimapFlow.model));\n }\n\n public onPointerUp(event: IPointerEvent): void {\n this.fMediator.send(new MinimapDragFinalizeRequest(event));\n }\n\n public ngOnDestroy(): void {\n this.subscriptions$.unsubscribe();\n }\n}\n","<svg fMinimapFlow width=\"100%\" height=\"100%\" fLockedContext [fMinSize]=\"fMinSize\">\n <g fMinimapCanvas></g>\n <rect fMinimapView x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" stroke=\"none\"/>\n</svg>\n\n","import { FMinimapComponent } from './f-minimap.component';\nimport { FMinimapViewDirective } from './f-minimap-view.directive';\nimport { FMinimapFlowDirective } from './f-minimap-flow.directive';\nimport { FMinimapCanvasDirective } from './f-minimap-canvas.directive';\n\nexport const F_MINIMAP_PROVIDERS = [\n\n FMinimapComponent,\n\n FMinimapCanvasDirective,\n\n FMinimapViewDirective,\n\n FMinimapFlowDirective,\n];\n","import { EventEmitter, InjectionToken } from '@angular/core';\nimport { IHasHostElement } from '../i-has-host-element';\n\nexport const F_FLOW = new InjectionToken<FFlowBase>('F_FLOW');\n\nexport abstract class FFlowBase implements IHasHostElement {\n\n public abstract fFlowId: string;\n\n public abstract hostElement: HTMLElement;\n\n public abstract fLoaded: EventEmitter<void>;\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component, ElementRef, EventEmitter,\n Input, OnDestroy, OnInit, Output\n} from '@angular/core';\nimport { F_FLOW, FFlowBase } from './f-flow-base';\nimport { Subscription } from 'rxjs';\nimport { startWith, debounceTime } from 'rxjs/operators';\nimport {\n ClearSelectionRequest,\n GetScaledNodeRectsWithFlowPositionRequest,\n GetPositionInFlowRequest,\n GetSelectionRequest,\n RedrawConnectionsRequest,\n SelectAllRequest,\n SelectRequest,\n SortItemLayersRequest,\n IFFlowState,\n GetFlowStateRequest\n} from '../domain';\nimport { IPoint, IRect } from '@foblex/2d';\nimport { FMediator } from '@foblex/mediator';\nimport {\n FDraggableDataContext, FSelectionChangeEvent\n} from '../f-draggable';\nimport { FConnectionFactory } from '../f-connection';\nimport { FComponentsStore, FTransformStore } from '../f-storage';\nimport { BrowserService } from '@foblex/platform';\nimport { COMMON_PROVIDERS } from '../domain';\nimport { F_DRAGGABLE_PROVIDERS } from '../f-draggable';\n\nlet uniqueId: number = 0;\n\n@Component({\n selector: 'f-flow',\n templateUrl: './f-flow.component.html',\n styleUrls: [ './f-flow.component.scss' ],\n host: {\n '[attr.id]': 'fFlowId',\n class: \"f-component f-flow\",\n },\n providers: [\n FMediator,\n FComponentsStore,\n FTransformStore,\n FDraggableDataContext,\n FConnectionFactory,\n ...COMMON_PROVIDERS,\n ...F_DRAGGABLE_PROVIDERS,\n { provide: F_FLOW, useExisting: FFlowComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FFlowComponent extends FFlowBase implements OnInit, AfterContentInit, OnDestroy {\n\n private subscription$: Subscription = new Subscription();\n\n @Input()\n public override fFlowId: string = `f-flow-${ uniqueId++ }`;\n\n public override get hostElement(): HTMLElement {\n return this.elementReference.nativeElement;\n }\n\n @Output()\n public override fLoaded: EventEmitter<void> = new EventEmitter<void>();\n\n private isLoaded: boolean = false;\n\n constructor(\n private elementReference: ElementRef<HTMLElement>,\n private fComponentsStore: FComponentsStore,\n private fMediator: FMediator,\n private fBrowser: BrowserService,\n ) {\n super();\n }\n\n public ngOnInit(): void {\n this.fComponentsStore.fFlow = this;\n }\n\n public ngAfterContentInit(): void {\n if (!this.fBrowser.isBrowser()) {\n return;\n }\n this.subscription$.add(\n this.subscribeOnElementsChanges()\n );\n this.subscription$.add(\n this.subscribeOnComponentsCountChanges()\n );\n }\n\n private subscribeOnComponentsCountChanges(): Subscription {\n return this.fComponentsStore.componentsCount$.pipe(startWith(null), debounceTime(1)).subscribe(() => {\n this.fMediator.send(new SortItemLayersRequest());\n });\n }\n\n private subscribeOnElementsChanges(): Subscription {\n return this.fComponentsStore.componentsData$.pipe(startWith(null), debounceTime(1)).subscribe(() => {\n this.fMediator.send(new RedrawConnectionsRequest());\n\n if (!this.isLoaded) {\n this.isLoaded = true;\n this.fLoaded.emit();\n }\n });\n }\n\n public redraw(): void {\n this.fComponentsStore.componentDataChanged();\n }\n\n public reset(): void {\n this.isLoaded = false;\n }\n\n public getAllNodesRect(): IRect | null {\n return this.fMediator.send<IRect | null>(new GetScaledNodeRectsWithFlowPositionRequest());\n }\n\n public getSelection(): FSelectionChangeEvent {\n return this.fMediator.send<FSelectionChangeEvent>(new GetSelectionRequest());\n }\n\n public getPositionInFlow(position: IPoint): IRect {\n return this.fMediator.send(new GetPositionInFlowRequest(position));\n }\n\n public getState(): IFFlowState {\n return this.fMediator.send(new GetFlowStateRequest());\n }\n\n public selectAll(): void {\n this.fMediator.send<void>(new SelectAllRequest());\n }\n\n public select(nodes: string[], connections: string[]): void {\n this.fMediator.send<void>(new SelectRequest(nodes, connections));\n }\n\n public clearSelection(): void {\n this.fMediator.send<void>(new ClearSelectionRequest());\n }\n\n public ngOnDestroy(): void {\n this.subscription$.unsubscribe();\n }\n}\n","<ng-container>\n <ng-content select=\"[fDefinitions]\"></ng-content>\n\n <ng-content select=\"f-background\"></ng-content>\n\n <ng-content select=\"f-line-alignment\"></ng-content>\n\n <ng-content select=\"f-canvas\"></ng-content>\n\n <ng-content select=\"f-selection-area\"></ng-content>\n\n <ng-content select=\"f-minimap\"></ng-content>\n</ng-container>\n","import { FFlowComponent } from './f-flow.component';\n\nexport const F_FLOW_PROVIDERS = [\n FFlowComponent\n];\n","import { EventExtensions } from '@foblex/drag-toolkit';\nimport { IPoint, Point, RectExtensions } from '@foblex/2d';\nimport { InjectionToken } from '@angular/core';\nimport { FCanvasBase } from '../f-canvas';\nimport { FComponentsStore } from '../f-storage';\nimport { isNode } from '../f-node';\n\nexport const F_ZOOM = new InjectionToken<FZoomBase>('F_ZOOM');\n\nexport abstract class FZoomBase {\n\n protected isEnabled: boolean = false;\n\n public abstract minimum: number;\n public abstract maximum: number;\n\n public abstract step: number;\n public abstract dblClickStep: number;\n\n private listeners: Function = EventExtensions.emptyListener();\n\n private get flowHost(): HTMLElement {\n return this.fComponentsStore.flowHost;\n }\n\n private get fCanvas(): FCanvasBase {\n return this.fComponentsStore.fCanvas as FCanvasBase;\n }\n\n protected constructor(\n protected fComponentsStore: FComponentsStore\n ) {\n }\n\n protected toggleZoom(): void {\n if (this.isEnabled) {\n this.subscribe();\n } else {\n this.unsubscribe();\n }\n }\n\n private subscribe(): void {\n this.listeners();\n if (!this.flowHost) {\n return;\n }\n\n this.flowHost.addEventListener('wheel', this.onWheel.bind(this));\n this.flowHost.addEventListener('dblclick', this.onDoubleClick.bind(this));\n this.listeners = () => {\n this.flowHost.removeEventListener('wheel', this.onWheel.bind(this));\n this.flowHost.removeEventListener('dblclick', this.onDoubleClick.bind(this));\n };\n }\n\n public getScale(): number {\n return this.fCanvas.transform.scale || 1;\n }\n\n private onWheel(event: WheelEvent): void {\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (this.fComponentsStore.fDraggable?.isDragStarted || targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n let result: number = this.getScale();\n\n const direction = event.deltaY > 0 ? -1 : 1;\n const step = this.step;\n result = result + step * direction;\n\n result = Math.max(this.minimum, Math.min(result, this.maximum));\n\n const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);\n\n this.fCanvas.setZoom(result, pointerPositionInFlow);\n this.fCanvas.redraw();\n this.fCanvas.emitCanvasChangeEvent();\n }\n\n private onDoubleClick(event: MouseEvent): void {\n event.preventDefault();\n const targetElement = event.target as HTMLElement;\n\n if (this.fComponentsStore.fDraggable?.isDragStarted || isNode(targetElement) || targetElement?.closest('[fLockedContext]')) {\n return;\n }\n\n let result: number = this.getScale();\n\n const direction = 1;\n const step = this.dblClickStep;\n result = result + step * direction;\n\n result = Math.max(this.minimum, Math.min(result, this.maximum));\n\n const pointerPositionInFlow = new Point(event.clientX, event.clientY).elementTransform(this.flowHost);\n this.fCanvas.setZoom(result, pointerPositionInFlow);\n this.fCanvas.redrawWithAnimation();\n this.fCanvas.emitCanvasChangeEvent();\n }\n\n private onZoomToCenter(deltaY: number, position?: IPoint): void {\n const preventDefault = () => {\n };\n const rect = RectExtensions.fromElement(this.flowHost);\n\n this.onWheel({\n deltaY, preventDefault, clientX: position?.x || rect.gravityCenter.x, clientY: position?.y || rect.gravityCenter.y\n } as WheelEvent);\n }\n\n public zoomIn(position?: IPoint): void {\n this.onZoomToCenter(-1, position);\n }\n\n public zoomOut(position?: IPoint): void {\n this.onZoomToCenter(1, position);\n }\n\n public reset(): void {\n this.fCanvas.resetZoom();\n this.fCanvas.redraw();\n this.fCanvas.emitCanvasChangeEvent();\n }\n\n protected unsubscribe(): void {\n this.listeners();\n this.listeners = EventExtensions.emptyListener();\n }\n}\n","import {\n AfterViewInit,\n Directive, Input, OnDestroy\n} from \"@angular/core\";\nimport { F_ZOOM, FZoomBase } from './f-zoom-base';\nimport { FComponentsStore } from '../f-storage';\nimport { castToBoolean } from '@foblex/utils';\n\n@Directive({\n selector: \"f-canvas[fZoom]\",\n exportAs: 'fComponent',\n host: {\n 'class': 'f-zoom f-component'\n },\n providers: [ { provide: F_ZOOM, useExisting: FZoomDirective } ],\n})\nexport class FZoomDirective extends FZoomBase implements AfterViewInit, OnDestroy {\n\n @Input('fZoom')\n public get fFlowZoom(): boolean {\n return this.isEnabled;\n }\n\n public set fFlowZoom(isEnabled: boolean | undefined | string) {\n const value = castToBoolean(isEnabled);\n if (value !== this.isEnabled) {\n this.isEnabled = value;\n this.toggleZoom();\n }\n }\n\n @Input('fZoomMinimum')\n public override minimum: number = 0.1;\n\n @Input('fZoomMaximum')\n public override maximum: number = 4;\n\n @Input('fZoomStep')\n public override step: number = 0.1;\n\n @Input('fZoomDblClickStep')\n public override dblClickStep: number = 0.5;\n\n constructor(\n fComponentsStore: FComponentsStore,\n ) {\n super(fComponentsStore);\n }\n\n public ngAfterViewInit(): void {\n super.toggleZoom();\n }\n\n public ngOnDestroy(): void {\n super.unsubscribe();\n }\n}\n","import { FZoomDirective } from './f-zoom.directive';\n\nexport const F_ZOOM_PROVIDERS = [\n\n FZoomDirective\n];\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { F_CONNECTION_PROVIDERS, } from './f-connection';\nimport { F_NODE_PROVIDERS } from './f-node';\nimport { F_FLOW_PROVIDERS } from './f-flow';\nimport { F_BACKGROUND_PROVIDERS } from './f-backgroud';\nimport { F_CANVAS_PROVIDERS } from './f-canvas';\nimport { F_CONNECTORS_PROVIDERS } from './f-connectors';\nimport { FDraggableDirective } from './f-draggable';\nimport { F_EXTERNAL_ITEM_PROVIDERS } from './f-external-item';\nimport { F_SELECTION_AREA_PROVIDERS } from './f-selection-area';\nimport { F_LINE_ALIGNMENT_PROVIDERS } from './f-line-alignment';\nimport { F_MINIMAP_PROVIDERS } from './f-minimap';\nimport { F_ZOOM_PROVIDERS } from './f-zoom';\n\n@NgModule({\n declarations: [\n ...F_BACKGROUND_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n ...F_FLOW_PROVIDERS,\n ...F_LINE_ALIGNMENT_PROVIDERS,\n ...F_MINIMAP_PROVIDERS,\n ...F_NODE_PROVIDERS,\n ...F_SELECTION_AREA_PROVIDERS,\n\n FDraggableDirective,\n ],\n imports: [\n CommonModule,\n ],\n exports: [\n ...F_BACKGROUND_PROVIDERS,\n ...F_CANVAS_PROVIDERS,\n ...F_ZOOM_PROVIDERS,\n ...F_CONNECTION_PROVIDERS,\n ...F_CONNECTORS_PROVIDERS,\n ...F_EXTERNAL_ITEM_PROVIDERS,\n ...F_FLOW_PROVIDERS,\n ...F_LINE_ALIGNMENT_PROVIDERS,\n ...F_MINIMAP_PROVIDERS,\n ...F_NODE_PROVIDERS,\n ...F_SELECTION_AREA_PROVIDERS,\n\n FDraggableDirective,\n ]\n})\nexport class FFlowModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["createSVGElement","i2.FComponentsStore","i1.FTransformStore","uniqueId","i1.FComponentsStore","i2","i1","i1.FDraggableDataContext","i2.FDraggableDataContext","MIXIN_BASE","i3","i1.FConnectionTextPathDirective","i1.FConnectionFactory","i3.FConnectionGradientComponent","i4.FConnectionSelectionComponent","i5.FConnectionPathComponent","i6.FConnectionDragHandleComponent","i7.FConnectionTextComponent","i4","i3.FConnectionBase","OFFSET","i3.FDraggableDataContext","i3.FExternalItemService","i1.FExternalItemService","i2.FMinimapFlowDirective","i3.FMinimapCanvasDirective","i4.FMinimapViewDirective","i1.FBackgroundComponent","i2.FRectPatternComponent","i3.FCirclePatternComponent","i4.FCanvasComponent","i5.FZoomDirective","i6.FConnectionTextComponent","i7.FConnectionTextPathDirective","i8.FConnectionDragHandleComponent","i9.FConnectionGradientComponent","i10.FConnectionPathComponent","i11.FConnectionSelectionComponent","i12.FConnectionComponent","i13.FConnectionCenterDirective","i14.FConnectionForCreateComponent","i15.FMarkerDirective","i16.FSnapConnectionComponent","i17.FNodeInputDirective","i18.FNodeOutletDirective","i19.FNodeOutputDirective","i20.FExternalItemDirective","i21.FFlowComponent","i22.FLineAlignmentComponent","i23.FMinimapComponent","i24.FMinimapCanvasDirective","i25.FMinimapViewDirective","i26.FMinimapFlowDirective","i27.FGroupDirective","i28.FNodeDirective","i29.FDragHandleDirective","i30.FResizeHandleDirective","i31.FSelectionAreaComponent"],"mappings":"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"}
|