@foblex/flow 12.6.2 → 12.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/foblex-flow.umd.js +9635 -0
- package/bundles/foblex-flow.umd.js.map +1 -0
- package/esm2015/domain/cast-to-enum.js +12 -0
- package/esm2015/domain/clear-selection/clear-selection.execution.js +26 -0
- package/{esm2022/domain/create-connection-markers/create-connection-markers-request.mjs → esm2015/domain/create-connection-markers/create-connection-markers-request.js} +1 -2
- package/esm2015/domain/create-connection-markers/create-connection-markers.execution.js +61 -0
- package/esm2015/domain/deep-clone-node.js +47 -0
- package/esm2015/domain/emit-transform-changes/emit-transform-changes.execution.js +24 -0
- package/esm2015/domain/get-can-be-selected-items/get-can-be-selected-items.execution.js +57 -0
- package/esm2015/domain/get-connection-line/get-connection-line.execution.js +68 -0
- package/esm2015/domain/get-connection-line/get-connection-line.request.js +10 -0
- package/esm2015/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.js +35 -0
- package/{esm2022/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.mjs → esm2015/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.request.js} +1 -2
- package/{esm2022/domain/get-element-rect-in-flow/get-element-rect-in-flow-request.mjs → esm2015/domain/get-element-rect-in-flow/get-element-rect-in-flow-request.js} +1 -2
- package/esm2015/domain/get-element-rect-in-flow/get-element-rect-in-flow.execution.js +43 -0
- package/{esm2022/domain/get-input-rect-in-flow/get-input-rect-in-flow-request.mjs → esm2015/domain/get-input-rect-in-flow/get-input-rect-in-flow-request.js} +1 -2
- package/esm2015/domain/get-input-rect-in-flow/get-input-rect-in-flow-response.js +7 -0
- package/esm2015/domain/get-input-rect-in-flow/get-input-rect-in-flow.execution.js +33 -0
- package/esm2015/domain/get-nodes-rect/get-nodes-rect.execution.js +31 -0
- package/{esm2022/domain/get-output-rect-in-flow/get-output-rect-in-flow-request.mjs → esm2015/domain/get-output-rect-in-flow/get-output-rect-in-flow-request.js} +1 -2
- package/esm2015/domain/get-output-rect-in-flow/get-output-rect-in-flow-response.js +7 -0
- package/esm2015/domain/get-output-rect-in-flow/get-output-rect-in-flow.execution.js +37 -0
- package/{esm2022/domain/get-position-in-flow/get-position-in-flow-request.mjs → esm2015/domain/get-position-in-flow/get-position-in-flow-request.js} +1 -2
- package/esm2015/domain/get-position-in-flow/get-position-in-flow.execution.js +32 -0
- package/esm2015/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.execution.js +34 -0
- package/esm2015/domain/get-selection/get-selection.execution.js +35 -0
- package/esm2015/domain/get-value-from-data-attr.js +7 -0
- package/esm2015/domain/intersections/f-connector-shape.extensions.js +46 -0
- package/esm2015/domain/intersections/intersection-finder.js +156 -0
- package/esm2015/domain/intersections/rounded-rect/rounded-rect.js +46 -0
- package/esm2015/domain/is-connection-under-node/is-connection-under-node.execution.js +76 -0
- package/esm2015/domain/redraw-connections/redraw-connections.execution.js +60 -0
- package/esm2015/domain/select/select.execution.js +44 -0
- package/esm2015/domain/select/select.request.js +7 -0
- package/esm2015/domain/select-all/select-all.execution.js +38 -0
- package/esm2015/domain/select-and-update-node-layer/select-and-update-node-layer.execution.js +35 -0
- package/{esm2022/domain/select-and-update-node-layer/select-and-update-node-layer.request.mjs → esm2015/domain/select-and-update-node-layer/select-and-update-node-layer.request.js} +1 -2
- package/esm2015/domain/sort-item-layers/sort-item-layers.execution.js +30 -0
- package/esm2015/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.js +57 -0
- package/{esm2022/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.request.mjs → esm2015/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.request.js} +1 -2
- package/esm2015/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.js +59 -0
- package/esm2015/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.execution.js +26 -0
- package/esm2015/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.js +30 -0
- package/{esm2022/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.mjs → esm2015/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.request.js} +1 -5
- package/{esm2022/domain/update-item-and-children-layers/update-item-and-children-layers.execution.mjs → esm2015/domain/update-item-and-children-layers/update-item-and-children-layers.execution.js} +9 -11
- package/{esm2022/domain/update-item-and-children-layers/update-item-and-children-layers.request.mjs → esm2015/domain/update-item-and-children-layers/update-item-and-children-layers.request.js} +1 -3
- package/{esm2022/f-backgroud/f-background-base.mjs → esm2015/f-backgroud/f-background-base.js} +4 -4
- package/esm2015/f-backgroud/f-background.component.js +71 -0
- package/esm2015/f-backgroud/f-circle-pattern/f-circle-pattern.component.js +104 -0
- package/esm2015/f-backgroud/f-rect-pattern/f-rect-pattern.component.js +122 -0
- package/esm2015/f-canvas/domain/f-canvas-change.event.js +7 -0
- package/esm2015/f-canvas/f-canvas-base.js +27 -0
- package/esm2015/f-canvas/f-canvas.component.js +111 -0
- package/{esm2022/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.mjs → esm2015/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points-request.js} +1 -3
- package/{esm2022/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.mjs → esm2015/f-connection/common/domain/calculate-connection-center/calculate-connection-center-request.js} +1 -2
- package/esm2015/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.js +35 -0
- package/esm2015/f-connection/common/domain/f-bezier.path-builder.js +37 -0
- package/esm2015/f-connection/common/domain/f-segment.path-builder.js +142 -0
- package/esm2015/f-connection/common/f-connection-base.js +62 -0
- package/{esm2022/f-connection/common/f-connection-identifiers.mjs → esm2015/f-connection/common/f-connection-identifiers.js} +1 -1
- package/esm2015/f-connection/common/f-connection-text/f-connection-text-path.directive.js +70 -0
- package/esm2015/f-connection/common/f-connection-text/f-connection-text.component.js +72 -0
- package/esm2015/f-connection/common/f-drag-handle/f-connection-drag-handle.component.js +38 -0
- package/esm2015/f-connection/common/f-gradient/f-connection-gradient.component.js +69 -0
- package/esm2015/f-connection/common/f-path/f-connection-path.component.js +59 -0
- package/{esm2022/f-connection/common/f-path/get-path-marker-id.mjs → esm2015/f-connection/common/f-path/get-path-marker-id.js} +1 -1
- package/esm2015/f-connection/common/f-selection/f-connection-selection.component.js +37 -0
- package/esm2015/f-connection/common/mixins/change-connection-selection.mixin.js +26 -0
- package/esm2015/f-connection/f-connection/f-connection.component.js +184 -0
- package/esm2015/f-connection/f-connection-builder/f-connection-factory.js +34 -0
- package/{esm2022/f-connection/f-connection-center/f-connection-center.directive.mjs → esm2015/f-connection/f-connection-center/f-connection-center.directive.js} +4 -4
- package/esm2015/f-connection/f-connection-for-create/f-connection-for-create.component.js +151 -0
- package/{esm2022/f-connection/f-marker/f-marker-base.mjs → esm2015/f-connection/f-marker/f-marker-base.js} +4 -4
- package/esm2015/f-connection/f-marker/f-marker.directive.js +58 -0
- package/esm2015/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.js +7 -0
- package/esm2015/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.js +38 -0
- package/esm2015/f-connectors/f-connector-base.js +17 -0
- package/esm2015/f-connectors/f-node-input/f-node-input-base.js +19 -0
- package/esm2015/f-connectors/f-node-input/f-node-input.directive.js +88 -0
- package/esm2015/f-connectors/f-node-outlet/f-node-outlet-base.js +23 -0
- package/esm2015/f-connectors/f-node-outlet/f-node-outlet.directive.js +71 -0
- package/esm2015/f-connectors/f-node-output/f-node-output-base.js +19 -0
- package/esm2015/f-connectors/f-node-output/f-node-output.directive.js +95 -0
- package/esm2015/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.js +24 -0
- package/{esm2022/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.request.mjs → esm2015/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.request.js} +1 -2
- package/esm2015/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.validator.js +25 -0
- package/esm2015/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.js +36 -0
- package/{esm2022/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.request.mjs → esm2015/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.request.js} +1 -2
- package/esm2015/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.js +49 -0
- package/esm2015/f-draggable/canvas/canvas.drag-handler.js +18 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.js +56 -0
- package/{esm2022/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.request.mjs → esm2015/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.request.js} +1 -2
- package/esm2015/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.validator.js +25 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.js +45 -0
- package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.request.js} +1 -3
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.js +53 -0
- package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.request.js} +1 -2
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.js +39 -0
- package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.request.js} +1 -2
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.js +34 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.js +43 -0
- package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.request.js} +1 -2
- package/esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.js +32 -0
- package/esm2015/f-draggable/connections/create-connection/create-connection.drag-handler.js +33 -0
- package/esm2015/f-draggable/connections/create-connection/f-create-connection.event.js +8 -0
- package/esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.js +43 -0
- package/{esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.request.mjs → esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.request.js} +1 -2
- package/esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.js +27 -0
- package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.js +74 -0
- package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.js +7 -0
- package/esm2015/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.js +35 -0
- package/esm2015/f-draggable/connections/reassign-connection/f-reassign-connection.event.js +9 -0
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.js +50 -0
- package/{esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.request.mjs → esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.request.js} +1 -2
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.validator.js +25 -0
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.js +64 -0
- package/{esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.mjs → esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.request.js} +1 -2
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.js +44 -0
- package/esm2015/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.js +33 -0
- package/esm2015/f-draggable/domain/get-node-padding/get-node-padding.execution.js +33 -0
- package/esm2015/f-draggable/domain/get-node-padding/get-node-padding.request.js +7 -0
- package/esm2015/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.js +29 -0
- package/{esm2022/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.request.mjs → esm2015/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.request.js} +1 -2
- package/esm2015/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.js +48 -0
- package/{esm2022/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.request.mjs → esm2015/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.request.js} +1 -2
- package/esm2015/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.js +36 -0
- package/{esm2022/f-draggable/domain/get-parent-nodes/get-parent-nodes.request.mjs → esm2015/f-draggable/domain/get-parent-nodes/get-parent-nodes.request.js} +1 -2
- package/esm2015/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.js +34 -0
- package/{esm2022/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.mjs → esm2015/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.request.js} +1 -3
- package/esm2015/f-draggable/f-draggable-base.js +174 -0
- package/esm2015/f-draggable/f-draggable-data-context.js +26 -0
- package/esm2015/f-draggable/f-draggable.directive.js +170 -0
- package/esm2015/f-draggable/f-selection-change-event.js +7 -0
- package/esm2015/f-draggable/node/connection-base-drag-handler.js +40 -0
- package/esm2015/f-draggable/node/connection-source.drag-handler.js +16 -0
- package/esm2015/f-draggable/node/connection-target.drag-handler.js +16 -0
- package/esm2015/f-draggable/node/connection.drag-handler.js +20 -0
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.js +90 -0
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.js +44 -0
- package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.request.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.request.js} +1 -3
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.js +70 -0
- package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.request.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.request.js} +1 -4
- package/esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.js +70 -0
- package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.request.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.request.js} +1 -4
- package/esm2015/f-draggable/node/node-move-finalize/node-move-finalize.execution.js +54 -0
- package/{esm2022/f-draggable/node/node-move-finalize/node-move-finalize.request.mjs → esm2015/f-draggable/node/node-move-finalize/node-move-finalize.request.js} +1 -2
- package/esm2015/f-draggable/node/node-move-finalize/node-move-finalize.validator.js +25 -0
- package/esm2015/f-draggable/node/node-move-preparation/node-move-preparation.execution.js +60 -0
- package/{esm2022/f-draggable/node/node-move-preparation/node-move-preparation.request.mjs → esm2015/f-draggable/node/node-move-preparation/node-move-preparation.request.js} +1 -2
- package/esm2015/f-draggable/node/node-move-preparation/node-move-preparation.validator.js +41 -0
- package/esm2015/f-draggable/node/node-resize-by-child.drag-handler.js +12 -0
- package/esm2015/f-draggable/node/node.drag-handler.js +34 -0
- package/esm2015/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.js +49 -0
- package/{esm2022/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.mjs → esm2015/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.request.js} +1 -3
- package/esm2015/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.js +49 -0
- package/{esm2022/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.mjs → esm2015/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.request.js} +1 -3
- package/esm2015/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.js +25 -0
- package/esm2015/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.request.js +9 -0
- package/esm2015/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.js +34 -0
- package/esm2015/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.request.js +8 -0
- package/esm2015/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.js +31 -0
- package/{esm2022/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.mjs → esm2015/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.request.js} +1 -3
- package/esm2015/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.js +41 -0
- package/esm2015/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.js +7 -0
- package/esm2015/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.js +27 -0
- package/{esm2022/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.request.mjs → esm2015/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.request.js} +1 -2
- package/esm2015/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.validator.js +25 -0
- package/esm2015/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.js +52 -0
- package/{esm2022/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.request.mjs → esm2015/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.request.js} +1 -2
- package/esm2015/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.js +41 -0
- package/esm2015/f-draggable/node-resize/node-resize.drag-handler.js +48 -0
- package/esm2015/f-draggable/single-select/single-select.execution.js +89 -0
- package/{esm2022/f-draggable/single-select/single-select.request.mjs → esm2015/f-draggable/single-select/single-select.request.js} +1 -2
- package/esm2015/f-draggable/single-select/single-select.validator.js +27 -0
- package/esm2015/f-external-item/domain/external-item-finalize/external-item-finalize.execution.js +57 -0
- package/{esm2022/f-external-item/domain/external-item-finalize/external-item-finalize.request.mjs → esm2015/f-external-item/domain/external-item-finalize/external-item-finalize.request.js} +1 -2
- package/esm2015/f-external-item/domain/external-item-finalize/external-item-finalize.validator.js +25 -0
- package/esm2015/f-external-item/domain/external-item-preparation/external-item-preparation.execution.js +43 -0
- package/{esm2022/f-external-item/domain/external-item-preparation/external-item-preparation.request.mjs → esm2015/f-external-item/domain/external-item-preparation/external-item-preparation.request.js} +1 -2
- package/esm2015/f-external-item/domain/external-item-preparation/external-item-preparation.validator.js +29 -0
- package/esm2015/f-external-item/domain/external-item.drag-handler.js +36 -0
- package/{esm2022/f-external-item/domain/f-create-node.event.mjs → esm2015/f-external-item/domain/f-create-node.event.js} +1 -3
- package/{esm2022/f-external-item/f-external-item-base.mjs → esm2015/f-external-item/f-external-item-base.js} +4 -4
- package/esm2015/f-external-item/f-external-item.directive.js +55 -0
- package/esm2015/f-external-item/f-external-item.service.js +28 -0
- package/esm2015/f-flow/f-flow.component.js +122 -0
- package/{esm2022/f-flow.module.mjs → esm2015/f-flow.module.js} +7 -5
- package/esm2015/f-line-alignment/domain/line-element.js +22 -0
- package/esm2015/f-line-alignment/domain/line-service.js +35 -0
- package/esm2015/f-line-alignment/domain/nearest-coordinate.js +101 -0
- package/{esm2022/f-line-alignment/f-line-alignment-base.mjs → esm2015/f-line-alignment/f-line-alignment-base.js} +4 -4
- package/esm2015/f-line-alignment/f-line-alignment.component.js +99 -0
- package/esm2015/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.js +42 -0
- package/esm2015/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.js +9 -0
- package/esm2015/f-minimap/domain/check-rect-is-finite.js +8 -0
- package/esm2015/f-minimap/domain/f-minimap-data.js +9 -0
- package/esm2015/f-minimap/domain/f-minimap.drag-handler.js +37 -0
- package/esm2015/f-minimap/domain/index.js +8 -0
- package/esm2015/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.js +27 -0
- package/{esm2022/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.mjs → esm2015/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.request.js} +1 -2
- package/esm2015/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.js +25 -0
- package/esm2015/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.js +49 -0
- package/{esm2022/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.mjs → esm2015/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.request.js} +1 -3
- package/esm2015/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.js +28 -0
- package/esm2015/f-minimap/f-minimap-canvas.directive.js +66 -0
- package/esm2015/f-minimap/f-minimap-flow.directive.js +76 -0
- package/esm2015/f-minimap/f-minimap-view.directive.js +40 -0
- package/esm2015/f-minimap/f-minimap.component.js +76 -0
- package/esm2015/f-node/f-drag-handle/f-drag-handle.directive.js +24 -0
- package/esm2015/f-node/f-group.directive.js +149 -0
- package/esm2015/f-node/f-node-base.js +38 -0
- package/esm2015/f-node/f-node.directive.js +150 -0
- package/esm2015/f-node/f-resize-handle/f-resize-handle.directive.js +43 -0
- package/esm2015/f-node/f-rotate-handle/f-rotate-handle.directive.js +27 -0
- package/esm2015/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.js +27 -0
- package/{esm2022/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.mjs → esm2015/f-selection-area/domain/selection-area-finalize/selection-area-finalize.request.js} +1 -2
- package/esm2015/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.js +25 -0
- package/esm2015/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.js +38 -0
- package/esm2015/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.js +7 -0
- package/esm2015/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.js +31 -0
- package/esm2015/f-selection-area/domain/selection-area.drag-handle.js +48 -0
- package/{esm2022/f-selection-area/f-selection-area-base.mjs → esm2015/f-selection-area/f-selection-area-base.js} +4 -4
- package/esm2015/f-selection-area/f-selection-area.component.js +57 -0
- package/esm2015/f-storage/f-components-store.js +52 -0
- package/esm2015/f-storage/f-transform-store.js +14 -0
- package/esm2015/f-zoom/f-zoom-base.js +98 -0
- package/esm2015/f-zoom/f-zoom.directive.js +59 -0
- package/esm2015/infrastructure/f-mediator/f-flow-mediator.js +29 -0
- package/esm2015/infrastructure/pipeline/pipeline.js +19 -0
- package/f-backgroud/f-background-base.d.ts +1 -1
- package/f-backgroud/f-background.component.d.ts +1 -1
- package/f-backgroud/f-circle-pattern/f-circle-pattern.component.d.ts +1 -1
- package/f-backgroud/f-rect-pattern/f-rect-pattern.component.d.ts +1 -1
- package/f-canvas/f-canvas-base.d.ts +1 -1
- package/f-canvas/f-canvas.component.d.ts +1 -1
- package/f-connection/common/f-connection-base.d.ts +1 -1
- package/f-connection/common/f-connection-text/f-connection-text-path.directive.d.ts +1 -1
- package/f-connection/common/f-connection-text/f-connection-text.component.d.ts +1 -1
- package/f-connection/common/f-drag-handle/f-connection-drag-handle.component.d.ts +1 -1
- package/f-connection/common/f-gradient/f-connection-gradient.component.d.ts +1 -1
- package/f-connection/common/f-path/f-connection-path.component.d.ts +1 -1
- package/f-connection/common/f-selection/f-connection-selection.component.d.ts +1 -1
- package/f-connection/common/mixins/change-connection-selection.mixin.d.ts +1 -1
- package/f-connection/common/mixins/change-connection-visibility.mixin.d.ts +1 -1
- package/f-connection/f-connection/f-connection.component.d.ts +1 -1
- package/f-connection/f-connection-center/f-connection-center.directive.d.ts +1 -1
- package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +1 -1
- package/f-connection/f-marker/f-marker-base.d.ts +1 -1
- package/f-connection/f-marker/f-marker.directive.d.ts +1 -1
- package/f-connectors/f-node-input/f-node-input-base.d.ts +1 -1
- package/f-connectors/f-node-input/f-node-input.directive.d.ts +1 -1
- package/f-connectors/f-node-outlet/f-node-outlet-base.d.ts +1 -1
- package/f-connectors/f-node-outlet/f-node-outlet.directive.d.ts +1 -1
- package/f-connectors/f-node-output/f-node-output-base.d.ts +1 -1
- package/f-connectors/f-node-output/f-node-output.directive.d.ts +1 -1
- package/f-draggable/f-draggable-base.d.ts +1 -1
- package/f-draggable/f-draggable.directive.d.ts +1 -1
- package/f-draggable/node/connection-base-drag-handler.d.ts +1 -1
- package/f-external-item/f-external-item-base.d.ts +1 -1
- package/f-external-item/f-external-item.directive.d.ts +1 -1
- package/f-flow/f-flow.component.d.ts +1 -1
- package/f-line-alignment/f-line-alignment-base.d.ts +1 -1
- package/f-line-alignment/f-line-alignment.component.d.ts +1 -1
- package/f-minimap/domain/check-rect-is-finite.d.ts +2 -0
- package/f-minimap/domain/index.d.ts +1 -0
- package/f-minimap/f-minimap-canvas.directive.d.ts +1 -1
- package/f-minimap/f-minimap-flow.directive.d.ts +1 -1
- package/f-minimap/f-minimap-view.directive.d.ts +1 -1
- package/f-minimap/f-minimap.component.d.ts +1 -1
- package/f-node/f-drag-handle/f-drag-handle.directive.d.ts +1 -1
- package/f-node/f-group.directive.d.ts +1 -1
- package/f-node/f-node.directive.d.ts +1 -1
- package/f-node/f-resize-handle/f-resize-handle.directive.d.ts +1 -1
- package/f-selection-area/f-selection-area-base.d.ts +1 -1
- package/f-selection-area/f-selection-area.component.d.ts +1 -1
- package/f-zoom/f-zoom.directive.d.ts +1 -1
- package/{fesm2022/foblex-flow.mjs → fesm2015/foblex-flow.js} +1286 -1567
- package/fesm2015/foblex-flow.js.map +1 -0
- package/infrastructure/f-mediator/f-execution-register.d.ts +1 -1
- package/infrastructure/f-mediator/f-validator-register.d.ts +1 -1
- package/package.json +9 -17
- package/esm2022/domain/cast-to-enum.mjs +0 -12
- package/esm2022/domain/clear-selection/clear-selection.execution.mjs +0 -27
- package/esm2022/domain/create-connection-markers/create-connection-markers.execution.mjs +0 -62
- package/esm2022/domain/deep-clone-node.mjs +0 -47
- package/esm2022/domain/emit-transform-changes/emit-transform-changes.execution.mjs +0 -25
- package/esm2022/domain/get-can-be-selected-items/get-can-be-selected-items.execution.mjs +0 -60
- package/esm2022/domain/get-connection-line/get-connection-line.execution.mjs +0 -66
- package/esm2022/domain/get-connection-line/get-connection-line.request.mjs +0 -15
- package/esm2022/domain/get-deep-children-nodes-and-groups/get-deep-children-nodes-and-groups.execution.mjs +0 -36
- package/esm2022/domain/get-element-rect-in-flow/get-element-rect-in-flow.execution.mjs +0 -45
- package/esm2022/domain/get-input-rect-in-flow/get-input-rect-in-flow-response.mjs +0 -9
- package/esm2022/domain/get-input-rect-in-flow/get-input-rect-in-flow.execution.mjs +0 -35
- package/esm2022/domain/get-nodes-rect/get-nodes-rect.execution.mjs +0 -32
- package/esm2022/domain/get-output-rect-in-flow/get-output-rect-in-flow-response.mjs +0 -9
- package/esm2022/domain/get-output-rect-in-flow/get-output-rect-in-flow.execution.mjs +0 -39
- package/esm2022/domain/get-position-in-flow/get-position-in-flow.execution.mjs +0 -33
- package/esm2022/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.execution.mjs +0 -35
- package/esm2022/domain/get-selection/get-selection.execution.mjs +0 -36
- package/esm2022/domain/get-value-from-data-attr.mjs +0 -7
- package/esm2022/domain/intersections/f-connector-shape.extensions.mjs +0 -46
- package/esm2022/domain/intersections/intersection-finder.mjs +0 -156
- package/esm2022/domain/intersections/rounded-rect/rounded-rect.mjs +0 -54
- package/esm2022/domain/is-connection-under-node/is-connection-under-node.execution.mjs +0 -79
- package/esm2022/domain/redraw-connections/redraw-connections.execution.mjs +0 -62
- package/esm2022/domain/select/select.execution.mjs +0 -46
- package/esm2022/domain/select/select.request.mjs +0 -9
- package/esm2022/domain/select-all/select-all.execution.mjs +0 -40
- package/esm2022/domain/select-and-update-node-layer/select-and-update-node-layer.execution.mjs +0 -37
- package/esm2022/domain/sort-item-layers/sort-item-layers.execution.mjs +0 -32
- package/esm2022/domain/sort-item-layers/sort-items-by-parent/sort-items-by-parent.execution.mjs +0 -61
- package/esm2022/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.execution.mjs +0 -62
- package/esm2022/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.execution.mjs +0 -28
- package/esm2022/domain/update-item-and-children-layers/move-front-elements-before-target-element/move-front-elements-before-target-element.execution.mjs +0 -30
- package/esm2022/f-backgroud/f-background.component.mjs +0 -66
- package/esm2022/f-backgroud/f-circle-pattern/f-circle-pattern.component.mjs +0 -107
- package/esm2022/f-backgroud/f-rect-pattern/f-rect-pattern.component.mjs +0 -126
- package/esm2022/f-canvas/domain/f-canvas-change.event.mjs +0 -9
- package/esm2022/f-canvas/f-canvas-base.mjs +0 -28
- package/esm2022/f-canvas/f-canvas.component.mjs +0 -107
- package/esm2022/f-connection/common/domain/calculate-connection-center/calculate-connection-center.handler.mjs +0 -35
- package/esm2022/f-connection/common/domain/f-bezier.path-builder.mjs +0 -37
- package/esm2022/f-connection/common/domain/f-segment.path-builder.mjs +0 -142
- package/esm2022/f-connection/common/f-connection-base.mjs +0 -62
- package/esm2022/f-connection/common/f-connection-text/f-connection-text-path.directive.mjs +0 -73
- package/esm2022/f-connection/common/f-connection-text/f-connection-text.component.mjs +0 -69
- package/esm2022/f-connection/common/f-drag-handle/f-connection-drag-handle.component.mjs +0 -39
- package/esm2022/f-connection/common/f-gradient/f-connection-gradient.component.mjs +0 -65
- package/esm2022/f-connection/common/f-path/f-connection-path.component.mjs +0 -61
- package/esm2022/f-connection/common/f-selection/f-connection-selection.component.mjs +0 -39
- package/esm2022/f-connection/common/mixins/change-connection-selection.mixin.mjs +0 -25
- package/esm2022/f-connection/f-connection/f-connection.component.mjs +0 -187
- package/esm2022/f-connection/f-connection-builder/f-connection-factory.mjs +0 -34
- package/esm2022/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +0 -155
- package/esm2022/f-connection/f-marker/f-marker.directive.mjs +0 -60
- package/esm2022/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side-request.mjs +0 -9
- package/esm2022/f-connectors/domain/calculate-connector-connectable-side/calculate-connector-connectable-side.handler.mjs +0 -38
- package/esm2022/f-connectors/f-connector-base.mjs +0 -15
- package/esm2022/f-connectors/f-node-input/f-node-input-base.mjs +0 -16
- package/esm2022/f-connectors/f-node-input/f-node-input.directive.mjs +0 -91
- package/esm2022/f-connectors/f-node-outlet/f-node-outlet-base.mjs +0 -20
- package/esm2022/f-connectors/f-node-outlet/f-node-outlet.directive.mjs +0 -74
- package/esm2022/f-connectors/f-node-output/f-node-output-base.mjs +0 -16
- package/esm2022/f-connectors/f-node-output/f-node-output.directive.mjs +0 -98
- package/esm2022/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.execution.mjs +0 -25
- package/esm2022/f-draggable/canvas/canvas-move-finalize/canvas-move-finalize.validator.mjs +0 -26
- package/esm2022/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.execution.mjs +0 -38
- package/esm2022/f-draggable/canvas/canvas-move-preparation/canvas-move-preparation.validator.mjs +0 -50
- package/esm2022/f-draggable/canvas/canvas.drag-handler.mjs +0 -19
- package/esm2022/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.execution.mjs +0 -58
- package/esm2022/f-draggable/connections/create-connection/create-connection-finalize/create-connection-finalize.validator.mjs +0 -26
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/create-connection-drag-handler.execution.mjs +0 -48
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/create-connection-from-outlet-preparation.execution.mjs +0 -55
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.execution.mjs +0 -41
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/create-connection-from-output-preparation.validator.mjs +0 -35
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.execution.mjs +0 -45
- package/esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-preparation.validator.mjs +0 -34
- package/esm2022/f-draggable/connections/create-connection/create-connection.drag-handler.mjs +0 -36
- package/esm2022/f-draggable/connections/create-connection/f-create-connection.event.mjs +0 -11
- package/esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.execution.mjs +0 -44
- package/esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/get-can-be-connected-output-by-outlet.validator.mjs +0 -28
- package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.execution.mjs +0 -76
- package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.request.mjs +0 -9
- package/esm2022/f-draggable/connections/get-input-under-pointer/get-input-under-pointer.validator.mjs +0 -36
- package/esm2022/f-draggable/connections/reassign-connection/f-reassign-connection.event.mjs +0 -13
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.execution.mjs +0 -53
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/reassign-connection-finalize.validator.mjs +0 -26
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.execution.mjs +0 -68
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/reassign-connection-preparation.validator.mjs +0 -47
- package/esm2022/f-draggable/connections/reassign-connection/reassign-connection.drag-handler.mjs +0 -35
- package/esm2022/f-draggable/domain/get-node-padding/get-node-padding.execution.mjs +0 -34
- package/esm2022/f-draggable/domain/get-node-padding/get-node-padding.request.mjs +0 -9
- package/esm2022/f-draggable/domain/get-normalized-node-rect/get-normalized-node-rect.execution.mjs +0 -30
- package/esm2022/f-draggable/domain/get-normalized-parent-node-rect/get-normalized-parent-node-rect.execution.mjs +0 -50
- package/esm2022/f-draggable/domain/get-parent-nodes/get-parent-nodes.execution.mjs +0 -37
- package/esm2022/f-draggable/domain/is-array-has-parent-node/is-array-has-parent-node.execution.mjs +0 -35
- package/esm2022/f-draggable/f-draggable-base.mjs +0 -169
- package/esm2022/f-draggable/f-draggable-data-context.mjs +0 -25
- package/esm2022/f-draggable/f-draggable.directive.mjs +0 -171
- package/esm2022/f-draggable/f-selection-change-event.mjs +0 -9
- package/esm2022/f-draggable/node/connection-base-drag-handler.mjs +0 -42
- package/esm2022/f-draggable/node/connection-source.drag-handler.mjs +0 -18
- package/esm2022/f-draggable/node/connection-target.drag-handler.mjs +0 -18
- package/esm2022/f-draggable/node/connection.drag-handler.mjs +0 -22
- package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.execution.mjs +0 -87
- package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/get-node-move-restrictions.execution.mjs +0 -45
- package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/put-input-connection-handlers-to-array.execution.mjs +0 -72
- package/esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/put-output-connection-handlers-to-array.execution.mjs +0 -72
- package/esm2022/f-draggable/node/node-move-finalize/node-move-finalize.execution.mjs +0 -54
- package/esm2022/f-draggable/node/node-move-finalize/node-move-finalize.validator.mjs +0 -26
- package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.execution.mjs +0 -62
- package/esm2022/f-draggable/node/node-move-preparation/node-move-preparation.validator.mjs +0 -43
- package/esm2022/f-draggable/node/node-resize-by-child.drag-handler.mjs +0 -13
- package/esm2022/f-draggable/node/node.drag-handler.mjs +0 -37
- package/esm2022/f-draggable/node-resize/apply-child-resize-restrictions/apply-child-resize-restrictions.execution.mjs +0 -49
- package/esm2022/f-draggable/node-resize/apply-parent-resize-restrictions/apply-parent-resize-restrictions.execution.mjs +0 -49
- package/esm2022/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.execution.mjs +0 -25
- package/esm2022/f-draggable/node-resize/calculate-changed-position/calculate-changed-position.request.mjs +0 -13
- package/esm2022/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.execution.mjs +0 -34
- package/esm2022/f-draggable/node-resize/calculate-changed-size/calculate-changed-size.request.mjs +0 -11
- package/esm2022/f-draggable/node-resize/get-node-resize-restrictions/get-node-resize-restrictions.execution.mjs +0 -32
- package/esm2022/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.execution.mjs +0 -42
- package/esm2022/f-draggable/node-resize/get-normalized-children-nodes-rect/get-normalized-children-nodes-rect.request.mjs +0 -9
- package/esm2022/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.execution.mjs +0 -27
- package/esm2022/f-draggable/node-resize/node-resize-finalize/node-resize-finalize.validator.mjs +0 -26
- package/esm2022/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.execution.mjs +0 -55
- package/esm2022/f-draggable/node-resize/node-resize-preparation/node-resize-preparation.validator.mjs +0 -43
- package/esm2022/f-draggable/node-resize/node-resize.drag-handler.mjs +0 -53
- package/esm2022/f-draggable/single-select/single-select.execution.mjs +0 -93
- package/esm2022/f-draggable/single-select/single-select.validator.mjs +0 -29
- package/esm2022/f-external-item/domain/external-item-finalize/external-item-finalize.execution.mjs +0 -61
- package/esm2022/f-external-item/domain/external-item-finalize/external-item-finalize.validator.mjs +0 -26
- package/esm2022/f-external-item/domain/external-item-preparation/external-item-preparation.execution.mjs +0 -47
- package/esm2022/f-external-item/domain/external-item-preparation/external-item-preparation.validator.mjs +0 -30
- package/esm2022/f-external-item/domain/external-item.drag-handler.mjs +0 -39
- package/esm2022/f-external-item/f-external-item.directive.mjs +0 -58
- package/esm2022/f-external-item/f-external-item.service.mjs +0 -26
- package/esm2022/f-flow/f-flow.component.mjs +0 -118
- package/esm2022/f-line-alignment/domain/line-element.mjs +0 -24
- package/esm2022/f-line-alignment/domain/line-service.mjs +0 -38
- package/esm2022/f-line-alignment/domain/nearest-coordinate.mjs +0 -104
- package/esm2022/f-line-alignment/f-line-alignment.component.mjs +0 -97
- package/esm2022/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.execution.mjs +0 -43
- package/esm2022/f-minimap/domain/calculate-flow-point-from-minimap-point/calculate-flow-point-from-minimap-point.request.mjs +0 -13
- package/esm2022/f-minimap/domain/f-minimap-data.mjs +0 -12
- package/esm2022/f-minimap/domain/f-minimap.drag-handler.mjs +0 -41
- package/esm2022/f-minimap/domain/index.mjs +0 -7
- package/esm2022/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.execution.mjs +0 -27
- package/esm2022/f-minimap/domain/minimap-drag-finalize/minimap-drag-finalize.validator.mjs +0 -26
- package/esm2022/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.execution.mjs +0 -52
- package/esm2022/f-minimap/domain/minimap-drag-preparation/minimap-drag-preparation.validator.mjs +0 -30
- package/esm2022/f-minimap/f-minimap-canvas.directive.mjs +0 -67
- package/esm2022/f-minimap/f-minimap-flow.directive.mjs +0 -79
- package/esm2022/f-minimap/f-minimap-view.directive.mjs +0 -40
- package/esm2022/f-minimap/f-minimap.component.mjs +0 -72
- package/esm2022/f-node/f-drag-handle/f-drag-handle.directive.mjs +0 -25
- package/esm2022/f-node/f-group.directive.mjs +0 -153
- package/esm2022/f-node/f-node-base.mjs +0 -37
- package/esm2022/f-node/f-node.directive.mjs +0 -154
- package/esm2022/f-node/f-resize-handle/f-resize-handle.directive.mjs +0 -44
- package/esm2022/f-node/f-rotate-handle/f-rotate-handle.directive.mjs +0 -28
- package/esm2022/f-selection-area/domain/selection-area-finalize/selection-area-finalize.execution.mjs +0 -27
- package/esm2022/f-selection-area/domain/selection-area-finalize/selection-area-finalize.validator.mjs +0 -26
- package/esm2022/f-selection-area/domain/selection-area-preparation/selection-area-preparation.execution.mjs +0 -41
- package/esm2022/f-selection-area/domain/selection-area-preparation/selection-area-preparation.request.mjs +0 -9
- package/esm2022/f-selection-area/domain/selection-area-preparation/selection-area-preparation.validator.mjs +0 -32
- package/esm2022/f-selection-area/domain/selection-area.drag-handle.mjs +0 -52
- package/esm2022/f-selection-area/f-selection-area.component.mjs +0 -53
- package/esm2022/f-storage/f-components-store.mjs +0 -53
- package/esm2022/f-storage/f-transform-store.mjs +0 -12
- package/esm2022/f-zoom/f-zoom-base.mjs +0 -97
- package/esm2022/f-zoom/f-zoom.directive.mjs +0 -59
- package/esm2022/infrastructure/f-mediator/f-flow-mediator.mjs +0 -30
- package/esm2022/infrastructure/pipeline/pipeline.mjs +0 -21
- package/fesm2022/foblex-flow.mjs.map +0 -1
- /package/{esm2022/domain/clear-selection/clear-selection.request.mjs → esm2015/domain/clear-selection/clear-selection.request.js} +0 -0
- /package/{esm2022/domain/clear-selection/index.mjs → esm2015/domain/clear-selection/index.js} +0 -0
- /package/{esm2022/domain/create-connection-markers/index.mjs → esm2015/domain/create-connection-markers/index.js} +0 -0
- /package/{esm2022/domain/create-dom-element.mjs → esm2015/domain/create-dom-element.js} +0 -0
- /package/{esm2022/domain/emit-transform-changes/emit-transform-changes.request.mjs → esm2015/domain/emit-transform-changes/emit-transform-changes.request.js} +0 -0
- /package/{esm2022/domain/emit-transform-changes/index.mjs → esm2015/domain/emit-transform-changes/index.js} +0 -0
- /package/{esm2022/domain/get-can-be-selected-items/get-can-be-selected-items-request.mjs → esm2015/domain/get-can-be-selected-items/get-can-be-selected-items-request.js} +0 -0
- /package/{esm2022/domain/get-can-be-selected-items/i-selectable-with-rect.mjs → esm2015/domain/get-can-be-selected-items/i-selectable-with-rect.js} +0 -0
- /package/{esm2022/domain/get-can-be-selected-items/index.mjs → esm2015/domain/get-can-be-selected-items/index.js} +0 -0
- /package/{esm2022/domain/get-connection-line/index.mjs → esm2015/domain/get-connection-line/index.js} +0 -0
- /package/{esm2022/domain/get-deep-children-nodes-and-groups/index.mjs → esm2015/domain/get-deep-children-nodes-and-groups/index.js} +0 -0
- /package/{esm2022/domain/get-element-rect-in-flow/index.mjs → esm2015/domain/get-element-rect-in-flow/index.js} +0 -0
- /package/{esm2022/domain/get-input-rect-in-flow/index.mjs → esm2015/domain/get-input-rect-in-flow/index.js} +0 -0
- /package/{esm2022/domain/get-nodes-rect/get-nodes-rect.request.mjs → esm2015/domain/get-nodes-rect/get-nodes-rect.request.js} +0 -0
- /package/{esm2022/domain/get-nodes-rect/index.mjs → esm2015/domain/get-nodes-rect/index.js} +0 -0
- /package/{esm2022/domain/get-output-rect-in-flow/index.mjs → esm2015/domain/get-output-rect-in-flow/index.js} +0 -0
- /package/{esm2022/domain/get-position-in-flow/index.mjs → esm2015/domain/get-position-in-flow/index.js} +0 -0
- /package/{esm2022/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.request.mjs → esm2015/domain/get-scaled-node-rects-with-flow-position/get-scaled-node-rects-with-flow-position.request.js} +0 -0
- /package/{esm2022/domain/get-scaled-node-rects-with-flow-position/index.mjs → esm2015/domain/get-scaled-node-rects-with-flow-position/index.js} +0 -0
- /package/{esm2022/domain/get-selection/get-selection.request.mjs → esm2015/domain/get-selection/get-selection.request.js} +0 -0
- /package/{esm2022/domain/get-selection/index.mjs → esm2015/domain/get-selection/index.js} +0 -0
- /package/{esm2022/domain/index.mjs → esm2015/domain/index.js} +0 -0
- /package/{esm2022/domain/intersections/e-f-connector-shape.mjs → esm2015/domain/intersections/e-f-connector-shape.js} +0 -0
- /package/{esm2022/domain/intersections/i-connector-shape.mjs → esm2015/domain/intersections/i-connector-shape.js} +0 -0
- /package/{esm2022/domain/intersections/index.mjs → esm2015/domain/intersections/index.js} +0 -0
- /package/{esm2022/domain/intersections/rounded-rect/i-rounded-rect.mjs → esm2015/domain/intersections/rounded-rect/i-rounded-rect.js} +0 -0
- /package/{esm2022/domain/intersections/rounded-rect/index.mjs → esm2015/domain/intersections/rounded-rect/index.js} +0 -0
- /package/{esm2022/domain/is-connection-under-node/index.mjs → esm2015/domain/is-connection-under-node/index.js} +0 -0
- /package/{esm2022/domain/is-connection-under-node/is-connection-under-node.request.mjs → esm2015/domain/is-connection-under-node/is-connection-under-node.request.js} +0 -0
- /package/{esm2022/domain/is-element-with-class.mjs → esm2015/domain/is-element-with-class.js} +0 -0
- /package/{esm2022/domain/providers.mjs → esm2015/domain/providers.js} +0 -0
- /package/{esm2022/domain/redraw-connections/index.mjs → esm2015/domain/redraw-connections/index.js} +0 -0
- /package/{esm2022/domain/redraw-connections/redraw-connections-request.mjs → esm2015/domain/redraw-connections/redraw-connections-request.js} +0 -0
- /package/{esm2022/domain/select/index.mjs → esm2015/domain/select/index.js} +0 -0
- /package/{esm2022/domain/select-all/index.mjs → esm2015/domain/select-all/index.js} +0 -0
- /package/{esm2022/domain/select-all/select-all.request.mjs → esm2015/domain/select-all/select-all.request.js} +0 -0
- /package/{esm2022/domain/select-and-update-node-layer/index.mjs → esm2015/domain/select-and-update-node-layer/index.js} +0 -0
- /package/{esm2022/domain/sort-item-layers/index.mjs → esm2015/domain/sort-item-layers/index.js} +0 -0
- /package/{esm2022/domain/sort-item-layers/sort-item-layers.request.mjs → esm2015/domain/sort-item-layers/sort-item-layers.request.js} +0 -0
- /package/{esm2022/domain/sort-item-layers/sort-items-by-parent/index.mjs → esm2015/domain/sort-item-layers/sort-items-by-parent/index.js} +0 -0
- /package/{esm2022/domain/sort-item-layers/sort-node-layers-by-groups/index.mjs → esm2015/domain/sort-item-layers/sort-node-layers-by-groups/index.js} +0 -0
- /package/{esm2022/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.request.mjs → esm2015/domain/sort-item-layers/sort-node-layers-by-groups/sort-node-layers.request.js} +0 -0
- /package/{esm2022/domain/subscribe-on-transform-changes/index.mjs → esm2015/domain/subscribe-on-transform-changes/index.js} +0 -0
- /package/{esm2022/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.request.mjs → esm2015/domain/subscribe-on-transform-changes/subscribe-on-transform-changes.request.js} +0 -0
- /package/{esm2022/domain/update-item-and-children-layers/index.mjs → esm2015/domain/update-item-and-children-layers/index.js} +0 -0
- /package/{esm2022/domain/update-item-and-children-layers/move-front-elements-before-target-element/index.mjs → esm2015/domain/update-item-and-children-layers/move-front-elements-before-target-element/index.js} +0 -0
- /package/{esm2022/errors/conflict-error.mjs → esm2015/errors/conflict-error.js} +0 -0
- /package/{esm2022/errors/create-error-class.mjs → esm2015/errors/create-error-class.js} +0 -0
- /package/{esm2022/errors/errors.mjs → esm2015/errors/errors.js} +0 -0
- /package/{esm2022/errors/index.mjs → esm2015/errors/index.js} +0 -0
- /package/{esm2022/errors/not-found-error.mjs → esm2015/errors/not-found-error.js} +0 -0
- /package/{esm2022/f-backgroud/domain/i-f-background-pattern.mjs → esm2015/f-backgroud/domain/i-f-background-pattern.js} +0 -0
- /package/{esm2022/f-backgroud/domain/index.mjs → esm2015/f-backgroud/domain/index.js} +0 -0
- /package/{esm2022/f-backgroud/f-circle-pattern/index.mjs → esm2015/f-backgroud/f-circle-pattern/index.js} +0 -0
- /package/{esm2022/f-backgroud/f-rect-pattern/index.mjs → esm2015/f-backgroud/f-rect-pattern/index.js} +0 -0
- /package/{esm2022/f-backgroud/index.mjs → esm2015/f-backgroud/index.js} +0 -0
- /package/{esm2022/f-backgroud/providers.mjs → esm2015/f-backgroud/providers.js} +0 -0
- /package/{esm2022/f-canvas/domain/index.mjs → esm2015/f-canvas/domain/index.js} +0 -0
- /package/{esm2022/f-canvas/index.mjs → esm2015/f-canvas/index.js} +0 -0
- /package/{esm2022/f-canvas/providers.mjs → esm2015/f-canvas/providers.js} +0 -0
- /package/{esm2022/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points.handler.mjs → esm2015/f-connection/common/domain/calculate-center-between-points/calculate-center-between-points.handler.js} +0 -0
- /package/{esm2022/f-connection/common/domain/calculate-center-between-points/index.mjs → esm2015/f-connection/common/domain/calculate-center-between-points/index.js} +0 -0
- /package/{esm2022/f-connection/common/domain/calculate-connection-center/index.mjs → esm2015/f-connection/common/domain/calculate-connection-center/index.js} +0 -0
- /package/{esm2022/f-connection/common/domain/f-straight.path-builder.mjs → esm2015/f-connection/common/domain/f-straight.path-builder.js} +0 -0
- /package/{esm2022/f-connection/common/domain/index.mjs → esm2015/f-connection/common/domain/index.js} +0 -0
- /package/{esm2022/f-connection/common/e-f-connection-behavior.mjs → esm2015/f-connection/common/e-f-connection-behavior.js} +0 -0
- /package/{esm2022/f-connection/common/e-f-connection-type.mjs → esm2015/f-connection/common/e-f-connection-type.js} +0 -0
- /package/{esm2022/f-connection/common/f-connection-text/i-connection-text.mjs → esm2015/f-connection/common/f-connection-text/i-connection-text.js} +0 -0
- /package/{esm2022/f-connection/common/f-connection-text/index.mjs → esm2015/f-connection/common/f-connection-text/index.js} +0 -0
- /package/{esm2022/f-connection/common/f-connection.injection-token.mjs → esm2015/f-connection/common/f-connection.injection-token.js} +0 -0
- /package/{esm2022/f-connection/common/f-drag-handle/index.mjs → esm2015/f-connection/common/f-drag-handle/index.js} +0 -0
- /package/{esm2022/f-connection/common/f-gradient/i-connection-gradient.mjs → esm2015/f-connection/common/f-gradient/i-connection-gradient.js} +0 -0
- /package/{esm2022/f-connection/common/f-gradient/index.mjs → esm2015/f-connection/common/f-gradient/index.js} +0 -0
- /package/{esm2022/f-connection/common/f-path/i-connection-path.mjs → esm2015/f-connection/common/f-path/i-connection-path.js} +0 -0
- /package/{esm2022/f-connection/common/f-path/index.mjs → esm2015/f-connection/common/f-path/index.js} +0 -0
- /package/{esm2022/f-connection/common/f-selection/index.mjs → esm2015/f-connection/common/f-selection/index.js} +0 -0
- /package/{esm2022/f-connection/common/i-has-connection-color.mjs → esm2015/f-connection/common/i-has-connection-color.js} +0 -0
- /package/{esm2022/f-connection/common/i-has-connection-from-to.mjs → esm2015/f-connection/common/i-has-connection-from-to.js} +0 -0
- /package/{esm2022/f-connection/common/i-has-connection-text.mjs → esm2015/f-connection/common/i-has-connection-text.js} +0 -0
- /package/{esm2022/f-connection/common/index.mjs → esm2015/f-connection/common/index.js} +0 -0
- /package/{esm2022/f-connection/common/mixins/change-connection-visibility.mixin.mjs → esm2015/f-connection/common/mixins/change-connection-visibility.mixin.js} +0 -0
- /package/{esm2022/f-connection/common/mixins/index.mjs → esm2015/f-connection/common/mixins/index.js} +0 -0
- /package/{esm2022/f-connection/f-connection/index.mjs → esm2015/f-connection/f-connection/index.js} +0 -0
- /package/{esm2022/f-connection/f-connection-builder/f-connection-builders.mjs → esm2015/f-connection/f-connection-builder/f-connection-builders.js} +0 -0
- /package/{esm2022/f-connection/f-connection-builder/i-f-connection-builder-request.mjs → esm2015/f-connection/f-connection-builder/i-f-connection-builder-request.js} +0 -0
- /package/{esm2022/f-connection/f-connection-builder/i-f-connection-builder-response.mjs → esm2015/f-connection/f-connection-builder/i-f-connection-builder-response.js} +0 -0
- /package/{esm2022/f-connection/f-connection-builder/i-f-connection-builder.mjs → esm2015/f-connection/f-connection-builder/i-f-connection-builder.js} +0 -0
- /package/{esm2022/f-connection/f-connection-builder/i-f-connection-factory-request.mjs → esm2015/f-connection/f-connection-builder/i-f-connection-factory-request.js} +0 -0
- /package/{esm2022/f-connection/f-connection-builder/index.mjs → esm2015/f-connection/f-connection-builder/index.js} +0 -0
- /package/{esm2022/f-connection/f-connection-center/index.mjs → esm2015/f-connection/f-connection-center/index.js} +0 -0
- /package/{esm2022/f-connection/f-connection-for-create/index.mjs → esm2015/f-connection/f-connection-for-create/index.js} +0 -0
- /package/{esm2022/f-connection/f-marker/e-f-marker-type.mjs → esm2015/f-connection/f-marker/e-f-marker-type.js} +0 -0
- /package/{esm2022/f-connection/f-marker/index.mjs → esm2015/f-connection/f-marker/index.js} +0 -0
- /package/{esm2022/f-connection/index.mjs → esm2015/f-connection/index.js} +0 -0
- /package/{esm2022/f-connection/providers.mjs → esm2015/f-connection/providers.js} +0 -0
- /package/{esm2022/f-connectors/domain/calculate-connector-connectable-side/index.mjs → esm2015/f-connectors/domain/calculate-connector-connectable-side/index.js} +0 -0
- /package/{esm2022/f-connectors/domain/index.mjs → esm2015/f-connectors/domain/index.js} +0 -0
- /package/{esm2022/f-connectors/e-f-connectable-side.mjs → esm2015/f-connectors/e-f-connectable-side.js} +0 -0
- /package/{esm2022/f-connectors/f-node-input/index.mjs → esm2015/f-connectors/f-node-input/index.js} +0 -0
- /package/{esm2022/f-connectors/f-node-input/is-node-input.mjs → esm2015/f-connectors/f-node-input/is-node-input.js} +0 -0
- /package/{esm2022/f-connectors/f-node-outlet/index.mjs → esm2015/f-connectors/f-node-outlet/index.js} +0 -0
- /package/{esm2022/f-connectors/f-node-outlet/is-node-outlet.mjs → esm2015/f-connectors/f-node-outlet/is-node-outlet.js} +0 -0
- /package/{esm2022/f-connectors/f-node-output/index.mjs → esm2015/f-connectors/f-node-output/index.js} +0 -0
- /package/{esm2022/f-connectors/f-node-output/is-node-output.mjs → esm2015/f-connectors/f-node-output/is-node-output.js} +0 -0
- /package/{esm2022/f-connectors/index.mjs → esm2015/f-connectors/index.js} +0 -0
- /package/{esm2022/f-connectors/providers.mjs → esm2015/f-connectors/providers.js} +0 -0
- /package/{esm2022/f-draggable/canvas/canvas-move-finalize/index.mjs → esm2015/f-draggable/canvas/canvas-move-finalize/index.js} +0 -0
- /package/{esm2022/f-draggable/canvas/canvas-move-finalize/providers.mjs → esm2015/f-draggable/canvas/canvas-move-finalize/providers.js} +0 -0
- /package/{esm2022/f-draggable/canvas/canvas-move-preparation/index.mjs → esm2015/f-draggable/canvas/canvas-move-preparation/index.js} +0 -0
- /package/{esm2022/f-draggable/canvas/canvas-move-preparation/providers.mjs → esm2015/f-draggable/canvas/canvas-move-preparation/providers.js} +0 -0
- /package/{esm2022/f-draggable/canvas/index.mjs → esm2015/f-draggable/canvas/index.js} +0 -0
- /package/{esm2022/f-draggable/canvas/providers.mjs → esm2015/f-draggable/canvas/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-finalize/index.mjs → esm2015/f-draggable/connections/create-connection/create-connection-finalize/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-finalize/providers.mjs → esm2015/f-draggable/connections/create-connection/create-connection-finalize/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/index.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/providers.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-drag-handler/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/index.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/providers.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-outlet-preparation/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/index.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/providers.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/create-connection-from-output-preparation/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/index.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/create-connection-preparation/providers.mjs → esm2015/f-draggable/connections/create-connection/create-connection-preparation/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/index.mjs → esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/providers.mjs → esm2015/f-draggable/connections/create-connection/get-can-be-connected-output-by-outlet/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/create-connection/index.mjs → esm2015/f-draggable/connections/create-connection/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/get-input-under-pointer/index.mjs → esm2015/f-draggable/connections/get-input-under-pointer/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/get-input-under-pointer/providers.mjs → esm2015/f-draggable/connections/get-input-under-pointer/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/index.mjs → esm2015/f-draggable/connections/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/providers.mjs → esm2015/f-draggable/connections/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/reassign-connection/index.mjs → esm2015/f-draggable/connections/reassign-connection/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/index.mjs → esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/reassign-connection/reassign-connection-finalize/providers.mjs → esm2015/f-draggable/connections/reassign-connection/reassign-connection-finalize/providers.js} +0 -0
- /package/{esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/index.mjs → esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/index.js} +0 -0
- /package/{esm2022/f-draggable/connections/reassign-connection/reassign-connection-preparation/providers.mjs → esm2015/f-draggable/connections/reassign-connection/reassign-connection-preparation/providers.js} +0 -0
- /package/{esm2022/f-draggable/domain/get-node-padding/index.mjs → esm2015/f-draggable/domain/get-node-padding/index.js} +0 -0
- /package/{esm2022/f-draggable/domain/get-normalized-node-rect/index.mjs → esm2015/f-draggable/domain/get-normalized-node-rect/index.js} +0 -0
- /package/{esm2022/f-draggable/domain/get-normalized-parent-node-rect/index.mjs → esm2015/f-draggable/domain/get-normalized-parent-node-rect/index.js} +0 -0
- /package/{esm2022/f-draggable/domain/get-parent-nodes/index.mjs → esm2015/f-draggable/domain/get-parent-nodes/index.js} +0 -0
- /package/{esm2022/f-draggable/domain/index.mjs → esm2015/f-draggable/domain/index.js} +0 -0
- /package/{esm2022/f-draggable/domain/is-array-has-parent-node/index.mjs → esm2015/f-draggable/domain/is-array-has-parent-node/index.js} +0 -0
- /package/{esm2022/f-draggable/domain/providers.mjs → esm2015/f-draggable/domain/providers.js} +0 -0
- /package/{esm2022/f-draggable/i-can-run-outside-angular.mjs → esm2015/f-draggable/i-can-run-outside-angular.js} +0 -0
- /package/{esm2022/f-draggable/i-draggable-item.mjs → esm2015/f-draggable/i-draggable-item.js} +0 -0
- /package/{esm2022/f-draggable/i-f-drag-and-drop-plugin.mjs → esm2015/f-draggable/i-f-drag-and-drop-plugin.js} +0 -0
- /package/{esm2022/f-draggable/index.mjs → esm2015/f-draggable/index.js} +0 -0
- /package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/create-move-nodes-drag-model-from-selection.request.js} +0 -0
- /package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/i-node-move-restrictions.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/i-node-move-restrictions.js} +0 -0
- /package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/index.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/get-node-move-restrictions/index.js} +0 -0
- /package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/index.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-input-connection-handlers-to-array/index.js} +0 -0
- /package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/index.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/domain/put-output-connection-handlers-to-array/index.js} +0 -0
- /package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/i-node-with-distance-restrictions.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/i-node-with-distance-restrictions.js} +0 -0
- /package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/index.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/index.js} +0 -0
- /package/{esm2022/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.mjs → esm2015/f-draggable/node/create-move-nodes-drag-model-from-selection/providers.js} +0 -0
- /package/{esm2022/f-draggable/node/index.mjs → esm2015/f-draggable/node/index.js} +0 -0
- /package/{esm2022/f-draggable/node/node-move-finalize/index.mjs → esm2015/f-draggable/node/node-move-finalize/index.js} +0 -0
- /package/{esm2022/f-draggable/node/node-move-finalize/providers.mjs → esm2015/f-draggable/node/node-move-finalize/providers.js} +0 -0
- /package/{esm2022/f-draggable/node/node-move-preparation/index.mjs → esm2015/f-draggable/node/node-move-preparation/index.js} +0 -0
- /package/{esm2022/f-draggable/node/node-move-preparation/providers.mjs → esm2015/f-draggable/node/node-move-preparation/providers.js} +0 -0
- /package/{esm2022/f-draggable/node/providers.mjs → esm2015/f-draggable/node/providers.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/apply-child-resize-restrictions/index.mjs → esm2015/f-draggable/node-resize/apply-child-resize-restrictions/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/apply-parent-resize-restrictions/index.mjs → esm2015/f-draggable/node-resize/apply-parent-resize-restrictions/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/calculate-changed-position/index.mjs → esm2015/f-draggable/node-resize/calculate-changed-position/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/calculate-changed-size/index.mjs → esm2015/f-draggable/node-resize/calculate-changed-size/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/get-node-resize-restrictions/i-node-resize-restrictions.mjs → esm2015/f-draggable/node-resize/get-node-resize-restrictions/i-node-resize-restrictions.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/get-node-resize-restrictions/index.mjs → esm2015/f-draggable/node-resize/get-node-resize-restrictions/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/get-normalized-children-nodes-rect/index.mjs → esm2015/f-draggable/node-resize/get-normalized-children-nodes-rect/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/index.mjs → esm2015/f-draggable/node-resize/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/node-resize-finalize/index.mjs → esm2015/f-draggable/node-resize/node-resize-finalize/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/node-resize-finalize/providers.mjs → esm2015/f-draggable/node-resize/node-resize-finalize/providers.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/node-resize-preparation/index.mjs → esm2015/f-draggable/node-resize/node-resize-preparation/index.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/node-resize-preparation/providers.mjs → esm2015/f-draggable/node-resize/node-resize-preparation/providers.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/providers.mjs → esm2015/f-draggable/node-resize/providers.js} +0 -0
- /package/{esm2022/f-draggable/node-resize/resize-direction.mjs → esm2015/f-draggable/node-resize/resize-direction.js} +0 -0
- /package/{esm2022/f-draggable/providers.mjs → esm2015/f-draggable/providers.js} +0 -0
- /package/{esm2022/f-draggable/single-select/index.mjs → esm2015/f-draggable/single-select/index.js} +0 -0
- /package/{esm2022/f-draggable/single-select/providers.mjs → esm2015/f-draggable/single-select/providers.js} +0 -0
- /package/{esm2022/f-external-item/domain/external-item-finalize/index.mjs → esm2015/f-external-item/domain/external-item-finalize/index.js} +0 -0
- /package/{esm2022/f-external-item/domain/external-item-finalize/providers.mjs → esm2015/f-external-item/domain/external-item-finalize/providers.js} +0 -0
- /package/{esm2022/f-external-item/domain/external-item-preparation/index.mjs → esm2015/f-external-item/domain/external-item-preparation/index.js} +0 -0
- /package/{esm2022/f-external-item/domain/external-item-preparation/providers.mjs → esm2015/f-external-item/domain/external-item-preparation/providers.js} +0 -0
- /package/{esm2022/f-external-item/domain/index.mjs → esm2015/f-external-item/domain/index.js} +0 -0
- /package/{esm2022/f-external-item/domain/providers.mjs → esm2015/f-external-item/domain/providers.js} +0 -0
- /package/{esm2022/f-external-item/index.mjs → esm2015/f-external-item/index.js} +0 -0
- /package/{esm2022/f-external-item/is-external-item.mjs → esm2015/f-external-item/is-external-item.js} +0 -0
- /package/{esm2022/f-external-item/providers.mjs → esm2015/f-external-item/providers.js} +0 -0
- /package/{esm2022/f-flow/f-flow-base.mjs → esm2015/f-flow/f-flow-base.js} +0 -0
- /package/{esm2022/f-flow/index.mjs → esm2015/f-flow/index.js} +0 -0
- /package/{esm2022/f-flow/providers.mjs → esm2015/f-flow/providers.js} +0 -0
- /package/{esm2022/f-line-alignment/domain/i-line-alignment-rect.mjs → esm2015/f-line-alignment/domain/i-line-alignment-rect.js} +0 -0
- /package/{esm2022/f-line-alignment/domain/i-line-alignment-result.mjs → esm2015/f-line-alignment/domain/i-line-alignment-result.js} +0 -0
- /package/{esm2022/f-line-alignment/domain/i-nearest-coordinate-result.mjs → esm2015/f-line-alignment/domain/i-nearest-coordinate-result.js} +0 -0
- /package/{esm2022/f-line-alignment/domain/index.mjs → esm2015/f-line-alignment/domain/index.js} +0 -0
- /package/{esm2022/f-line-alignment/index.mjs → esm2015/f-line-alignment/index.js} +0 -0
- /package/{esm2022/f-line-alignment/providers.mjs → esm2015/f-line-alignment/providers.js} +0 -0
- /package/{esm2022/f-minimap/domain/calculate-flow-point-from-minimap-point/index.mjs → esm2015/f-minimap/domain/calculate-flow-point-from-minimap-point/index.js} +0 -0
- /package/{esm2022/f-minimap/domain/minimap-drag-finalize/index.mjs → esm2015/f-minimap/domain/minimap-drag-finalize/index.js} +0 -0
- /package/{esm2022/f-minimap/domain/minimap-drag-finalize/providers.mjs → esm2015/f-minimap/domain/minimap-drag-finalize/providers.js} +0 -0
- /package/{esm2022/f-minimap/domain/minimap-drag-preparation/index.mjs → esm2015/f-minimap/domain/minimap-drag-preparation/index.js} +0 -0
- /package/{esm2022/f-minimap/domain/minimap-drag-preparation/providers.mjs → esm2015/f-minimap/domain/minimap-drag-preparation/providers.js} +0 -0
- /package/{esm2022/f-minimap/domain/providers.mjs → esm2015/f-minimap/domain/providers.js} +0 -0
- /package/{esm2022/f-minimap/index.mjs → esm2015/f-minimap/index.js} +0 -0
- /package/{esm2022/f-minimap/providers.mjs → esm2015/f-minimap/providers.js} +0 -0
- /package/{esm2022/f-node/domain/index.mjs → esm2015/f-node/domain/index.js} +0 -0
- /package/{esm2022/f-node/domain/is-group.mjs → esm2015/f-node/domain/is-group.js} +0 -0
- /package/{esm2022/f-node/domain/is-node.mjs → esm2015/f-node/domain/is-node.js} +0 -0
- /package/{esm2022/f-node/f-drag-handle/index.mjs → esm2015/f-node/f-drag-handle/index.js} +0 -0
- /package/{esm2022/f-node/f-resize-handle/e-f-resize-handle-type.mjs → esm2015/f-node/f-resize-handle/e-f-resize-handle-type.js} +0 -0
- /package/{esm2022/f-node/f-resize-handle/index.mjs → esm2015/f-node/f-resize-handle/index.js} +0 -0
- /package/{esm2022/f-node/f-resize-observer.mjs → esm2015/f-node/f-resize-observer.js} +0 -0
- /package/{esm2022/f-node/f-rotate-handle/index.mjs → esm2015/f-node/f-rotate-handle/index.js} +0 -0
- /package/{esm2022/f-node/index.mjs → esm2015/f-node/index.js} +0 -0
- /package/{esm2022/f-node/providers.mjs → esm2015/f-node/providers.js} +0 -0
- /package/{esm2022/f-selection-area/domain/index.mjs → esm2015/f-selection-area/domain/index.js} +0 -0
- /package/{esm2022/f-selection-area/domain/providers.mjs → esm2015/f-selection-area/domain/providers.js} +0 -0
- /package/{esm2022/f-selection-area/domain/selection-area-finalize/index.mjs → esm2015/f-selection-area/domain/selection-area-finalize/index.js} +0 -0
- /package/{esm2022/f-selection-area/domain/selection-area-finalize/providers.mjs → esm2015/f-selection-area/domain/selection-area-finalize/providers.js} +0 -0
- /package/{esm2022/f-selection-area/domain/selection-area-preparation/index.mjs → esm2015/f-selection-area/domain/selection-area-preparation/index.js} +0 -0
- /package/{esm2022/f-selection-area/domain/selection-area-preparation/providers.mjs → esm2015/f-selection-area/domain/selection-area-preparation/providers.js} +0 -0
- /package/{esm2022/f-selection-area/index.mjs → esm2015/f-selection-area/index.js} +0 -0
- /package/{esm2022/f-selection-area/providers.mjs → esm2015/f-selection-area/providers.js} +0 -0
- /package/{esm2022/f-storage/index.mjs → esm2015/f-storage/index.js} +0 -0
- /package/{esm2022/f-zoom/index.mjs → esm2015/f-zoom/index.js} +0 -0
- /package/{esm2022/f-zoom/providers.mjs → esm2015/f-zoom/providers.js} +0 -0
- /package/{esm2022/foblex-flow.mjs → esm2015/foblex-flow.js} +0 -0
- /package/{esm2022/i-has-state-changes.mjs → esm2015/i-has-state-changes.js} +0 -0
- /package/{esm2022/infrastructure/f-mediator/f-execution-register.mjs → esm2015/infrastructure/f-mediator/f-execution-register.js} +0 -0
- /package/{esm2022/infrastructure/f-mediator/f-validator-register.mjs → esm2015/infrastructure/f-mediator/f-validator-register.js} +0 -0
- /package/{esm2022/infrastructure/f-mediator/index.mjs → esm2015/infrastructure/f-mediator/index.js} +0 -0
- /package/{esm2022/infrastructure/index.mjs → esm2015/infrastructure/index.js} +0 -0
- /package/{esm2022/infrastructure/pipeline/i-execution.mjs → esm2015/infrastructure/pipeline/i-execution.js} +0 -0
- /package/{esm2022/infrastructure/pipeline/i-validator.mjs → esm2015/infrastructure/pipeline/i-validator.js} +0 -0
- /package/{esm2022/infrastructure/pipeline/index.mjs → esm2015/infrastructure/pipeline/index.js} +0 -0
- /package/{esm2022/public-api.mjs → esm2015/public-api.js} +0 -0
- /package/{index.d.ts → foblex-flow.d.ts} +0 -0
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, ContentChild } from "@angular/core";
|
|
2
|
-
import { F_BACKGROUND, FBackgroundBase } from './f-background-base';
|
|
3
|
-
import { TransformModelExtensions } from '@foblex/core';
|
|
4
|
-
import { F_BACKGROUND_PATTERN } from './domain';
|
|
5
|
-
import { createSVGElement } from '../domain';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "../f-storage";
|
|
8
|
-
import * as i2 from "@foblex/platform";
|
|
9
|
-
let uniqueId = 0;
|
|
10
|
-
export class FBackgroundComponent extends FBackgroundBase {
|
|
11
|
-
elementReference;
|
|
12
|
-
fComponentsStore;
|
|
13
|
-
fBrowser;
|
|
14
|
-
get hostElement() {
|
|
15
|
-
return this.elementReference.nativeElement;
|
|
16
|
-
}
|
|
17
|
-
fBackgroundPattern;
|
|
18
|
-
constructor(elementReference, fComponentsStore, fBrowser) {
|
|
19
|
-
super();
|
|
20
|
-
this.elementReference = elementReference;
|
|
21
|
-
this.fComponentsStore = fComponentsStore;
|
|
22
|
-
this.fBrowser = fBrowser;
|
|
23
|
-
}
|
|
24
|
-
ngOnInit() {
|
|
25
|
-
this.fComponentsStore.fBackground = this;
|
|
26
|
-
}
|
|
27
|
-
ngAfterContentInit() {
|
|
28
|
-
const children = this.fBackgroundPattern?.hostElement.getElementsByTagName('pattern') || [];
|
|
29
|
-
const pattern = children.length ? children[0] : undefined;
|
|
30
|
-
if (pattern) {
|
|
31
|
-
const defs = createSVGElement('defs', this.fBrowser);
|
|
32
|
-
pattern.id = 'f-background-marker-' + uniqueId++;
|
|
33
|
-
this.fBackgroundPattern?.hostElement.remove();
|
|
34
|
-
defs.appendChild(pattern);
|
|
35
|
-
this.hostElement?.firstChild?.appendChild(defs);
|
|
36
|
-
const rect = createSVGElement('rect', this.fBrowser);
|
|
37
|
-
rect.setAttribute('fill', 'url(#' + pattern.id + ')');
|
|
38
|
-
rect.setAttribute('width', '100%');
|
|
39
|
-
rect.setAttribute('height', '100%');
|
|
40
|
-
this.hostElement.firstChild?.appendChild(rect);
|
|
41
|
-
const transform = this.fComponentsStore.fCanvas?.transform || TransformModelExtensions.default();
|
|
42
|
-
this.fBackgroundPattern?.setTransform(transform);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
isBackgroundElement(element) {
|
|
46
|
-
return this.hostElement.contains(element);
|
|
47
|
-
}
|
|
48
|
-
setTransform(transform) {
|
|
49
|
-
this.fBackgroundPattern?.setTransform(transform);
|
|
50
|
-
}
|
|
51
|
-
ngOnDestroy() {
|
|
52
|
-
this.fComponentsStore.fBackground = undefined;
|
|
53
|
-
}
|
|
54
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FBackgroundComponent, deps: [{ token: i0.ElementRef }, { token: i1.FComponentsStore }, { token: i2.BrowserService }], target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: FBackgroundComponent, selector: "f-background", host: { classAttribute: "f-component f-background" }, providers: [{ provide: F_BACKGROUND, useExisting: FBackgroundComponent }], queries: [{ propertyName: "fBackgroundPattern", first: true, predicate: F_BACKGROUND_PATTERN, descendants: true }], usesInheritance: true, ngImport: i0, template: "<svg><ng-content></ng-content></svg>\n", styles: [":host{position:absolute;width:100%;height:100%;left:0;top:0;transform-origin:0 0;pointer-events:none}:host svg{width:100%;height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
56
|
-
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FBackgroundComponent, decorators: [{
|
|
58
|
-
type: Component,
|
|
59
|
-
args: [{ selector: "f-background", host: {
|
|
60
|
-
'class': 'f-component f-background'
|
|
61
|
-
}, providers: [{ provide: F_BACKGROUND, useExisting: FBackgroundComponent }], changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg><ng-content></ng-content></svg>\n", styles: [":host{position:absolute;width:100%;height:100%;left:0;top:0;transform-origin:0 0;pointer-events:none}:host svg{width:100%;height:100%}\n"] }]
|
|
62
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FComponentsStore }, { type: i2.BrowserService }], propDecorators: { fBackgroundPattern: [{
|
|
63
|
-
type: ContentChild,
|
|
64
|
-
args: [F_BACKGROUND_PATTERN, { static: false }]
|
|
65
|
-
}] } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1iYWNrZ3JvdW5kLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1iYWNrZ3JvdWQvZi1iYWNrZ3JvdW5kLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1iYWNrZ3JvdWQvZi1iYWNrZ3JvdW5kLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUFFLFlBQVksRUFHeEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRSxPQUFPLEVBQW1CLHdCQUF3QixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUdoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7QUFFN0MsSUFBSSxRQUFRLEdBQVcsQ0FBQyxDQUFDO0FBWXpCLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxlQUFlO0lBVTNDO0lBQ0E7SUFDQTtJQVZaLElBQW9CLFdBQVc7UUFDN0IsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO0lBQzdDLENBQUM7SUFHTSxrQkFBa0IsQ0FBOEI7SUFFdkQsWUFDWSxnQkFBeUMsRUFDekMsZ0JBQWtDLEVBQ2xDLFFBQXdCO1FBRWxDLEtBQUssRUFBRSxDQUFDO1FBSkUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF5QjtRQUN6QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQWdCO0lBR3BDLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1RixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUUsQ0FBQyxDQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUM1RCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRCxPQUFPLENBQUMsRUFBRSxHQUFHLHNCQUFzQixHQUFHLFFBQVEsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEQsTUFBTSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLEdBQUcsT0FBTyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxTQUFTLElBQUksd0JBQXdCLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRCxDQUFDO0lBQ0gsQ0FBQztJQUVlLG1CQUFtQixDQUFDLE9BQWlDO1FBQ25FLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVNLFlBQVksQ0FBQyxTQUEwQjtRQUM1QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEdBQUcsU0FBUyxDQUFDO0lBQ2hELENBQUM7dUdBbERVLG9CQUFvQjsyRkFBcEIsb0JBQW9CLDZGQUhwQixDQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsQ0FBRSwwRUFTN0Qsb0JBQW9CLHVFQ2hDcEMsd0NBQ0E7OzJGRHlCYSxvQkFBb0I7a0JBVmhDLFNBQVM7K0JBQ0UsY0FBYyxRQUdsQjt3QkFDSixPQUFPLEVBQUUsMEJBQTBCO3FCQUNwQyxhQUNVLENBQUUsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsc0JBQXNCLEVBQUUsQ0FBRSxtQkFDMUQsdUJBQXVCLENBQUMsTUFBTTsySUFTeEMsa0JBQWtCO3NCQUR4QixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZiwgT25EZXN0cm95LFxuICBPbkluaXRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZfQkFDS0dST1VORCwgRkJhY2tncm91bmRCYXNlIH0gZnJvbSAnLi9mLWJhY2tncm91bmQtYmFzZSc7XG5pbXBvcnQgeyBJVHJhbnNmb3JtTW9kZWwsIFRyYW5zZm9ybU1vZGVsRXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvY29yZSc7XG5pbXBvcnQgeyBGX0JBQ0tHUk9VTkRfUEFUVEVSTiB9IGZyb20gJy4vZG9tYWluJztcbmltcG9ydCB7IEZDb21wb25lbnRzU3RvcmUgfSBmcm9tICcuLi9mLXN0b3JhZ2UnO1xuaW1wb3J0IHsgQnJvd3NlclNlcnZpY2UgfSBmcm9tICdAZm9ibGV4L3BsYXRmb3JtJztcbmltcG9ydCB7IGNyZWF0ZVNWR0VsZW1lbnQgfSBmcm9tICcuLi9kb21haW4nO1xuXG5sZXQgdW5pcXVlSWQ6IG51bWJlciA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJmLWJhY2tncm91bmRcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9mLWJhY2tncm91bmQuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbIFwiLi9mLWJhY2tncm91bmQuY29tcG9uZW50LnNjc3NcIiBdLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ2YtY29tcG9uZW50IGYtYmFja2dyb3VuZCdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbIHsgcHJvdmlkZTogRl9CQUNLR1JPVU5ELCB1c2VFeGlzdGluZzogRkJhY2tncm91bmRDb21wb25lbnQgfSBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRkJhY2tncm91bmRDb21wb25lbnQgZXh0ZW5kcyBGQmFja2dyb3VuZEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHVibGljIG92ZXJyaWRlIGdldCBob3N0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZmVyZW5jZS5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgQENvbnRlbnRDaGlsZChGX0JBQ0tHUk9VTkRfUEFUVEVSTiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIHB1YmxpYyBmQmFja2dyb3VuZFBhdHRlcm46IEZCYWNrZ3JvdW5kQmFzZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHByaXZhdGUgZWxlbWVudFJlZmVyZW5jZTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICBwcml2YXRlIGZDb21wb25lbnRzU3RvcmU6IEZDb21wb25lbnRzU3RvcmUsXG4gICAgICBwcml2YXRlIGZCcm93c2VyOiBCcm93c2VyU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZkNvbXBvbmVudHNTdG9yZS5mQmFja2dyb3VuZCA9IHRoaXM7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5mQmFja2dyb3VuZFBhdHRlcm4/Lmhvc3RFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwYXR0ZXJuJykgfHwgW107XG4gICAgY29uc3QgcGF0dGVybiA9IGNoaWxkcmVuLmxlbmd0aCA/IGNoaWxkcmVuWyAwIF0gOiB1bmRlZmluZWQ7XG4gICAgaWYgKHBhdHRlcm4pIHtcbiAgICAgIGNvbnN0IGRlZnMgPSBjcmVhdGVTVkdFbGVtZW50KCdkZWZzJywgdGhpcy5mQnJvd3Nlcik7XG4gICAgICBwYXR0ZXJuLmlkID0gJ2YtYmFja2dyb3VuZC1tYXJrZXItJyArIHVuaXF1ZUlkKys7XG4gICAgICB0aGlzLmZCYWNrZ3JvdW5kUGF0dGVybj8uaG9zdEVsZW1lbnQucmVtb3ZlKCk7XG4gICAgICBkZWZzLmFwcGVuZENoaWxkKHBhdHRlcm4pO1xuICAgICAgdGhpcy5ob3N0RWxlbWVudD8uZmlyc3RDaGlsZD8uYXBwZW5kQ2hpbGQoZGVmcyk7XG4gICAgICBjb25zdCByZWN0ID0gY3JlYXRlU1ZHRWxlbWVudCgncmVjdCcsIHRoaXMuZkJyb3dzZXIpO1xuICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCAndXJsKCMnICsgcGF0dGVybi5pZCArICcpJyk7XG4gICAgICByZWN0LnNldEF0dHJpYnV0ZSgnd2lkdGgnLCAnMTAwJScpO1xuICAgICAgcmVjdC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsICcxMDAlJyk7XG4gICAgICB0aGlzLmhvc3RFbGVtZW50LmZpcnN0Q2hpbGQ/LmFwcGVuZENoaWxkKHJlY3QpO1xuICAgICAgY29uc3QgdHJhbnNmb3JtID0gdGhpcy5mQ29tcG9uZW50c1N0b3JlLmZDYW52YXM/LnRyYW5zZm9ybSB8fCBUcmFuc2Zvcm1Nb2RlbEV4dGVuc2lvbnMuZGVmYXVsdCgpO1xuICAgICAgdGhpcy5mQmFja2dyb3VuZFBhdHRlcm4/LnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBpc0JhY2tncm91bmRFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhvc3RFbGVtZW50LmNvbnRhaW5zKGVsZW1lbnQpO1xuICB9XG5cbiAgcHVibGljIHNldFRyYW5zZm9ybSh0cmFuc2Zvcm06IElUcmFuc2Zvcm1Nb2RlbCk6IHZvaWQge1xuICAgIHRoaXMuZkJhY2tncm91bmRQYXR0ZXJuPy5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmZDb21wb25lbnRzU3RvcmUuZkJhY2tncm91bmQgPSB1bmRlZmluZWQ7XG4gIH1cbn1cbiIsIjxzdmc+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3ZnPlxuIl19
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
-
import { PointExtensions, TransformModelExtensions } from '@foblex/core';
|
|
3
|
-
import { F_BACKGROUND_PATTERN } from '../domain';
|
|
4
|
-
import { startWith, Subject, Subscription } from 'rxjs';
|
|
5
|
-
import { createSVGElement } from '../../domain';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@foblex/platform";
|
|
8
|
-
let uniqueId = 0;
|
|
9
|
-
export class FCirclePatternComponent {
|
|
10
|
-
elementReference;
|
|
11
|
-
fBrowser;
|
|
12
|
-
_subscription$ = new Subscription();
|
|
13
|
-
_stateChanges = new Subject();
|
|
14
|
-
get hostElement() {
|
|
15
|
-
return this.elementReference.nativeElement;
|
|
16
|
-
}
|
|
17
|
-
id = `f-pattern-${uniqueId++}`;
|
|
18
|
-
_color = 'rgba(0,0,0,0.1)';
|
|
19
|
-
set color(value) {
|
|
20
|
-
this._color = value;
|
|
21
|
-
this._stateChanges.next();
|
|
22
|
-
}
|
|
23
|
-
_radius = 20;
|
|
24
|
-
_scaledRadius = 20;
|
|
25
|
-
set radius(value) {
|
|
26
|
-
this._radius = value;
|
|
27
|
-
this._stateChanges.next();
|
|
28
|
-
}
|
|
29
|
-
_transform = TransformModelExtensions.default();
|
|
30
|
-
_position = PointExtensions.initialize();
|
|
31
|
-
_pattern;
|
|
32
|
-
_circle;
|
|
33
|
-
constructor(elementReference, fBrowser) {
|
|
34
|
-
this.elementReference = elementReference;
|
|
35
|
-
this.fBrowser = fBrowser;
|
|
36
|
-
this.createPattern();
|
|
37
|
-
}
|
|
38
|
-
createPattern() {
|
|
39
|
-
this._pattern = createSVGElement('pattern', this.fBrowser);
|
|
40
|
-
this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');
|
|
41
|
-
this.hostElement.appendChild(this._pattern);
|
|
42
|
-
this._circle = createSVGElement('circle', this.fBrowser);
|
|
43
|
-
this._pattern.appendChild(this._circle);
|
|
44
|
-
}
|
|
45
|
-
ngOnInit() {
|
|
46
|
-
this._subscription$.add(this.subscribeToStateChanges());
|
|
47
|
-
}
|
|
48
|
-
subscribeToStateChanges() {
|
|
49
|
-
return this._stateChanges.pipe(startWith(null)).subscribe(() => {
|
|
50
|
-
this.redraw();
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
calculatePattern() {
|
|
54
|
-
this._position.x = this._transform.position.x + this._transform.scaledPosition.x;
|
|
55
|
-
this._position.y = this._transform.position.y + this._transform.scaledPosition.y;
|
|
56
|
-
this._scaledRadius = this._radius * this._transform.scale;
|
|
57
|
-
}
|
|
58
|
-
redraw() {
|
|
59
|
-
this.calculatePattern();
|
|
60
|
-
this.redrawPattern();
|
|
61
|
-
this.redrawElement();
|
|
62
|
-
}
|
|
63
|
-
redrawPattern() {
|
|
64
|
-
this._pattern.setAttribute('x', `${this._position.x}`);
|
|
65
|
-
this._pattern.setAttribute('y', `${this._position.y}`);
|
|
66
|
-
this._pattern.setAttribute('width', `${this._scaledRadius}`);
|
|
67
|
-
this._pattern.setAttribute('height', `${this._scaledRadius}`);
|
|
68
|
-
}
|
|
69
|
-
redrawElement() {
|
|
70
|
-
this._circle.setAttribute('fill', this._color);
|
|
71
|
-
this._circle.setAttribute('cx', `${this._scaledRadius / 2}`);
|
|
72
|
-
this._circle.setAttribute('cy', `${this._scaledRadius / 2}`);
|
|
73
|
-
this._circle.setAttribute('r', `${this._scaledRadius / this._radius}`);
|
|
74
|
-
}
|
|
75
|
-
setTransform(transform) {
|
|
76
|
-
this._transform = transform;
|
|
77
|
-
this._stateChanges.next();
|
|
78
|
-
}
|
|
79
|
-
ngOnDestroy() {
|
|
80
|
-
this._subscription$.unsubscribe();
|
|
81
|
-
}
|
|
82
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FCirclePatternComponent, deps: [{ token: i0.ElementRef }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Component });
|
|
83
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: FCirclePatternComponent, selector: "f-circle-pattern", inputs: { id: "id", color: "color", radius: "radius" }, host: { properties: { "attr.id": "id" } }, providers: [
|
|
84
|
-
{ provide: F_BACKGROUND_PATTERN, useExisting: FCirclePatternComponent }
|
|
85
|
-
], ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
86
|
-
}
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FCirclePatternComponent, decorators: [{
|
|
88
|
-
type: Component,
|
|
89
|
-
args: [{
|
|
90
|
-
selector: "f-circle-pattern",
|
|
91
|
-
template: ``,
|
|
92
|
-
host: {
|
|
93
|
-
'[attr.id]': 'id'
|
|
94
|
-
},
|
|
95
|
-
providers: [
|
|
96
|
-
{ provide: F_BACKGROUND_PATTERN, useExisting: FCirclePatternComponent }
|
|
97
|
-
],
|
|
98
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
99
|
-
}]
|
|
100
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.BrowserService }], propDecorators: { id: [{
|
|
101
|
-
type: Input
|
|
102
|
-
}], color: [{
|
|
103
|
-
type: Input
|
|
104
|
-
}], radius: [{
|
|
105
|
-
type: Input
|
|
106
|
-
}] } });
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jaXJjbGUtcGF0dGVybi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtYmFja2dyb3VkL2YtY2lyY2xlLXBhdHRlcm4vZi1jaXJjbGUtcGF0dGVybi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ0csS0FBSyxFQUVsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsZUFBZSxFQUNmLHdCQUF3QixFQUN6QixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsb0JBQW9CLEVBQXVCLE1BQU0sV0FBVyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7OztBQUVoRCxJQUFJLFFBQVEsR0FBVyxDQUFDLENBQUM7QUFhekIsTUFBTSxPQUFPLHVCQUF1QjtJQXVDeEI7SUFDQTtJQXRDRixjQUFjLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFbEQsYUFBYSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRTNELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7SUFDN0MsQ0FBQztJQUdNLEVBQUUsR0FBVyxhQUFjLFFBQVEsRUFBRyxFQUFFLENBQUM7SUFHeEMsTUFBTSxHQUFXLGlCQUFpQixDQUFDO0lBRTNDLElBQ1csS0FBSyxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU8sT0FBTyxHQUFXLEVBQUUsQ0FBQztJQUNyQixhQUFhLEdBQVcs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T0ssS0FBSztzQkFEZixLQUFLO2dCQVVLLE1BQU07c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LFxuICBPbkluaXRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIElQb2ludCxcbiAgSVRyYW5zZm9ybU1vZGVsLFxuICBQb2ludEV4dGVuc2lvbnMsXG4gIFRyYW5zZm9ybU1vZGVsRXh0ZW5zaW9uc1xufSBmcm9tICdAZm9ibGV4L2NvcmUnO1xuaW1wb3J0IHsgRl9CQUNLR1JPVU5EX1BBVFRFUk4sIElGQmFja2dyb3VuZFBhdHRlcm4gfSBmcm9tICcuLi9kb21haW4nO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJyb3dzZXJTZXJ2aWNlIH0gZnJvbSAnQGZvYmxleC9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBjcmVhdGVTVkdFbGVtZW50IH0gZnJvbSAnLi4vLi4vZG9tYWluJztcblxubGV0IHVuaXF1ZUlkOiBudW1iZXIgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiZi1jaXJjbGUtcGF0dGVyblwiLFxuICB0ZW1wbGF0ZTogYGAsXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuaWRdJzogJ2lkJ1xuICB9LFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IEZfQkFDS0dST1VORF9QQVRURVJOLCB1c2VFeGlzdGluZzogRkNpcmNsZVBhdHRlcm5Db21wb25lbnQgfVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBGQ2lyY2xlUGF0dGVybkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBJRkJhY2tncm91bmRQYXR0ZXJuIHtcblxuICBwcml2YXRlIF9zdWJzY3JpcHRpb24kOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJpdmF0ZSBfc3RhdGVDaGFuZ2VzOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgZ2V0IGhvc3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgaWQ6IHN0cmluZyA9IGBmLXBhdHRlcm4tJHsgdW5pcXVlSWQrKyB9YDtcblxuXG4gIHByaXZhdGUgX2NvbG9yOiBzdHJpbmcgPSAncmdiYSgwLDAsMCwwLjEpJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGNvbG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb2xvciA9IHZhbHVlO1xuICAgIHRoaXMuX3N0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIF9yYWRpdXM6IG51bWJlciA9IDIwO1xuICBwcml2YXRlIF9zY2FsZWRSYWRpdXM6IG51bWJlciA9IDIwO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcmFkaXVzKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9yYWRpdXMgPSB2YWx1ZTtcbiAgICB0aGlzLl9zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdHJhbnNmb3JtOiBJVHJhbnNmb3JtTW9kZWwgPSBUcmFuc2Zvcm1Nb2RlbEV4dGVuc2lvbnMuZGVmYXVsdCgpO1xuXG4gIHByaXZhdGUgX3Bvc2l0aW9uOiBJUG9pbnQgPSBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSgpO1xuXG4gIHByaXZhdGUgX3BhdHRlcm4hOiBTVkdQYXR0ZXJuRWxlbWVudDtcbiAgcHJpdmF0ZSBfY2lyY2xlITogU1ZHQ2lyY2xlRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVsZW1lbnRSZWZlcmVuY2U6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgZkJyb3dzZXI6IEJyb3dzZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuY3JlYXRlUGF0dGVybigpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQYXR0ZXJuKCk6IHZvaWQge1xuICAgIHRoaXMuX3BhdHRlcm4gPSBjcmVhdGVTVkdFbGVtZW50KCdwYXR0ZXJuJywgdGhpcy5mQnJvd3Nlcik7XG4gICAgdGhpcy5fcGF0dGVybi5zZXRBdHRyaWJ1dGUoJ3BhdHRlcm5Vbml0cycsICd1c2VyU3BhY2VPblVzZScpO1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcGF0dGVybik7XG5cbiAgICB0aGlzLl9jaXJjbGUgPSBjcmVhdGVTVkdFbGVtZW50KCdjaXJjbGUnLCB0aGlzLmZCcm93c2VyKTtcbiAgICB0aGlzLl9wYXR0ZXJuLmFwcGVuZENoaWxkKHRoaXMuX2NpcmNsZSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uJC5hZGQodGhpcy5zdWJzY3JpYmVUb1N0YXRlQ2hhbmdlcygpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9TdGF0ZUNoYW5nZXMoKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGVDaGFuZ2VzLnBpcGUoc3RhcnRXaXRoKG51bGwpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5yZWRyYXcoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY2FsY3VsYXRlUGF0dGVybigpOiB2b2lkIHtcbiAgICB0aGlzLl9wb3NpdGlvbi54ID0gdGhpcy5fdHJhbnNmb3JtLnBvc2l0aW9uLnggKyB0aGlzLl90cmFuc2Zvcm0uc2NhbGVkUG9zaXRpb24ueDtcbiAgICB0aGlzLl9wb3NpdGlvbi55ID0gdGhpcy5fdHJhbnNmb3JtLnBvc2l0aW9uLnkgKyB0aGlzLl90cmFuc2Zvcm0uc2NhbGVkUG9zaXRpb24ueTtcbiAgICB0aGlzLl9zY2FsZWRSYWRpdXMgPSB0aGlzLl9yYWRpdXMgKiB0aGlzLl90cmFuc2Zvcm0uc2NhbGU7XG4gIH1cblxuICBwcml2YXRlIHJlZHJhdygpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGN1bGF0ZVBhdHRlcm4oKTtcbiAgICB0aGlzLnJlZHJhd1BhdHRlcm4oKTtcbiAgICB0aGlzLnJlZHJhd0VsZW1lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVkcmF3UGF0dGVybigpOiB2b2lkIHtcbiAgICB0aGlzLl9wYXR0ZXJuLnNldEF0dHJpYnV0ZSgneCcsIGAkeyB0aGlzLl9wb3NpdGlvbi54IH1gKTtcbiAgICB0aGlzLl9wYXR0ZXJuLnNldEF0dHJpYnV0ZSgneScsIGAkeyB0aGlzLl9wb3NpdGlvbi55IH1gKTtcbiAgICB0aGlzLl9wYXR0ZXJuLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBgJHsgdGhpcy5fc2NhbGVkUmFkaXVzIH1gKTtcbiAgICB0aGlzLl9wYXR0ZXJuLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7IHRoaXMuX3NjYWxlZFJhZGl1cyB9YCk7XG4gIH1cblxuICBwcml2YXRlIHJlZHJhd0VsZW1lbnQoKTogdm9pZCB7XG4gICAgdGhpcy5fY2lyY2xlLnNldEF0dHJpYnV0ZSgnZmlsbCcsIHRoaXMuX2NvbG9yKTtcbiAgICB0aGlzLl9jaXJjbGUuc2V0QXR0cmlidXRlKCdjeCcsIGAkeyB0aGlzLl9zY2FsZWRSYWRpdXMgLyAyIH1gKTtcbiAgICB0aGlzLl9jaXJjbGUuc2V0QXR0cmlidXRlKCdjeScsIGAkeyB0aGlzLl9zY2FsZWRSYWRpdXMgLyAyIH1gKTtcbiAgICB0aGlzLl9jaXJjbGUuc2V0QXR0cmlidXRlKCdyJywgYCR7IHRoaXMuX3NjYWxlZFJhZGl1cyAvIHRoaXMuX3JhZGl1cyB9YCk7XG4gIH1cblxuICBwdWJsaWMgc2V0VHJhbnNmb3JtKHRyYW5zZm9ybTogSVRyYW5zZm9ybU1vZGVsKTogdm9pZCB7XG4gICAgdGhpcy5fdHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuICAgIHRoaXMuX3N0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uJC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
|
|
2
|
-
import { PointExtensions, SizeExtensions, TransformModelExtensions } from '@foblex/core';
|
|
3
|
-
import { F_BACKGROUND_PATTERN } from '../domain';
|
|
4
|
-
import { startWith, Subject, Subscription } from 'rxjs';
|
|
5
|
-
import { createSVGElement } from '../../domain';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@foblex/platform";
|
|
8
|
-
let uniqueId = 0;
|
|
9
|
-
export class FRectPatternComponent {
|
|
10
|
-
elementReference;
|
|
11
|
-
fBrowser;
|
|
12
|
-
_subscription$ = new Subscription();
|
|
13
|
-
_stateChanges = new Subject();
|
|
14
|
-
get hostElement() {
|
|
15
|
-
return this.elementReference.nativeElement;
|
|
16
|
-
}
|
|
17
|
-
id = `f-pattern-${uniqueId++}`;
|
|
18
|
-
_vColor = 'rgba(0,0,0,0.1)';
|
|
19
|
-
set vColor(value) {
|
|
20
|
-
this._vColor = value;
|
|
21
|
-
this._stateChanges.next();
|
|
22
|
-
}
|
|
23
|
-
_hColor = 'rgba(0,0,0,0.1)';
|
|
24
|
-
set hColor(value) {
|
|
25
|
-
this._vColor = value;
|
|
26
|
-
this._stateChanges.next();
|
|
27
|
-
}
|
|
28
|
-
_vSize = 20;
|
|
29
|
-
set vSize(value) {
|
|
30
|
-
this._vSize = value;
|
|
31
|
-
this._stateChanges.next();
|
|
32
|
-
}
|
|
33
|
-
_hSize = 20;
|
|
34
|
-
set hSize(value) {
|
|
35
|
-
this._hSize = value;
|
|
36
|
-
this._stateChanges.next();
|
|
37
|
-
}
|
|
38
|
-
_transform = TransformModelExtensions.default();
|
|
39
|
-
_position = PointExtensions.initialize();
|
|
40
|
-
_size = SizeExtensions.initialize(this._hSize, this._vSize);
|
|
41
|
-
_pattern;
|
|
42
|
-
_vLine;
|
|
43
|
-
_hLine;
|
|
44
|
-
constructor(elementReference, fBrowser) {
|
|
45
|
-
this.elementReference = elementReference;
|
|
46
|
-
this.fBrowser = fBrowser;
|
|
47
|
-
this.createPattern();
|
|
48
|
-
}
|
|
49
|
-
createPattern() {
|
|
50
|
-
this._pattern = createSVGElement('pattern', this.fBrowser);
|
|
51
|
-
this._pattern.setAttribute('patternUnits', 'userSpaceOnUse');
|
|
52
|
-
this.hostElement.appendChild(this._pattern);
|
|
53
|
-
this._vLine = createSVGElement('line', this.fBrowser);
|
|
54
|
-
this._pattern.appendChild(this._vLine);
|
|
55
|
-
this._hLine = createSVGElement('line', this.fBrowser);
|
|
56
|
-
this._pattern.appendChild(this._hLine);
|
|
57
|
-
}
|
|
58
|
-
ngOnInit() {
|
|
59
|
-
this._subscription$.add(this.subscribeToStateChanges());
|
|
60
|
-
}
|
|
61
|
-
subscribeToStateChanges() {
|
|
62
|
-
return this._stateChanges.pipe(startWith(null)).subscribe(() => {
|
|
63
|
-
this.redraw();
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
calculatePattern() {
|
|
67
|
-
this._position.x = this._transform.position.x + this._transform.scaledPosition.x;
|
|
68
|
-
this._position.y = this._transform.position.y + this._transform.scaledPosition.y;
|
|
69
|
-
this._size = SizeExtensions.initialize(this._hSize * this._transform.scale, this._vSize * this._transform.scale);
|
|
70
|
-
}
|
|
71
|
-
redraw() {
|
|
72
|
-
this.calculatePattern();
|
|
73
|
-
this.redrawPattern();
|
|
74
|
-
this.redrawLine(this._vLine, this._vColor, this._size.width, 0, this._size.width, this._size.height);
|
|
75
|
-
this.redrawLine(this._hLine, this._hColor, 0, this._size.height, this._size.width, this._size.height);
|
|
76
|
-
}
|
|
77
|
-
redrawPattern() {
|
|
78
|
-
this._pattern.setAttribute('x', `${this._position.x}`);
|
|
79
|
-
this._pattern.setAttribute('y', `${this._position.y}`);
|
|
80
|
-
this._pattern.setAttribute('width', `${this._size.width}`);
|
|
81
|
-
this._pattern.setAttribute('height', `${this._size.height}`);
|
|
82
|
-
}
|
|
83
|
-
redrawLine(line, color, x1, y1, x2, y2) {
|
|
84
|
-
line.setAttribute('stroke', `${color}`);
|
|
85
|
-
line.setAttribute('x1', `${x1}`);
|
|
86
|
-
line.setAttribute('x2', `${x2}`);
|
|
87
|
-
line.setAttribute('y1', `${y1}`);
|
|
88
|
-
line.setAttribute('y2', `${y2}`);
|
|
89
|
-
}
|
|
90
|
-
setTransform(transform) {
|
|
91
|
-
this._transform = transform;
|
|
92
|
-
this._stateChanges.next();
|
|
93
|
-
}
|
|
94
|
-
ngOnDestroy() {
|
|
95
|
-
this._subscription$.unsubscribe();
|
|
96
|
-
}
|
|
97
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FRectPatternComponent, deps: [{ token: i0.ElementRef }, { token: i1.BrowserService }], target: i0.ɵɵFactoryTarget.Component });
|
|
98
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: FRectPatternComponent, selector: "f-rect-pattern", inputs: { id: "id", vColor: "vColor", hColor: "hColor", vSize: "vSize", hSize: "hSize" }, host: { properties: { "attr.id": "id" } }, providers: [
|
|
99
|
-
{ provide: F_BACKGROUND_PATTERN, useExisting: FRectPatternComponent }
|
|
100
|
-
], ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
101
|
-
}
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FRectPatternComponent, decorators: [{
|
|
103
|
-
type: Component,
|
|
104
|
-
args: [{
|
|
105
|
-
selector: "f-rect-pattern",
|
|
106
|
-
template: ``,
|
|
107
|
-
host: {
|
|
108
|
-
'[attr.id]': 'id'
|
|
109
|
-
},
|
|
110
|
-
providers: [
|
|
111
|
-
{ provide: F_BACKGROUND_PATTERN, useExisting: FRectPatternComponent }
|
|
112
|
-
],
|
|
113
|
-
changeDetection: ChangeDetectionStrategy.OnPush
|
|
114
|
-
}]
|
|
115
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.BrowserService }], propDecorators: { id: [{
|
|
116
|
-
type: Input
|
|
117
|
-
}], vColor: [{
|
|
118
|
-
type: Input
|
|
119
|
-
}], hColor: [{
|
|
120
|
-
type: Input
|
|
121
|
-
}], vSize: [{
|
|
122
|
-
type: Input
|
|
123
|
-
}], hSize: [{
|
|
124
|
-
type: Input
|
|
125
|
-
}] } });
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1yZWN0LXBhdHRlcm4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWJhY2tncm91ZC9mLXJlY3QtcGF0dGVybi9mLXJlY3QtcGF0dGVybi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ0csS0FBSyxFQUVsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBRUwsZUFBZSxFQUFFLGNBQWMsRUFBRSx3QkFBd0IsRUFDMUQsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLG9CQUFvQixFQUF1QixNQUFNLFdBQVcsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sY0FBYyxDQUFDOzs7QUFHaEQsSUFBSSxRQUFRLEdBQVcsQ0FBQyxDQUFDO0FBYXpCLE1BQU0sT0FBTyxxQkFBcUI7SUF3RHRCO0lBQ0E7SUF2REYsY0FBYyxHQUFpQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRWxELGFBQWEsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUUzRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO0lBQzdDLENBQUM7SUFHTSxFQUFFLEdBQVcsYUFBYyxRQUFRLEVBQUcsRUFBRSxDQUFDO0lBRXhDLE9BQU8sR0FBVyxpQkFBaUIsQ0FBQztJQUU1QyxJQUNXLE1BQU0sQ0FBQyxLQUFhO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLE9BQU8sR0FBVyxpQkFBaUIsQ0FBQztJQUU1QyxJQUNX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S0FBSztnQkFNSyxNQUFNO3NCQURoQixLQUFLO2dCQVNLLE1BQU07c0JBRGhCLEtBQUs7Z0JBU0ssS0FBSztzQkFEZixLQUFLO2dCQVNLLEtBQUs7c0JBRGYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksXG4gIE9uSW5pdFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgSVBvaW50LCBJU2l6ZSwgSVRyYW5zZm9ybU1vZGVsLFxuICBQb2ludEV4dGVuc2lvbnMsIFNpemVFeHRlbnNpb25zLCBUcmFuc2Zvcm1Nb2RlbEV4dGVuc2lvbnNcbn0gZnJvbSAnQGZvYmxleC9jb3JlJztcbmltcG9ydCB7IEZfQkFDS0dST1VORF9QQVRURVJOLCBJRkJhY2tncm91bmRQYXR0ZXJuIH0gZnJvbSAnLi4vZG9tYWluJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjcmVhdGVTVkdFbGVtZW50IH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEJyb3dzZXJTZXJ2aWNlIH0gZnJvbSAnQGZvYmxleC9wbGF0Zm9ybSc7XG5cbmxldCB1bmlxdWVJZDogbnVtYmVyID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImYtcmVjdC1wYXR0ZXJuXCIsXG4gIHRlbXBsYXRlOiBgYCxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5pZF0nOiAnaWQnXG4gIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogRl9CQUNLR1JPVU5EX1BBVFRFUk4sIHVzZUV4aXN0aW5nOiBGUmVjdFBhdHRlcm5Db21wb25lbnQgfVxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBGUmVjdFBhdHRlcm5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgSUZCYWNrZ3JvdW5kUGF0dGVybiB7XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgX3N0YXRlQ2hhbmdlczogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIGdldCBob3N0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZmVyZW5jZS5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIGlkOiBzdHJpbmcgPSBgZi1wYXR0ZXJuLSR7IHVuaXF1ZUlkKysgfWA7XG5cbiAgcHJpdmF0ZSBfdkNvbG9yOiBzdHJpbmcgPSAncmdiYSgwLDAsMCwwLjEpJztcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHZDb2xvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdkNvbG9yID0gdmFsdWU7XG4gICAgdGhpcy5fc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hDb2xvcjogc3RyaW5nID0gJ3JnYmEoMCwwLDAsMC4xKSc7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBoQ29sb3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3ZDb2xvciA9IHZhbHVlO1xuICAgIHRoaXMuX3N0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cblxuICBwcml2YXRlIF92U2l6ZTogbnVtYmVyID0gMjA7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB2U2l6ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fdlNpemUgPSB2YWx1ZTtcbiAgICB0aGlzLl9zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaFNpemU6IG51bWJlciA9IDIwO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaFNpemUodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2hTaXplID0gdmFsdWU7XG4gICAgdGhpcy5fc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3RyYW5zZm9ybTogSVRyYW5zZm9ybU1vZGVsID0gVHJhbnNmb3JtTW9kZWxFeHRlbnNpb25zLmRlZmF1bHQoKTtcblxuICBwcml2YXRlIF9wb3NpdGlvbjogSVBvaW50ID0gUG9pbnRFeHRlbnNpb25zLmluaXRpYWxpemUoKTtcblxuICBwcml2YXRlIF9zaXplOiBJU2l6ZSA9IFNpemVFeHRlbnNpb25zLmluaXRpYWxpemUodGhpcy5faFNpemUsIHRoaXMuX3ZTaXplKTtcblxuICBwcml2YXRlIF9wYXR0ZXJuITogU1ZHUGF0dGVybkVsZW1lbnQ7XG4gIHByaXZhdGUgX3ZMaW5lITogU1ZHTGluZUVsZW1lbnQ7XG4gIHByaXZhdGUgX2hMaW5lITogU1ZHTGluZUVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmZXJlbmNlOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICBwcml2YXRlIGZCcm93c2VyOiBCcm93c2VyU2VydmljZVxuICApIHtcbiAgICB0aGlzLmNyZWF0ZVBhdHRlcm4oKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUGF0dGVybigpOiB2b2lkIHtcbiAgICB0aGlzLl9wYXR0ZXJuID0gY3JlYXRlU1ZHRWxlbWVudCgncGF0dGVybicsIHRoaXMuZkJyb3dzZXIpO1xuICAgIHRoaXMuX3BhdHRlcm4uc2V0QXR0cmlidXRlKCdwYXR0ZXJuVW5pdHMnLCAndXNlclNwYWNlT25Vc2UnKTtcbiAgICB0aGlzLmhvc3RFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3BhdHRlcm4pO1xuXG4gICAgdGhpcy5fdkxpbmUgPSBjcmVhdGVTVkdFbGVtZW50KCdsaW5lJywgdGhpcy5mQnJvd3Nlcik7XG4gICAgdGhpcy5fcGF0dGVybi5hcHBlbmRDaGlsZCh0aGlzLl92TGluZSk7XG5cbiAgICB0aGlzLl9oTGluZSA9IGNyZWF0ZVNWR0VsZW1lbnQoJ2xpbmUnLCB0aGlzLmZCcm93c2VyKTtcbiAgICB0aGlzLl9wYXR0ZXJuLmFwcGVuZENoaWxkKHRoaXMuX2hMaW5lKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24kLmFkZCh0aGlzLnN1YnNjcmliZVRvU3RhdGVDaGFuZ2VzKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpYmVUb1N0YXRlQ2hhbmdlcygpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZUNoYW5nZXMucGlwZShzdGFydFdpdGgobnVsbCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlZHJhdygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjYWxjdWxhdGVQYXR0ZXJuKCk6IHZvaWQge1xuICAgIHRoaXMuX3Bvc2l0aW9uLnggPSB0aGlzLl90cmFuc2Zvcm0ucG9zaXRpb24ueCArIHRoaXMuX3RyYW5zZm9ybS5zY2FsZWRQb3NpdGlvbi54O1xuICAgIHRoaXMuX3Bvc2l0aW9uLnkgPSB0aGlzLl90cmFuc2Zvcm0ucG9zaXRpb24ueSArIHRoaXMuX3RyYW5zZm9ybS5zY2FsZWRQb3NpdGlvbi55O1xuICAgIHRoaXMuX3NpemUgPSBTaXplRXh0ZW5zaW9ucy5pbml0aWFsaXplKHRoaXMuX2hTaXplICogdGhpcy5fdHJhbnNmb3JtLnNjYWxlLCB0aGlzLl92U2l6ZSAqIHRoaXMuX3RyYW5zZm9ybS5zY2FsZSk7XG4gIH1cblxuICBwcml2YXRlIHJlZHJhdygpOiB2b2lkIHtcbiAgICB0aGlzLmNhbGN1bGF0ZVBhdHRlcm4oKTtcbiAgICB0aGlzLnJlZHJhd1BhdHRlcm4oKTtcblxuICAgIHRoaXMucmVkcmF3TGluZSh0aGlzLl92TGluZSwgdGhpcy5fdkNvbG9yLCB0aGlzLl9zaXplLndpZHRoLCAwLCB0aGlzLl9zaXplLndpZHRoLCB0aGlzLl9zaXplLmhlaWdodCk7XG4gICAgdGhpcy5yZWRyYXdMaW5lKHRoaXMuX2hMaW5lLCB0aGlzLl9oQ29sb3IsIDAsIHRoaXMuX3NpemUuaGVpZ2h0LCB0aGlzLl9zaXplLndpZHRoLCB0aGlzLl9zaXplLmhlaWdodCk7XG4gIH1cblxuICBwcml2YXRlIHJlZHJhd1BhdHRlcm4oKTogdm9pZCB7XG4gICAgdGhpcy5fcGF0dGVybi5zZXRBdHRyaWJ1dGUoJ3gnLCBgJHsgdGhpcy5fcG9zaXRpb24ueCB9YCk7XG4gICAgdGhpcy5fcGF0dGVybi5zZXRBdHRyaWJ1dGUoJ3knLCBgJHsgdGhpcy5fcG9zaXRpb24ueSB9YCk7XG4gICAgdGhpcy5fcGF0dGVybi5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgYCR7IHRoaXMuX3NpemUud2lkdGggfWApO1xuICAgIHRoaXMuX3BhdHRlcm4uc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHsgdGhpcy5fc2l6ZS5oZWlnaHQgfWApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWRyYXdMaW5lKGxpbmU6IFNWR0xpbmVFbGVtZW50LCBjb2xvcjogc3RyaW5nLCB4MTogbnVtYmVyLCB5MTogbnVtYmVyLCB4MjogbnVtYmVyLCB5MjogbnVtYmVyKTogdm9pZCB7XG4gICAgbGluZS5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIGAkeyBjb2xvciB9YCk7XG4gICAgbGluZS5zZXRBdHRyaWJ1dGUoJ3gxJywgYCR7IHgxIH1gKTtcbiAgICBsaW5lLnNldEF0dHJpYnV0ZSgneDInLCBgJHsgeDIgfWApO1xuICAgIGxpbmUuc2V0QXR0cmlidXRlKCd5MScsIGAkeyB5MSB9YCk7XG4gICAgbGluZS5zZXRBdHRyaWJ1dGUoJ3kyJywgYCR7IHkyIH1gKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRUcmFuc2Zvcm0odHJhbnNmb3JtOiBJVHJhbnNmb3JtTW9kZWwpOiB2b2lkIHtcbiAgICB0aGlzLl90cmFuc2Zvcm0gPSB0cmFuc2Zvcm07XG4gICAgdGhpcy5fc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24kLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export class FCanvasChangeEvent {
|
|
2
|
-
position;
|
|
3
|
-
scale;
|
|
4
|
-
constructor(position, scale) {
|
|
5
|
-
this.position = position;
|
|
6
|
-
this.scale = scale;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jYW52YXMtY2hhbmdlLmV2ZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNhbnZhcy9kb21haW4vZi1jYW52YXMtY2hhbmdlLmV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxrQkFBa0I7SUFFUDtJQUNBO0lBRnBCLFlBQ29CLFFBQWdCLEVBQ2hCLEtBQWE7UUFEYixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ2hCLFVBQUssR0FBTCxLQUFLLENBQVE7SUFFakMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnQGZvYmxleC9jb3JlJztcblxuZXhwb3J0IGNsYXNzIEZDYW52YXNDaGFuZ2VFdmVudCB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyByZWFkb25seSBwb3NpdGlvbjogSVBvaW50LFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgc2NhbGU6IG51bWJlcixcbiAgICApIHtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { PointExtensions, TransformModelExtensions, mixinChangePosition, mixinChangeZoom, mixinFitToParent, mixinOneToOneCentering } from '@foblex/core';
|
|
2
|
-
import { Directive, InjectionToken } from '@angular/core';
|
|
3
|
-
import { FCanvasChangeEvent } from './domain';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export const F_CANVAS = new InjectionToken('F_CANVAS');
|
|
6
|
-
const MIXIN_BASE = mixinChangePosition(mixinFitToParent(mixinOneToOneCentering(mixinChangeZoom(class {
|
|
7
|
-
transform;
|
|
8
|
-
constructor(transform) {
|
|
9
|
-
this.transform = transform;
|
|
10
|
-
}
|
|
11
|
-
}))));
|
|
12
|
-
export class FCanvasBase extends MIXIN_BASE {
|
|
13
|
-
constructor() {
|
|
14
|
-
super(TransformModelExtensions.default());
|
|
15
|
-
}
|
|
16
|
-
completeDrag() {
|
|
17
|
-
this.fCanvasChange.emit(new FCanvasChangeEvent(this.getCanvasPosition(), this.transform.scale));
|
|
18
|
-
}
|
|
19
|
-
getCanvasPosition() {
|
|
20
|
-
return PointExtensions.sum(this.transform.position, this.transform.scaledPosition);
|
|
21
|
-
}
|
|
22
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FCanvasBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
23
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.4", type: FCanvasBase, usesInheritance: true, ngImport: i0 });
|
|
24
|
-
}
|
|
25
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FCanvasBase, decorators: [{
|
|
26
|
-
type: Directive
|
|
27
|
-
}], ctorParameters: () => [] });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jYW52YXMtYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jYW52YXMvZi1jYW52YXMtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRVksZUFBZSxFQUNoQyx3QkFBd0IsRUFFeEIsbUJBQW1CLEVBQ25CLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsc0JBQXNCLEVBQ3ZCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBRSxTQUFTLEVBQTRCLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBRzlDLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGNBQWMsQ0FBYyxVQUFVLENBQUMsQ0FBQztBQUVwRSxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FDbEMsZ0JBQWdCLENBQ1osc0JBQXNCLENBQ2xCLGVBQWUsQ0FDWDtJQUVhO0lBRFgsWUFDVyxTQUEwQjtRQUExQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtJQUVyQyxDQUFDO0NBQ0YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBR3RCLE1BQU0sT0FBZ0IsV0FDbEIsU0FBUSxVQUFVO0lBZXBCO1FBQ0UsS0FBSyxDQUFDLHdCQUF3QixDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQU1NLFlBQVk7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ25CLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FDekUsQ0FBQztJQUNKLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsT0FBTyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckYsQ0FBQzt1R0FoQ21CLFdBQVc7MkZBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEaEMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElIYXNIb3N0RWxlbWVudCxcbiAgSVRyYW5zZm9ybU1vZGVsLCBQb2ludEV4dGVuc2lvbnMsXG4gIFRyYW5zZm9ybU1vZGVsRXh0ZW5zaW9ucyxcbiAgSUNhbkNoYW5nZVBvc2l0aW9uLCBJQ2FuQ2hhbmdlWm9vbSwgSUNhbkZpdFRvUGFyZW50LCBJQ2FuT25lVG9PbmVDZW50ZXJpbmcsXG4gIG1peGluQ2hhbmdlUG9zaXRpb24sXG4gIG1peGluQ2hhbmdlWm9vbSxcbiAgbWl4aW5GaXRUb1BhcmVudCxcbiAgbWl4aW5PbmVUb09uZUNlbnRlcmluZywgSVBvaW50XG59IGZyb20gJ0Bmb2JsZXgvY29yZSc7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZDYW52YXNDaGFuZ2VFdmVudCB9IGZyb20gJy4vZG9tYWluJztcbmltcG9ydCB7IEZOb2RlQmFzZSB9IGZyb20gJy4uL2Ytbm9kZSc7XG5cbmV4cG9ydCBjb25zdCBGX0NBTlZBUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxGQ2FudmFzQmFzZT4oJ0ZfQ0FOVkFTJyk7XG5cbmNvbnN0IE1JWElOX0JBU0UgPSBtaXhpbkNoYW5nZVBvc2l0aW9uKFxuICAgIG1peGluRml0VG9QYXJlbnQoXG4gICAgICAgIG1peGluT25lVG9PbmVDZW50ZXJpbmcoXG4gICAgICAgICAgICBtaXhpbkNoYW5nZVpvb20oXG4gICAgICAgICAgICAgICAgY2xhc3Mge1xuICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgcHVibGljIHRyYW5zZm9ybTogSVRyYW5zZm9ybU1vZGVsXG4gICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSkpKTtcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRkNhbnZhc0Jhc2VcbiAgICBleHRlbmRzIE1JWElOX0JBU0VcbiAgICBpbXBsZW1lbnRzIElIYXNIb3N0RWxlbWVudCwgSUNhbkNoYW5nZVBvc2l0aW9uLCBJQ2FuRml0VG9QYXJlbnQsIElDYW5PbmVUb09uZUNlbnRlcmluZywgSUNhbkNoYW5nZVpvb20ge1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmQ2FudmFzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8RkNhbnZhc0NoYW5nZUV2ZW50PjtcblxuICBwdWJsaWMgYWJzdHJhY3QgZk5vZGVzOiBGTm9kZUJhc2VbXTtcblxuICBwdWJsaWMgYWJzdHJhY3QgaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuXG4gIHB1YmxpYyBhYnN0cmFjdCBmR3JvdXBzQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBwdWJsaWMgYWJzdHJhY3QgZk5vZGVzQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBwdWJsaWMgYWJzdHJhY3QgZkNvbm5lY3Rpb25zQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoVHJhbnNmb3JtTW9kZWxFeHRlbnNpb25zLmRlZmF1bHQoKSk7XG4gIH1cblxuICBwdWJsaWMgYWJzdHJhY3QgcmVkcmF3KCk6IHZvaWQ7XG5cbiAgcHVibGljIGFic3RyYWN0IHJlZHJhd1dpdGhBbmltYXRpb24oKTogdm9pZDtcblxuICBwdWJsaWMgY29tcGxldGVEcmFnKCk6IHZvaWQge1xuICAgIHRoaXMuZkNhbnZhc0NoYW5nZS5lbWl0KFxuICAgICAgICBuZXcgRkNhbnZhc0NoYW5nZUV2ZW50KHRoaXMuZ2V0Q2FudmFzUG9zaXRpb24oKSwgdGhpcy50cmFuc2Zvcm0uc2NhbGUpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FudmFzUG9zaXRpb24oKTogSVBvaW50IHtcbiAgICByZXR1cm4gUG9pbnRFeHRlbnNpb25zLnN1bSh0aGlzLnRyYW5zZm9ybS5wb3NpdGlvbiwgdGhpcy50cmFuc2Zvcm0uc2NhbGVkUG9zaXRpb24pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewChild, } from "@angular/core";
|
|
2
|
-
import { FCanvasBase, F_CANVAS } from './f-canvas-base';
|
|
3
|
-
import { Point, PointExtensions, RectExtensions, TransformModelExtensions } from '@foblex/core';
|
|
4
|
-
import { EmitTransformChangesRequest, GetNodesRectRequest } from '../domain';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../infrastructure";
|
|
7
|
-
import * as i2 from "../f-storage";
|
|
8
|
-
export class FCanvasComponent extends FCanvasBase {
|
|
9
|
-
elementReference;
|
|
10
|
-
fMediator;
|
|
11
|
-
fComponentsStore;
|
|
12
|
-
fCanvasChange = new EventEmitter();
|
|
13
|
-
set position(value) {
|
|
14
|
-
if (!value) {
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
const position = PointExtensions.sum(this.transform.position, this.transform.scaledPosition);
|
|
18
|
-
if (!PointExtensions.isEqual(position, value)) {
|
|
19
|
-
this.transform.position = value;
|
|
20
|
-
this.transform.scaledPosition = PointExtensions.initialize();
|
|
21
|
-
this.redraw();
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
set scale(value) {
|
|
25
|
-
if (!value) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
this.transform.scale = value;
|
|
29
|
-
this.redraw();
|
|
30
|
-
}
|
|
31
|
-
get fNodes() {
|
|
32
|
-
return this.fComponentsStore.fNodes;
|
|
33
|
-
}
|
|
34
|
-
get hostElement() {
|
|
35
|
-
return this.elementReference.nativeElement;
|
|
36
|
-
}
|
|
37
|
-
fGroupsContainer;
|
|
38
|
-
fNodesContainer;
|
|
39
|
-
fConnectionsContainer;
|
|
40
|
-
constructor(elementReference, fMediator, fComponentsStore) {
|
|
41
|
-
super();
|
|
42
|
-
this.elementReference = elementReference;
|
|
43
|
-
this.fMediator = fMediator;
|
|
44
|
-
this.fComponentsStore = fComponentsStore;
|
|
45
|
-
}
|
|
46
|
-
ngOnInit() {
|
|
47
|
-
this.fComponentsStore.fCanvas = this;
|
|
48
|
-
}
|
|
49
|
-
redraw() {
|
|
50
|
-
this.fComponentsStore.fBackground?.setTransform(this.transform);
|
|
51
|
-
this.hostElement.setAttribute("style", `transform: ${TransformModelExtensions.toString(this.transform)}`);
|
|
52
|
-
this.fMediator.send(new EmitTransformChangesRequest());
|
|
53
|
-
}
|
|
54
|
-
redrawWithAnimation() {
|
|
55
|
-
this.fComponentsStore.fBackground?.setTransform(this.transform);
|
|
56
|
-
this.hostElement.setAttribute("style", `transition: transform 0.15s ease-in-out; transform: ${TransformModelExtensions.toString(this.transform)}`);
|
|
57
|
-
setTimeout(() => {
|
|
58
|
-
this.redraw();
|
|
59
|
-
}, 150);
|
|
60
|
-
}
|
|
61
|
-
fitToScreen(toCenter = PointExtensions.initialize(), animated = true) {
|
|
62
|
-
const fNodesRect = this.fMediator.send(new GetNodesRectRequest()) || RectExtensions.initialize();
|
|
63
|
-
if (fNodesRect.width === 0 || fNodesRect.height === 0) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
this.fitToParent(fNodesRect, RectExtensions.fromElement(this.fComponentsStore.fFlow.hostElement), this.fNodes.map((x) => {
|
|
67
|
-
return Point.fromPoint(x.position);
|
|
68
|
-
}), toCenter);
|
|
69
|
-
animated ? this.redrawWithAnimation() : this.redraw();
|
|
70
|
-
this.completeDrag();
|
|
71
|
-
}
|
|
72
|
-
oneToOne() {
|
|
73
|
-
const fNodesRect = this.fMediator.send(new GetNodesRectRequest()) || RectExtensions.initialize();
|
|
74
|
-
if (fNodesRect.width === 0 || fNodesRect.height === 0) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
this.oneToOneCentering(fNodesRect, RectExtensions.fromElement(this.fComponentsStore.fFlow.hostElement), this.fNodes.map((x) => {
|
|
78
|
-
return Point.fromPoint(x.position);
|
|
79
|
-
}));
|
|
80
|
-
this.redrawWithAnimation();
|
|
81
|
-
this.completeDrag();
|
|
82
|
-
}
|
|
83
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FCanvasComponent, deps: [{ token: i0.ElementRef }, { token: i1.FFlowMediator }, { token: i2.FComponentsStore }], target: i0.ɵɵFactoryTarget.Component });
|
|
84
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.4", type: FCanvasComponent, selector: "f-canvas", inputs: { position: "position", scale: "scale" }, outputs: { fCanvasChange: "fCanvasChange" }, host: { classAttribute: "f-component f-canvas" }, providers: [{ provide: F_CANVAS, useExisting: FCanvasComponent }], viewQueries: [{ propertyName: "fGroupsContainer", first: true, predicate: ["fGroupsContainer"], descendants: true, static: true }, { propertyName: "fNodesContainer", first: true, predicate: ["fNodesContainer"], descendants: true, static: true }, { propertyName: "fConnectionsContainer", first: true, predicate: ["fConnectionsContainer"], descendants: true, static: true }], exportAs: ["fComponent"], usesInheritance: true, ngImport: i0, template: "<ng-container>\n <div #fGroupsContainer>\n <ng-content select=\"[fGroup]\"></ng-content>\n </div>\n <div #fConnectionsContainer>\n <ng-content select=\"f-connection\"></ng-content>\n <ng-content select=\"f-connection-for-create\"></ng-content>\n </div>\n\n <div #fNodesContainer>\n <ng-content select=\"[fNode]\"></ng-content>\n </div>\n</ng-container>\n", styles: [":host{position:absolute;overflow:visible;width:100%;height:100%;left:0;top:0;transform-origin:0 0;pointer-events:none}:host.f-scaled-animate{transition:transform .09s}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
85
|
-
}
|
|
86
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: FCanvasComponent, decorators: [{
|
|
87
|
-
type: Component,
|
|
88
|
-
args: [{ selector: 'f-canvas', exportAs: 'fComponent', host: {
|
|
89
|
-
'class': 'f-component f-canvas',
|
|
90
|
-
}, providers: [{ provide: F_CANVAS, useExisting: FCanvasComponent }], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container>\n <div #fGroupsContainer>\n <ng-content select=\"[fGroup]\"></ng-content>\n </div>\n <div #fConnectionsContainer>\n <ng-content select=\"f-connection\"></ng-content>\n <ng-content select=\"f-connection-for-create\"></ng-content>\n </div>\n\n <div #fNodesContainer>\n <ng-content select=\"[fNode]\"></ng-content>\n </div>\n</ng-container>\n", styles: [":host{position:absolute;overflow:visible;width:100%;height:100%;left:0;top:0;transform-origin:0 0;pointer-events:none}:host.f-scaled-animate{transition:transform .09s}\n"] }]
|
|
91
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FFlowMediator }, { type: i2.FComponentsStore }], propDecorators: { fCanvasChange: [{
|
|
92
|
-
type: Output
|
|
93
|
-
}], position: [{
|
|
94
|
-
type: Input
|
|
95
|
-
}], scale: [{
|
|
96
|
-
type: Input
|
|
97
|
-
}], fGroupsContainer: [{
|
|
98
|
-
type: ViewChild,
|
|
99
|
-
args: ['fGroupsContainer', { static: true }]
|
|
100
|
-
}], fNodesContainer: [{
|
|
101
|
-
type: ViewChild,
|
|
102
|
-
args: ['fNodesContainer', { static: true }]
|
|
103
|
-
}], fConnectionsContainer: [{
|
|
104
|
-
type: ViewChild,
|
|
105
|
-
args: ['fConnectionsContainer', { static: true }]
|
|
106
|
-
}] } });
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jYW52YXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNhbnZhcy9mLWNhbnZhcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY2FudmFzL2YtY2FudmFzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsR0FDdEUsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFdBQVcsRUFBRSxRQUFRLEVBQ3RCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFpQixLQUFLLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUsvRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7Ozs7QUFhN0UsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFdBQVc7SUE2Q3JDO0lBQ0E7SUFDQTtJQTVDTSxhQUFhLEdBQXFDLElBQUksWUFBWSxFQUFzQixDQUFDO0lBRXpHLElBQ1csUUFBUSxDQUFDLEtBQXlCO1FBQzNDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUNoQyxJQUFJ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SSxRQUFRO3NCQURsQixLQUFLO2dCQWNLLEtBQUs7c0JBRGYsS0FBSztnQkFrQlUsZ0JBQWdCO3NCQUQvQixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJL0IsZUFBZTtzQkFEOUIsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTlCLHFCQUFxQjtzQkFEcEMsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgRkNhbnZhc0Jhc2UsIEZfQ0FOVkFTXG59IGZyb20gJy4vZi1jYW52YXMtYmFzZSc7XG5pbXBvcnQgeyBJUG9pbnQsIElSZWN0LCBQb2ludCwgUG9pbnRFeHRlbnNpb25zLCBSZWN0RXh0ZW5zaW9ucywgVHJhbnNmb3JtTW9kZWxFeHRlbnNpb25zIH0gZnJvbSAnQGZvYmxleC9jb3JlJztcbmltcG9ydCB7IEZDYW52YXNDaGFuZ2VFdmVudCB9IGZyb20gJy4vZG9tYWluJztcbmltcG9ydCB7IEZDb21wb25lbnRzU3RvcmUgfSBmcm9tICcuLi9mLXN0b3JhZ2UnO1xuaW1wb3J0IHsgRk5vZGVCYXNlIH0gZnJvbSAnLi4vZi1ub2RlJztcbmltcG9ydCB7IEZGbG93TWVkaWF0b3IgfSBmcm9tICcuLi9pbmZyYXN0cnVjdHVyZSc7XG5pbXBvcnQgeyBFbWl0VHJhbnNmb3JtQ2hhbmdlc1JlcXVlc3QsIEdldE5vZGVzUmVjdFJlcXVlc3QgfSBmcm9tICcuLi9kb21haW4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmLWNhbnZhcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9mLWNhbnZhcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWyAnLi9mLWNhbnZhcy5jb21wb25lbnQuc2NzcycgXSxcbiAgZXhwb3J0QXM6ICdmQ29tcG9uZW50JyxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdmLWNvbXBvbmVudCBmLWNhbnZhcycsXG4gIH0sXG4gIHByb3ZpZGVyczogWyB7IHByb3ZpZGU6IEZfQ0FOVkFTLCB1c2VFeGlzdGluZzogRkNhbnZhc0NvbXBvbmVudCB9IF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGQ2FudmFzQ29tcG9uZW50IGV4dGVuZHMgRkNhbnZhc0Jhc2UgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb3ZlcnJpZGUgZkNhbnZhc0NoYW5nZTogRXZlbnRFbWl0dGVyPEZDYW52YXNDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEZDYW52YXNDaGFuZ2VFdmVudD4oKTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHBvc2l0aW9uKHZhbHVlOiBJUG9pbnQgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHBvc2l0aW9uID0gUG9pbnRFeHRlbnNpb25zLnN1bSh0aGlzLnRyYW5zZm9ybS5wb3NpdGlvbiwgdGhpcy50cmFuc2Zvcm0uc2NhbGVkUG9zaXRpb24pO1xuICAgIGlmICghUG9pbnRFeHRlbnNpb25zLmlzRXF1YWwocG9zaXRpb24sIHZhbHVlKSkge1xuICAgICAgdGhpcy50cmFuc2Zvcm0ucG9zaXRpb24gPSB2YWx1ZTtcbiAgICAgIHRoaXMudHJhbnNmb3JtLnNjYWxlZFBvc2l0aW9uID0gUG9pbnRFeHRlbnNpb25zLmluaXRpYWxpemUoKTtcbiAgICAgIHRoaXMucmVkcmF3KCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzY2FsZSh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRyYW5zZm9ybS5zY2FsZSA9IHZhbHVlO1xuICAgIHRoaXMucmVkcmF3KCk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGZOb2RlcygpOiBGTm9kZUJhc2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuZkNvbXBvbmVudHNTdG9yZS5mTm9kZXM7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGhvc3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBAVmlld0NoaWxkKCdmR3JvdXBzQ29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIG92ZXJyaWRlIGZHcm91cHNDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKCdmTm9kZXNDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgZk5vZGVzQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQFZpZXdDaGlsZCgnZkNvbm5lY3Rpb25zQ29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIG92ZXJyaWRlIGZDb25uZWN0aW9uc0NvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZWxlbWVudFJlZmVyZW5jZTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgcHJpdmF0ZSBmTWVkaWF0b3I6IEZGbG93TWVkaWF0b3IsXG4gICAgcHJpdmF0ZSBmQ29tcG9uZW50c1N0b3JlOiBGQ29tcG9uZW50c1N0b3JlLFxuICApIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZkNvbXBvbmVudHNTdG9yZS5mQ2FudmFzID0gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZWRyYXcoKTogdm9pZCB7XG4gICAgdGhpcy5mQ29tcG9uZW50c1N0b3JlLmZCYWNrZ3JvdW5kPy5zZXRUcmFuc2Zvcm0odGhpcy50cmFuc2Zvcm0pO1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKFwic3R5bGVcIiwgYHRyYW5zZm9ybTogJHsgVHJhbnNmb3JtTW9kZWxFeHRlbnNpb25zLnRvU3RyaW5nKHRoaXMudHJhbnNmb3JtKSB9YCk7XG4gICAgdGhpcy5mTWVkaWF0b3Iuc2VuZChuZXcgRW1pdFRyYW5zZm9ybUNoYW5nZXNSZXF1ZXN0KCkpO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIHJlZHJhd1dpdGhBbmltYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5mQ29tcG9uZW50c1N0b3JlLmZCYWNrZ3JvdW5kPy5zZXRUcmFuc2Zvcm0odGhpcy50cmFuc2Zvcm0pO1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKFwic3R5bGVcIiwgYHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBlYXNlLWluLW91dDsgdHJhbnNmb3JtOiAkeyBUcmFuc2Zvcm1Nb2RlbEV4dGVuc2lvbnMudG9TdHJpbmcodGhpcy50cmFuc2Zvcm0pIH1gKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVkcmF3KCk7XG4gICAgfSwgMTUwKTtcbiAgfVxuXG4gIHB1YmxpYyBmaXRUb1NjcmVlbih0b0NlbnRlcjogSVBvaW50ID0gUG9pbnRFeHRlbnNpb25zLmluaXRpYWxpemUoKSwgYW5pbWF0ZWQ6IGJvb2xlYW4gPSB0cnVlKTogdm9pZCB7XG4gICAgY29uc3QgZk5vZGVzUmVjdCA9IHRoaXMuZk1lZGlhdG9yLnNlbmQ8SVJlY3QgfCBudWxsPihuZXcgR2V0Tm9kZXNSZWN0UmVxdWVzdCgpKSB8fCBSZWN0RXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG4gICAgaWYgKGZOb2Rlc1JlY3Qud2lkdGggPT09IDAgfHwgZk5vZGVzUmVjdC5oZWlnaHQgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZpdFRvUGFyZW50KFxuICAgICAgZk5vZGVzUmVjdCxcbiAgICAgIFJlY3RFeHRlbnNpb25zLmZyb21FbGVtZW50KHRoaXMuZkNvbXBvbmVudHNTdG9yZS5mRmxvdyEuaG9zdEVsZW1lbnQpLFxuICAgICAgdGhpcy5mTm9kZXMubWFwKCh4KSA9PiB7XG4gICAgICAgIHJldHVybiBQb2ludC5mcm9tUG9pbnQoeC5wb3NpdGlvbilcbiAgICAgIH0pLFxuICAgICAgdG9DZW50ZXJcbiAgICApO1xuICAgIGFuaW1hdGVkID8gdGhpcy5yZWRyYXdXaXRoQW5pbWF0aW9uKCkgOiB0aGlzLnJlZHJhdygpO1xuICAgIHRoaXMuY29tcGxldGVEcmFnKCk7XG4gIH1cblxuICBwdWJsaWMgb25lVG9PbmUoKTogdm9pZCB7XG4gICAgY29uc3QgZk5vZGVzUmVjdCA9IHRoaXMuZk1lZGlhdG9yLnNlbmQ8SVJlY3QgfCBudWxsPihuZXcgR2V0Tm9kZXNSZWN0UmVxdWVzdCgpKSB8fCBSZWN0RXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG4gICAgaWYgKGZOb2Rlc1JlY3Qud2lkdGggPT09IDAgfHwgZk5vZGVzUmVjdC5oZWlnaHQgPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vbmVUb09uZUNlbnRlcmluZyhcbiAgICAgIGZOb2Rlc1JlY3QsXG4gICAgICBSZWN0RXh0ZW5zaW9ucy5mcm9tRWxlbWVudCh0aGlzLmZDb21wb25lbnRzU3RvcmUuZkZsb3chLmhvc3RFbGVtZW50KSxcbiAgICAgIHRoaXMuZk5vZGVzLm1hcCgoeCkgPT4ge1xuICAgICAgICByZXR1cm4gUG9pbnQuZnJvbVBvaW50KHgucG9zaXRpb24pXG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5yZWRyYXdXaXRoQW5pbWF0aW9uKCk7XG4gICAgdGhpcy5jb21wbGV0ZURyYWcoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lcj5cbiAgPGRpdiAjZkdyb3Vwc0NvbnRhaW5lcj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZkdyb3VwXVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG4gIDxkaXYgI2ZDb25uZWN0aW9uc0NvbnRhaW5lcj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmLWNvbm5lY3Rpb25cIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZi1jb25uZWN0aW9uLWZvci1jcmVhdGVcIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgI2ZOb2Rlc0NvbnRhaW5lcj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZk5vZGVdXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
export class CalculateConnectionCenterHandler {
|
|
2
|
-
handle(request) {
|
|
3
|
-
const { points } = request;
|
|
4
|
-
let totalDistance = 0;
|
|
5
|
-
let distances = [];
|
|
6
|
-
for (let i = 0; i < points.length - 1; i++) {
|
|
7
|
-
const distance = this.calculateDistance(points[i], points[i + 1]);
|
|
8
|
-
distances.push(distance);
|
|
9
|
-
totalDistance += distance;
|
|
10
|
-
}
|
|
11
|
-
let accumulatedDistance = 0;
|
|
12
|
-
let centerIndex = 0;
|
|
13
|
-
const halfTotalDistance = totalDistance / 2;
|
|
14
|
-
for (let i = 0; i < distances.length; i++) {
|
|
15
|
-
accumulatedDistance += distances[i];
|
|
16
|
-
if (accumulatedDistance >= halfTotalDistance) {
|
|
17
|
-
centerIndex = i;
|
|
18
|
-
break;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
const remainingDistanceToCenter = halfTotalDistance - (accumulatedDistance - distances[centerIndex]);
|
|
22
|
-
return this.findPointAtDistance(points[centerIndex], points[centerIndex + 1], remainingDistanceToCenter);
|
|
23
|
-
}
|
|
24
|
-
calculateDistance(pointA, pointB) {
|
|
25
|
-
return Math.sqrt(Math.pow(pointB.x - pointA.x, 2) + Math.pow(pointB.y - pointA.y, 2));
|
|
26
|
-
}
|
|
27
|
-
findPointAtDistance(startPoint, endPoint, distance) {
|
|
28
|
-
const totalDistance = this.calculateDistance(startPoint, endPoint);
|
|
29
|
-
const ratio = distance / totalDistance;
|
|
30
|
-
const x = (1 - ratio) * startPoint.x + ratio * endPoint.x;
|
|
31
|
-
const y = (1 - ratio) * startPoint.y + ratio * endPoint.y;
|
|
32
|
-
return { x, y };
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLWNvbm5lY3Rpb24tY2VudGVyLmhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi9jb21tb24vZG9tYWluL2NhbGN1bGF0ZS1jb25uZWN0aW9uLWNlbnRlci9jYWxjdWxhdGUtY29ubmVjdGlvbi1jZW50ZXIuaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sZ0NBQWdDO0lBR3BDLE1BQU0sQ0FBQyxPQUF5QztRQUVyRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQzNCLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztRQUN0QixJQUFJLFNBQVMsR0FBYSxFQUFFLENBQUM7UUFFN0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBRSxDQUFDLENBQUUsRUFBRSxNQUFNLENBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBRSxDQUFDLENBQUM7WUFDdEUsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QixhQUFhLElBQUksUUFBUSxDQUFDO1FBQzVCLENBQUM7UUFFRCxJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQztRQUM1QixJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDcEIsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQzVDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDMUMsbUJBQW1CLElBQUksU0FBUyxDQUFFLENBQUMsQ0FBRSxDQUFDO1lBQ3RDLElBQUksbUJBQW1CLElBQUksaUJBQWlCLEVBQUUsQ0FBQztnQkFDN0MsV0FBVyxHQUFHLENBQUMsQ0FBQztnQkFDaEIsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSx5QkFBeUIsR0FBRyxpQkFBaUIsR0FBRyxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBRSxXQUFXLENBQUUsQ0FBQyxDQUFDO1FBRXZHLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBRSxXQUFXLENBQUUsRUFBRSxNQUFNLENBQUUsV0FBVyxHQUFHLENBQUMsQ0FBRSxFQUFFLHlCQUF5QixDQUFDLENBQUM7SUFDL0csQ0FBQztJQUVPLGlCQUFpQixDQUFDLE1BQWMsRUFBRSxNQUFjO1FBQ3RELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxVQUFrQixFQUFFLFFBQWdCLEVBQUUsUUFBZ0I7UUFDaEYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNuRSxNQUFNLEtBQUssR0FBRyxRQUFRLEdBQUcsYUFBYSxDQUFDO1FBQ3ZDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDMUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMxRCxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElIYW5kbGVyLCBJUG9pbnQgfSBmcm9tICdAZm9ibGV4L2NvcmUnO1xuaW1wb3J0IHsgQ2FsY3VsYXRlQ29ubmVjdGlvbkNlbnRlclJlcXVlc3QgfSBmcm9tICcuL2NhbGN1bGF0ZS1jb25uZWN0aW9uLWNlbnRlci1yZXF1ZXN0JztcblxuZXhwb3J0IGNsYXNzIENhbGN1bGF0ZUNvbm5lY3Rpb25DZW50ZXJIYW5kbGVyXG4gICAgaW1wbGVtZW50cyBJSGFuZGxlcjxDYWxjdWxhdGVDb25uZWN0aW9uQ2VudGVyUmVxdWVzdCwgSVBvaW50PiB7XG5cbiAgcHVibGljIGhhbmRsZShyZXF1ZXN0OiBDYWxjdWxhdGVDb25uZWN0aW9uQ2VudGVyUmVxdWVzdCk6IElQb2ludCB7XG5cbiAgICBjb25zdCB7IHBvaW50cyB9ID0gcmVxdWVzdDtcbiAgICBsZXQgdG90YWxEaXN0YW5jZSA9IDA7XG4gICAgbGV0IGRpc3RhbmNlczogbnVtYmVyW10gPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgY29uc3QgZGlzdGFuY2UgPSB0aGlzLmNhbGN1bGF0ZURpc3RhbmNlKHBvaW50c1sgaSBdLCBwb2ludHNbIGkgKyAxIF0pO1xuICAgICAgZGlzdGFuY2VzLnB1c2goZGlzdGFuY2UpO1xuICAgICAgdG90YWxEaXN0YW5jZSArPSBkaXN0YW5jZTtcbiAgICB9XG5cbiAgICBsZXQgYWNjdW11bGF0ZWREaXN0YW5jZSA9IDA7XG4gICAgbGV0IGNlbnRlckluZGV4ID0gMDtcbiAgICBjb25zdCBoYWxmVG90YWxEaXN0YW5jZSA9IHRvdGFsRGlzdGFuY2UgLyAyO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGlzdGFuY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhY2N1bXVsYXRlZERpc3RhbmNlICs9IGRpc3RhbmNlc1sgaSBdO1xuICAgICAgaWYgKGFjY3VtdWxhdGVkRGlzdGFuY2UgPj0gaGFsZlRvdGFsRGlzdGFuY2UpIHtcbiAgICAgICAgY2VudGVySW5kZXggPSBpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZW1haW5pbmdEaXN0YW5jZVRvQ2VudGVyID0gaGFsZlRvdGFsRGlzdGFuY2UgLSAoYWNjdW11bGF0ZWREaXN0YW5jZSAtIGRpc3RhbmNlc1sgY2VudGVySW5kZXggXSk7XG5cbiAgICByZXR1cm4gdGhpcy5maW5kUG9pbnRBdERpc3RhbmNlKHBvaW50c1sgY2VudGVySW5kZXggXSwgcG9pbnRzWyBjZW50ZXJJbmRleCArIDEgXSwgcmVtYWluaW5nRGlzdGFuY2VUb0NlbnRlcik7XG4gIH1cblxuICBwcml2YXRlIGNhbGN1bGF0ZURpc3RhbmNlKHBvaW50QTogSVBvaW50LCBwb2ludEI6IElQb2ludCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyhwb2ludEIueCAtIHBvaW50QS54LCAyKSArIE1hdGgucG93KHBvaW50Qi55IC0gcG9pbnRBLnksIDIpKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFBvaW50QXREaXN0YW5jZShzdGFydFBvaW50OiBJUG9pbnQsIGVuZFBvaW50OiBJUG9pbnQsIGRpc3RhbmNlOiBudW1iZXIpOiBJUG9pbnQge1xuICAgIGNvbnN0IHRvdGFsRGlzdGFuY2UgPSB0aGlzLmNhbGN1bGF0ZURpc3RhbmNlKHN0YXJ0UG9pbnQsIGVuZFBvaW50KTtcbiAgICBjb25zdCByYXRpbyA9IGRpc3RhbmNlIC8gdG90YWxEaXN0YW5jZTtcbiAgICBjb25zdCB4ID0gKDEgLSByYXRpbykgKiBzdGFydFBvaW50LnggKyByYXRpbyAqIGVuZFBvaW50Lng7XG4gICAgY29uc3QgeSA9ICgxIC0gcmF0aW8pICogc3RhcnRQb2ludC55ICsgcmF0aW8gKiBlbmRQb2ludC55O1xuICAgIHJldHVybiB7IHgsIHkgfTtcbiAgfVxufVxuIl19
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { EFConnectableSide } from '../../../f-connectors';
|
|
2
|
-
import { CalculateConnectionCenterHandler, CalculateConnectionCenterRequest } from './calculate-connection-center';
|
|
3
|
-
export class FBezierPathBuilder {
|
|
4
|
-
static getConnectorOffset(distance, offset) {
|
|
5
|
-
if (distance >= offset) {
|
|
6
|
-
return distance;
|
|
7
|
-
}
|
|
8
|
-
return offset * Math.sqrt(offset - distance);
|
|
9
|
-
}
|
|
10
|
-
static getAnglePoint(side, source, target, offset) {
|
|
11
|
-
let result = { x: source.x, y: source.y };
|
|
12
|
-
switch (side) {
|
|
13
|
-
case EFConnectableSide.LEFT:
|
|
14
|
-
result.x -= FBezierPathBuilder.getConnectorOffset(source.x - target.x, offset);
|
|
15
|
-
break;
|
|
16
|
-
case EFConnectableSide.RIGHT:
|
|
17
|
-
result.x += FBezierPathBuilder.getConnectorOffset(target.x - source.x, offset);
|
|
18
|
-
break;
|
|
19
|
-
case EFConnectableSide.TOP:
|
|
20
|
-
result.y -= FBezierPathBuilder.getConnectorOffset(source.y - target.y, offset);
|
|
21
|
-
break;
|
|
22
|
-
case EFConnectableSide.BOTTOM:
|
|
23
|
-
result.y += FBezierPathBuilder.getConnectorOffset(target.y - source.y, offset);
|
|
24
|
-
break;
|
|
25
|
-
}
|
|
26
|
-
return result;
|
|
27
|
-
}
|
|
28
|
-
handle(request) {
|
|
29
|
-
const { source, sourceSide, target, targetSide, offset } = request;
|
|
30
|
-
const sourceAnglePoint = FBezierPathBuilder.getAnglePoint(sourceSide, source, target, offset);
|
|
31
|
-
const targetAnglePoint = FBezierPathBuilder.getAnglePoint(targetSide, target, source, offset);
|
|
32
|
-
const path = `M ${source.x} ${source.y} C ${sourceAnglePoint.x} ${sourceAnglePoint.y}, ${targetAnglePoint.x} ${targetAnglePoint.y}, ${target.x + 0.0002} ${target.y + 0.0002}`;
|
|
33
|
-
const connectionCenter = new CalculateConnectionCenterHandler().handle(new CalculateConnectionCenterRequest([source, sourceAnglePoint, targetAnglePoint, target]));
|
|
34
|
-
return { path, connectionCenter, penultimatePoint: targetAnglePoint };
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1iZXppZXIucGF0aC1idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWNvbm5lY3Rpb24vY29tbW9uL2RvbWFpbi9mLWJlemllci5wYXRoLWJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFPbkgsTUFBTSxPQUFPLGtCQUFrQjtJQUVyQixNQUFNLENBQUMsa0JBQWtCLENBQUMsUUFBZ0IsRUFBRSxNQUFjO1FBQ2hFLElBQUksUUFBUSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7UUFDRCxPQUFPLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUF1QixFQUFFLE1BQWMsRUFBRSxNQUFjLEVBQUUsTUFBYztRQUVsRyxJQUFJLE1BQU0sR0FBVyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFbEQsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssaUJBQWlCLENBQUMsSUFBSTtnQkFDekIsTUFBTSxDQUFDLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQy9FLE1BQU07WUFDUixLQUFLLGlCQUFpQixDQUFDLEtBQUs7Z0JBQzFCLE1BQU0sQ0FBQyxDQUFDLElBQUksa0JBQWtCLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUMvRSxNQUFNO1lBQ1IsS0FBSyxpQkFBaUIsQ0FBQyxHQUFHO2dCQUN4QixNQUFNLENBQUMsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDL0UsTUFBTTtZQUNSLEtBQUssaUJBQWlCLENBQUMsTUFBTTtnQkFDM0IsTUFBTSxDQUFDLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQy9FLE1BQU07UUFDVixDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFtQztRQUMvQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUVuRSxNQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUU5RixNQUFNLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUU5RixNQUFNLElBQUksR0FBRyxLQUFNLE1BQU0sQ0FBQyxDQUFFLElBQUssTUFBTSxDQUFDLENBQUUsTUFBTyxnQkFBZ0IsQ0FBQyxDQUFFLElBQUssZ0JBQWdCLENBQUMsQ0FBRSxLQUFNLGdCQUFnQixDQUFDLENBQUUsSUFBSyxnQkFBZ0IsQ0FBQyxDQUFFLEtBQU0sTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFPLElBQUssTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFPLEVBQUUsQ0FBQztRQUUvTCxNQUFNLGdCQUFnQixHQUFHLElBQUksZ0NBQWdDLEVBQUUsQ0FBQyxNQUFNLENBQ3BFLElBQUksZ0NBQWdDLENBQUMsQ0FBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxDQUFFLENBQUMsQ0FDN0YsQ0FBQztRQUVGLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztJQUN4RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdAZm9ibGV4L2NvcmUnO1xuaW1wb3J0IHsgRUZDb25uZWN0YWJsZVNpZGUgfSBmcm9tICcuLi8uLi8uLi9mLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgQ2FsY3VsYXRlQ29ubmVjdGlvbkNlbnRlckhhbmRsZXIsIENhbGN1bGF0ZUNvbm5lY3Rpb25DZW50ZXJSZXF1ZXN0IH0gZnJvbSAnLi9jYWxjdWxhdGUtY29ubmVjdGlvbi1jZW50ZXInO1xuaW1wb3J0IHtcbiAgSUZDb25uZWN0aW9uQnVpbGRlcixcbiAgSUZDb25uZWN0aW9uQnVpbGRlclJlcXVlc3QsXG4gIElGQ29ubmVjdGlvbkJ1aWxkZXJSZXNwb25zZVxufSBmcm9tICcuLi8uLi9mLWNvbm5lY3Rpb24tYnVpbGRlcic7XG5cbmV4cG9ydCBjbGFzcyBGQmV6aWVyUGF0aEJ1aWxkZXIgaW1wbGVtZW50cyBJRkNvbm5lY3Rpb25CdWlsZGVyIHtcblxuICBwcml2YXRlIHN0YXRpYyBnZXRDb25uZWN0b3JPZmZzZXQoZGlzdGFuY2U6IG51bWJlciwgb2Zmc2V0OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChkaXN0YW5jZSA+PSBvZmZzZXQpIHtcbiAgICAgIHJldHVybiBkaXN0YW5jZTtcbiAgICB9XG4gICAgcmV0dXJuIG9mZnNldCAqIE1hdGguc3FydChvZmZzZXQgLSBkaXN0YW5jZSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXRBbmdsZVBvaW50KHNpZGU6IEVGQ29ubmVjdGFibGVTaWRlLCBzb3VyY2U6IElQb2ludCwgdGFyZ2V0OiBJUG9pbnQsIG9mZnNldDogbnVtYmVyKTogSVBvaW50IHtcblxuICAgIGxldCByZXN1bHQ6IElQb2ludCA9IHsgeDogc291cmNlLngsIHk6IHNvdXJjZS55IH07XG5cbiAgICBzd2l0Y2ggKHNpZGUpIHtcbiAgICAgIGNhc2UgRUZDb25uZWN0YWJsZVNpZGUuTEVGVDpcbiAgICAgICAgcmVzdWx0LnggLT0gRkJlemllclBhdGhCdWlsZGVyLmdldENvbm5lY3Rvck9mZnNldChzb3VyY2UueCAtIHRhcmdldC54LCBvZmZzZXQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRUZDb25uZWN0YWJsZVNpZGUuUklHSFQ6XG4gICAgICAgIHJlc3VsdC54ICs9IEZCZXppZXJQYXRoQnVpbGRlci5nZXRDb25uZWN0b3JPZmZzZXQodGFyZ2V0LnggLSBzb3VyY2UueCwgb2Zmc2V0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEVGQ29ubmVjdGFibGVTaWRlLlRPUDpcbiAgICAgICAgcmVzdWx0LnkgLT0gRkJlemllclBhdGhCdWlsZGVyLmdldENvbm5lY3Rvck9mZnNldChzb3VyY2UueSAtIHRhcmdldC55LCBvZmZzZXQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRUZDb25uZWN0YWJsZVNpZGUuQk9UVE9NOlxuICAgICAgICByZXN1bHQueSArPSBGQmV6aWVyUGF0aEJ1aWxkZXIuZ2V0Q29ubmVjdG9yT2Zmc2V0KHRhcmdldC55IC0gc291cmNlLnksIG9mZnNldCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlKHJlcXVlc3Q6IElGQ29ubmVjdGlvbkJ1aWxkZXJSZXF1ZXN0KTogSUZDb25uZWN0aW9uQnVpbGRlclJlc3BvbnNlIHtcbiAgICBjb25zdCB7IHNvdXJjZSwgc291cmNlU2lkZSwgdGFyZ2V0LCB0YXJnZXRTaWRlLCBvZmZzZXQgfSA9IHJlcXVlc3Q7XG5cbiAgICBjb25zdCBzb3VyY2VBbmdsZVBvaW50ID0gRkJlemllclBhdGhCdWlsZGVyLmdldEFuZ2xlUG9pbnQoc291cmNlU2lkZSwgc291cmNlLCB0YXJnZXQsIG9mZnNldCk7XG5cbiAgICBjb25zdCB0YXJnZXRBbmdsZVBvaW50ID0gRkJlemllclBhdGhCdWlsZGVyLmdldEFuZ2xlUG9pbnQodGFyZ2V0U2lkZSwgdGFyZ2V0LCBzb3VyY2UsIG9mZnNldCk7XG5cbiAgICBjb25zdCBwYXRoID0gYE0gJHsgc291cmNlLnggfSAkeyBzb3VyY2UueSB9IEMgJHsgc291cmNlQW5nbGVQb2ludC54IH0gJHsgc291cmNlQW5nbGVQb2ludC55IH0sICR7IHRhcmdldEFuZ2xlUG9pbnQueCB9ICR7IHRhcmdldEFuZ2xlUG9pbnQueSB9LCAkeyB0YXJnZXQueCArIDAuMDAwMiB9ICR7IHRhcmdldC55ICsgMC4wMDAyIH1gO1xuXG4gICAgY29uc3QgY29ubmVjdGlvbkNlbnRlciA9IG5ldyBDYWxjdWxhdGVDb25uZWN0aW9uQ2VudGVySGFuZGxlcigpLmhhbmRsZShcbiAgICAgIG5ldyBDYWxjdWxhdGVDb25uZWN0aW9uQ2VudGVyUmVxdWVzdChbIHNvdXJjZSwgc291cmNlQW5nbGVQb2ludCwgdGFyZ2V0QW5nbGVQb2ludCwgdGFyZ2V0IF0pXG4gICAgKTtcblxuICAgIHJldHVybiB7IHBhdGgsIGNvbm5lY3Rpb25DZW50ZXIsIHBlbnVsdGltYXRlUG9pbnQ6IHRhcmdldEFuZ2xlUG9pbnQgfTtcbiAgfVxufVxuIl19
|