@foblex/flow 18.2.1 → 18.4.0
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/AI.md +69 -0
- package/README.md +40 -3
- package/STYLING.md +35 -0
- package/domain/f-connection/create-connection-markers/create-connection-markers.d.ts +3 -2
- package/domain/f-connection/index.d.ts +1 -0
- package/domain/f-connection/providers.d.ts +2 -1
- package/domain/f-connection/redraw-connections/redraw-connections.d.ts +3 -0
- package/domain/f-connection/resolve-connection-endpoint-rotation-context/index.d.ts +2 -0
- package/domain/f-connection/resolve-connection-endpoint-rotation-context/resolve-connection-endpoint-rotation-context-request.d.ts +8 -0
- package/domain/f-connection/resolve-connection-endpoint-rotation-context/resolve-connection-endpoint-rotation-context.d.ts +10 -0
- package/domain/f-draggable/on-pointer-move/on-pointer-move-request.d.ts +1 -1
- package/domain/f-draggable/on-pointer-move/on-pointer-move.d.ts +1 -0
- package/domain/get-normalized-connector-rect/get-normalized-connector-rect.d.ts +8 -0
- package/domain/providers.d.ts +1 -1
- package/esm2022/domain/f-connection/create-connection-markers/create-connection-markers.mjs +33 -6
- package/esm2022/domain/f-connection/index.mjs +2 -1
- package/esm2022/domain/f-connection/providers.mjs +3 -1
- package/esm2022/domain/f-connection/redraw-connections/redraw-connections.mjs +51 -4
- package/esm2022/domain/f-connection/resolve-connection-endpoint-rotation-context/index.mjs +3 -0
- package/esm2022/domain/f-connection/resolve-connection-endpoint-rotation-context/resolve-connection-endpoint-rotation-context-request.mjs +8 -0
- package/esm2022/domain/f-connection/resolve-connection-endpoint-rotation-context/resolve-connection-endpoint-rotation-context.mjs +35 -0
- package/esm2022/domain/f-draggable/on-pointer-move/on-pointer-move-request.mjs +1 -1
- package/esm2022/domain/f-draggable/on-pointer-move/on-pointer-move.mjs +6 -2
- package/esm2022/domain/get-normalized-connector-rect/get-normalized-connector-rect.mjs +33 -3
- package/esm2022/f-auto-pan/f-auto-pan-base.mjs +11 -0
- package/esm2022/f-auto-pan/f-auto-pan.mjs +38 -0
- package/esm2022/f-auto-pan/index.mjs +4 -0
- package/esm2022/f-auto-pan/providers.mjs +3 -0
- package/esm2022/f-canvas/f-canvas.component.mjs +2 -2
- package/esm2022/f-connection/f-connection/f-connection.component.mjs +6 -6
- package/esm2022/f-connection/f-connection-for-create/f-connection-for-create.component.mjs +6 -7
- package/esm2022/f-connection/f-snap-connection/f-snap-connection.component.mjs +6 -7
- package/esm2022/f-connection/providers.mjs +8 -4
- package/esm2022/f-connection-v2/components/connection-content/f-connection-content.mjs +18 -4
- package/esm2022/f-connection-v2/components/connection-gradient/components/index.mjs +2 -0
- package/esm2022/f-connection-v2/components/connection-gradient/components/render/f-connection-gradient-renderer.mjs +17 -0
- package/esm2022/f-connection-v2/components/connection-gradient/components/render/index.mjs +3 -0
- package/esm2022/f-connection-v2/components/connection-gradient/components/render/models/f-connection-gradient-renderer-base.mjs +81 -0
- package/esm2022/f-connection-v2/components/connection-gradient/components/render/models/index.mjs +2 -0
- package/esm2022/f-connection-v2/components/connection-gradient/f-connection-gradient.mjs +14 -46
- package/esm2022/f-connection-v2/components/connection-gradient/index.mjs +2 -1
- package/esm2022/f-connection-v2/components/connection-gradient/models/f-connection-gradient-base.mjs +2 -3
- package/esm2022/f-connection-v2/components/connection-path/f-connection-path.mjs +11 -7
- package/esm2022/f-connection-v2/components/f-connection-base.mjs +13 -9
- package/esm2022/f-connection-v2/models/f-connection-components-parent.mjs +1 -1
- package/esm2022/f-connection-v2/utils/connection-behaviour/connection-behaviour-builder-request.mjs +6 -2
- package/esm2022/f-connection-v2/utils/connection-behaviour/connection-behaviour-builder.mjs +3 -1
- package/esm2022/f-connection-v2/utils/connection-behaviour/models/i-calculate-behavior-request.mjs +1 -1
- package/esm2022/f-connection-v2/utils/connection-behaviour/utils/floating-behavior.mjs +8 -8
- package/esm2022/f-connection-v2/utils/connection-behaviour/utils/get-rotated-rounded-rect-intersection.mjs +35 -0
- package/esm2022/f-connection-v2/utils/create-gradient-dom-identifier.mjs +3 -3
- package/esm2022/f-connection-v2/utils/create-gradient-dom-url.mjs +3 -3
- package/esm2022/f-connection-worker/features/calculate-connection-worker-payload-item/calculate-connection-worker-payload-item.mjs +13 -1
- package/esm2022/f-connection-worker/features/ensure-connection-worker/ensure-connection-worker.mjs +11 -4
- package/esm2022/f-connection-worker/features/is-connection-worker-enabled/is-connection-worker-enabled.mjs +3 -2
- package/esm2022/f-connection-worker/model/f-connection-worker.mjs +5 -1
- package/esm2022/f-connection-worker/model/i-f-connection-worker-rect.mjs +1 -1
- package/esm2022/f-connection-worker/model/i-f-connection-worker-request-item.mjs +1 -1
- package/esm2022/f-connection-worker/worker/connection-worker-runtime.mjs +247 -0
- package/esm2022/f-draggable/auto-pan/auto-pan.utils.mjs +58 -0
- package/esm2022/f-draggable/auto-pan/index.mjs +7 -0
- package/esm2022/f-draggable/auto-pan/providers.mjs +5 -0
- package/esm2022/f-draggable/auto-pan/run-auto-pan-frame/index.mjs +3 -0
- package/esm2022/f-draggable/auto-pan/run-auto-pan-frame/run-auto-pan-frame-request.mjs +4 -0
- package/esm2022/f-draggable/auto-pan/run-auto-pan-frame/run-auto-pan-frame.mjs +97 -0
- package/esm2022/f-draggable/auto-pan/stop-auto-pan/index.mjs +3 -0
- package/esm2022/f-draggable/auto-pan/stop-auto-pan/stop-auto-pan-request.mjs +4 -0
- package/esm2022/f-draggable/auto-pan/stop-auto-pan/stop-auto-pan.mjs +32 -0
- package/esm2022/f-draggable/auto-pan/stored-pointer-event.mjs +25 -0
- package/esm2022/f-draggable/auto-pan/sync-auto-pan/index.mjs +3 -0
- package/esm2022/f-draggable/auto-pan/sync-auto-pan/sync-auto-pan-request.mjs +4 -0
- package/esm2022/f-draggable/auto-pan/sync-auto-pan/sync-auto-pan.mjs +75 -0
- package/esm2022/f-draggable/connection/create-connection/create-connection-handler/create-connection-handler.mjs +7 -4
- package/esm2022/f-draggable/connection/reassign-connection/reassign-connection-handler/reassign-connection-source-handler.mjs +7 -4
- package/esm2022/f-draggable/connection/reassign-connection/reassign-connection-handler/reassign-connection-target-handler.mjs +7 -4
- package/esm2022/f-draggable/drag-canvas/drag-canvas-handler/drag-canvas-handler.mjs +6 -3
- package/esm2022/f-draggable/drag-node/drag-node-dependent-connection-handlers/drag-node-connection-handler-base.mjs +6 -3
- package/esm2022/f-draggable/f-draggable-data-context.mjs +14 -1
- package/esm2022/f-draggable/f-draggable.directive.mjs +4 -1
- package/esm2022/f-draggable/index.mjs +2 -1
- package/esm2022/f-draggable/providers.mjs +3 -1
- package/esm2022/f-draggable/resize-node/resize-node-handler/resize-node-dependent-connection-handlers/resize-node-connection-handler-base.mjs +6 -3
- package/esm2022/f-flow/f-flow.component.mjs +2 -2
- package/esm2022/f-flow.module.mjs +31 -26
- package/esm2022/f-storage/f-components-store.mjs +3 -1
- package/esm2022/f-zoom/f-zoom.directive.mjs +9 -11
- package/esm2022/f-zoom/wheel-zoom.utils.mjs +34 -0
- package/esm2022/public-api.mjs +2 -1
- package/f-auto-pan/f-auto-pan-base.d.ts +11 -0
- package/f-auto-pan/f-auto-pan.d.ts +13 -0
- package/f-auto-pan/index.d.ts +3 -0
- package/f-auto-pan/providers.d.ts +2 -0
- package/f-connection/f-connection/f-connection.component.d.ts +1 -1
- package/f-connection/f-connection-for-create/f-connection-for-create.component.d.ts +1 -1
- package/f-connection/f-snap-connection/f-snap-connection.component.d.ts +1 -1
- package/f-connection/providers.d.ts +3 -3
- package/f-connection-v2/components/connection-gradient/components/index.d.ts +1 -0
- package/f-connection-v2/components/connection-gradient/components/render/f-connection-gradient-renderer.d.ts +8 -0
- package/f-connection-v2/components/connection-gradient/components/render/index.d.ts +2 -0
- package/f-connection-v2/components/connection-gradient/components/render/models/f-connection-gradient-renderer-base.d.ts +25 -0
- package/f-connection-v2/components/connection-gradient/components/render/models/index.d.ts +1 -0
- package/f-connection-v2/components/connection-gradient/f-connection-gradient.d.ts +3 -11
- package/f-connection-v2/components/connection-gradient/index.d.ts +1 -0
- package/f-connection-v2/components/connection-gradient/models/f-connection-gradient-base.d.ts +3 -5
- package/f-connection-v2/components/connection-path/f-connection-path.d.ts +3 -2
- package/f-connection-v2/components/f-connection-base.d.ts +7 -4
- package/f-connection-v2/models/f-connection-components-parent.d.ts +0 -2
- package/f-connection-v2/utils/connection-behaviour/connection-behaviour-builder-request.d.ts +4 -1
- package/f-connection-v2/utils/connection-behaviour/models/i-calculate-behavior-request.d.ts +7 -1
- package/f-connection-v2/utils/connection-behaviour/utils/floating-behavior.d.ts +1 -1
- package/f-connection-v2/utils/connection-behaviour/utils/get-rotated-rounded-rect-intersection.d.ts +3 -0
- package/f-connection-v2/utils/create-gradient-dom-identifier.d.ts +1 -1
- package/f-connection-v2/utils/create-gradient-dom-url.d.ts +1 -1
- package/f-connection-worker/features/calculate-connection-worker-payload-item/calculate-connection-worker-payload-item.d.ts +1 -0
- package/f-connection-worker/model/f-connection-worker.d.ts +1 -0
- package/f-connection-worker/model/i-f-connection-worker-rect.d.ts +4 -0
- package/f-connection-worker/model/i-f-connection-worker-request-item.d.ts +2 -0
- package/f-connection-worker/worker/connection-worker-runtime.d.ts +11 -0
- package/f-draggable/auto-pan/auto-pan.utils.d.ts +6 -0
- package/f-draggable/auto-pan/index.d.ts +6 -0
- package/f-draggable/auto-pan/providers.d.ts +4 -0
- package/f-draggable/auto-pan/run-auto-pan-frame/index.d.ts +2 -0
- package/f-draggable/auto-pan/run-auto-pan-frame/run-auto-pan-frame-request.d.ts +3 -0
- package/f-draggable/auto-pan/run-auto-pan-frame/run-auto-pan-frame.d.ts +21 -0
- package/f-draggable/auto-pan/stop-auto-pan/index.d.ts +2 -0
- package/f-draggable/auto-pan/stop-auto-pan/stop-auto-pan-request.d.ts +3 -0
- package/f-draggable/auto-pan/stop-auto-pan/stop-auto-pan.d.ts +10 -0
- package/f-draggable/auto-pan/stored-pointer-event.d.ts +12 -0
- package/f-draggable/auto-pan/sync-auto-pan/index.d.ts +2 -0
- package/f-draggable/auto-pan/sync-auto-pan/sync-auto-pan-request.d.ts +3 -0
- package/f-draggable/auto-pan/sync-auto-pan/sync-auto-pan.d.ts +19 -0
- package/f-draggable/connection/create-connection/create-connection-handler/create-connection-handler.d.ts +1 -0
- package/f-draggable/connection/reassign-connection/reassign-connection-handler/reassign-connection-source-handler.d.ts +1 -0
- package/f-draggable/connection/reassign-connection/reassign-connection-handler/reassign-connection-target-handler.d.ts +1 -0
- package/f-draggable/drag-node/drag-node-dependent-connection-handlers/drag-node-connection-handler-base.d.ts +1 -0
- package/f-draggable/f-draggable-data-context.d.ts +7 -1
- package/f-draggable/index.d.ts +1 -0
- package/f-draggable/providers.d.ts +1 -1
- package/f-draggable/resize-node/resize-node-handler/resize-node-dependent-connection-handlers/resize-node-connection-handler-base.d.ts +1 -0
- package/f-flow.module.d.ts +29 -27
- package/f-storage/f-components-store.d.ts +2 -0
- package/f-zoom/f-zoom.directive.d.ts +0 -1
- package/f-zoom/wheel-zoom.utils.d.ts +3 -0
- package/fesm2022/foblex-flow.mjs +8048 -7134
- package/fesm2022/foblex-flow.mjs.map +1 -1
- package/package.json +7 -7
- package/public-api.d.ts +1 -0
- package/schematics/ng-add/index.js +63 -2
- package/schematics/ng-add/index.js.map +1 -1
- package/schematics/shared/foblex-dependencies.js +1 -1
- package/styles/_index.scss +31 -0
- package/styles/default.scss +4 -0
- package/styles/domains/_connection.scss +175 -0
- package/styles/domains/_connector.scss +150 -0
- package/styles/domains/_external-item.scss +44 -0
- package/styles/domains/_flow-canvas.scss +41 -0
- package/styles/domains/_node-group.scss +230 -0
- package/styles/domains/_plugins.scss +100 -0
- package/styles/tokens/_ff-aliases.scss +117 -0
- package/styles/tokens/_primitive.scss +86 -0
- package/styles/tokens/_semantic.scss +131 -0
package/AI.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# AI Guide for `@foblex/flow`
|
|
2
|
+
|
|
3
|
+
Use this file as a strict control layer for code generation. Prefer verified package API and examples over assumptions.
|
|
4
|
+
|
|
5
|
+
## What This Library Is
|
|
6
|
+
|
|
7
|
+
`@foblex/flow` is an Angular-native library for building node-based editors, workflow builders, and interactive graph UIs.
|
|
8
|
+
It provides rendering, connectors, interactions, selection, zoom, and connection drawing. Your app still owns the graph data.
|
|
9
|
+
|
|
10
|
+
## Core Mental Model
|
|
11
|
+
|
|
12
|
+
- The library does **not** own your graph state.
|
|
13
|
+
- Your app owns nodes, groups, connections, ids, validation, and persistence.
|
|
14
|
+
- Angular templates render the current state.
|
|
15
|
+
- User actions emit events from `fDraggable` or model outputs.
|
|
16
|
+
- Your app updates state.
|
|
17
|
+
- Angular rerenders.
|
|
18
|
+
|
|
19
|
+
## Verified Building Blocks
|
|
20
|
+
|
|
21
|
+
- `<f-flow>`: root flow host.
|
|
22
|
+
- `<f-canvas>`: canvas/viewport container.
|
|
23
|
+
- `[fNode]` and `[fGroup]`: place nodes and groups in the template.
|
|
24
|
+
- `[fNodeOutput]` with `fOutputId`: output connector.
|
|
25
|
+
- `[fNodeInput]` with `fInputId`: input connector.
|
|
26
|
+
- `[fNodeOutlet]`: outlet-style connector surface for advanced connection creation patterns.
|
|
27
|
+
- `<f-connection>`: render an existing connection between connectors.
|
|
28
|
+
- `<f-connection-for-create>`: optional preview connection used during drag-to-connect UX.
|
|
29
|
+
- `fDraggable` on `<f-flow>`: enables pointer interactions and emits interaction events.
|
|
30
|
+
|
|
31
|
+
## Hard Rules
|
|
32
|
+
|
|
33
|
+
- Never invent Inputs, Outputs, methods, directives, or selectors.
|
|
34
|
+
- Do **not** assume React Flow style APIs such as `[nodes]`, `[edges]`, `setNodes()`, `addEdge()`, `useNodesState()`, or similar patterns.
|
|
35
|
+
- Do **not** assume a built-in graph store. The app owns state.
|
|
36
|
+
- Connections are connector-to-connector, not generic node-to-node edges.
|
|
37
|
+
- Template connections use `fOutputId -> fInputId`.
|
|
38
|
+
- Do **not** interpret `[fNodes]` or `[fConnections]` as graph-state inputs. In this package they are content-projection markers used with `ngProjectAs` in some examples.
|
|
39
|
+
- Examples may include app-specific state, layout logic, persistence, undo/redo, toolbars, or validation. Those are example implementations, not built-in package features.
|
|
40
|
+
- Some exports are low-level, compatibility-oriented, or testing-oriented. Do not treat every export from `@foblex/flow` as the recommended app-facing API.
|
|
41
|
+
- If a symbol, selector, event, or behavior is not confirmed in the installed package, say: `not found in @foblex/flow`.
|
|
42
|
+
|
|
43
|
+
## Correct Usage Pattern
|
|
44
|
+
|
|
45
|
+
- Render nodes and groups from your Angular state using normal Angular templates.
|
|
46
|
+
- Put connectors on the node element itself or on child elements with `fNodeOutput` / `fNodeInput`.
|
|
47
|
+
- Render persisted connections explicitly with `<f-connection>`.
|
|
48
|
+
- Add `fDraggable` to `<f-flow>` when you want drag, selection, connect, reassign, or drop interactions.
|
|
49
|
+
- Handle events such as `fCreateConnection`, `fReassignConnection`, `fMoveNodes`, `fSelectionChange`, `fCreateNode`, `fDropToGroup`, and `fConnectionWaypointsChanged`.
|
|
50
|
+
- Update your own state in those handlers, then let Angular rerender.
|
|
51
|
+
- Use node/group position bindings and change outputs to keep positions in app state when needed.
|
|
52
|
+
|
|
53
|
+
## Naming Distinction
|
|
54
|
+
|
|
55
|
+
- In templates, connector ids are `fOutputId` and `fInputId`.
|
|
56
|
+
- In `FCreateConnectionEvent`, prefer `sourceId`, `targetId`, and `dropPosition`.
|
|
57
|
+
- `FCreateConnectionEvent` still exposes legacy aliases `fOutputId`, `fInputId`, and `fDropPosition`.
|
|
58
|
+
- In `FReassignConnectionEvent`, prefer `connectionId`, `endpoint`, `previousSourceId`, `nextSourceId`, `previousTargetId`, `nextTargetId`, and `dropPosition`.
|
|
59
|
+
- `FReassignConnectionEvent` still exposes legacy aliases such as `oldSourceId`, `newSourceId`, `oldTargetId`, `newTargetId`, and `dropPoint`.
|
|
60
|
+
- Other current event classes also prefer non-`f*` names when both versions exist, for example `nodeIds` over `fNodeIds` and `nodes` over `fNodes`.
|
|
61
|
+
- Examples may still show compatibility names in handlers. Prefer the current non-deprecated event property names when generating new code.
|
|
62
|
+
|
|
63
|
+
## Styling
|
|
64
|
+
|
|
65
|
+
See [STYLING.md](./STYLING.md).
|
|
66
|
+
|
|
67
|
+
## Fallback Rule
|
|
68
|
+
|
|
69
|
+
If something cannot be verified from the installed package, answer with: `not found in @foblex/flow`.
|
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ Foblex Flow gives Angular teams a simple way to start building graph-based produ
|
|
|
23
23
|
|
|
24
24
|
Use it to create workflow builders, AI low-code tools, call-flow editors, UML diagrams, internal back-office tools, and other node-based interfaces while keeping your own state, validation, persistence, and domain logic.
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
Current `18.x` releases target Angular `17.3+`. If your app is on Angular 12-17.2, check the [Angular Version Compatibility](https://flow.foblex.com/docs/angular-version-compatibility) guide first and pin the matching Foblex Flow line before installing.
|
|
27
27
|
|
|
28
28
|
## Why Foblex Flow
|
|
29
29
|
|
|
@@ -53,16 +53,52 @@ It works with Angular 15+, SSR, standalone components, and zoneless-friendly app
|
|
|
53
53
|
|
|
54
54
|
## Install
|
|
55
55
|
|
|
56
|
+
These install commands are for the current `18.x` line. For Angular 12-17.2 apps, use the [Angular Version Compatibility](https://flow.foblex.com/docs/angular-version-compatibility) guide first so you do not accidentally install a newer incompatible line.
|
|
57
|
+
|
|
56
58
|
```bash
|
|
57
59
|
ng add @foblex/flow
|
|
58
60
|
```
|
|
59
61
|
|
|
60
|
-
|
|
62
|
+
For Nx workspaces:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
nx g @foblex/flow:add
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
`ng add` installs the required companion packages automatically. If you prefer manual installation, install them explicitly:
|
|
61
69
|
|
|
62
70
|
```bash
|
|
63
|
-
npm install @foblex/flow
|
|
71
|
+
npm install @foblex/flow @foblex/platform@^1.0.4 @foblex/mediator@^1.1.3 @foblex/2d@^1.2.2 @foblex/utils@^1.1.1
|
|
64
72
|
```
|
|
65
73
|
|
|
74
|
+
`ng add` also wires the shipped default theme into application styles by adding `node_modules/@foblex/flow/styles/default.scss` when the entry is missing.
|
|
75
|
+
|
|
76
|
+
## Default Theme
|
|
77
|
+
|
|
78
|
+
Use the default theme when you want styled nodes, connectors, connections, minimap, selection area, and helper plugins immediately.
|
|
79
|
+
|
|
80
|
+
```json
|
|
81
|
+
"styles": [
|
|
82
|
+
"src/styles.scss",
|
|
83
|
+
"node_modules/@foblex/flow/styles/default.scss"
|
|
84
|
+
]
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
If you prefer selective SCSS mixins instead of one full entrypoint:
|
|
88
|
+
|
|
89
|
+
```scss
|
|
90
|
+
@use '@foblex/flow/styles' as flow-theme;
|
|
91
|
+
|
|
92
|
+
@include flow-theme.theme-tokens();
|
|
93
|
+
@include flow-theme.flow-canvas();
|
|
94
|
+
@include flow-theme.node-group();
|
|
95
|
+
@include flow-theme.connector();
|
|
96
|
+
@include flow-theme.connection-all();
|
|
97
|
+
@include flow-theme.plugins();
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Full guide: [Default Theme and Styling](https://flow.foblex.com/docs/default-theme-and-styling)
|
|
101
|
+
|
|
66
102
|
## Minimal Example
|
|
67
103
|
|
|
68
104
|
```html
|
|
@@ -104,6 +140,7 @@ npm install @foblex/flow
|
|
|
104
140
|
## Resources
|
|
105
141
|
|
|
106
142
|
- [Get Started](https://flow.foblex.com/docs/get-started)
|
|
143
|
+
- [Angular Version Compatibility](https://flow.foblex.com/docs/angular-version-compatibility)
|
|
107
144
|
- [Documentation](https://flow.foblex.com/docs/intro)
|
|
108
145
|
- [Examples](https://flow.foblex.com/examples/overview)
|
|
109
146
|
- [Articles](https://flow.foblex.com/blog/overview)
|
package/STYLING.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Styling Guide for `@foblex/flow`
|
|
2
|
+
|
|
3
|
+
## Introduction
|
|
4
|
+
|
|
5
|
+
Styling in `@foblex/flow` depends partly on CSS classes applied by the library at runtime.
|
|
6
|
+
Observed host/base classes in source include `.f-flow`, `.f-canvas`, `.f-node`, `.f-group`, `.f-connection`, `.f-node-input`, `.f-node-output`, and `.f-node-outlet`.
|
|
7
|
+
|
|
8
|
+
## Observed Runtime Classes
|
|
9
|
+
|
|
10
|
+
- Observed in source and examples: `.f-selected` for selected nodes, groups, connections, and minimap items.
|
|
11
|
+
- Observed in source: `.f-dragging` is applied during drag sequences. It is used on dragged items and also on the flow host during an active drag sequence.
|
|
12
|
+
- Observed in source and examples: `.f-connections-dragging` is applied while connection creation/reassignment is looking for valid targets.
|
|
13
|
+
- Observed in source and examples: `.f-connector-connectable` marks connectors that are currently valid connection targets.
|
|
14
|
+
- Observed in source: `.f-node-output-connected` and `.f-node-input-connected` mark connectors that are currently connected.
|
|
15
|
+
- Observed in source: `.f-node-output-not-connectable` and `.f-node-input-not-connectable` mark connectors that are present but currently not connectable.
|
|
16
|
+
- Observed in source: `.f-grouping-drop-active` and `.f-grouping-over-boundary` are applied during drop-to-group interactions.
|
|
17
|
+
- Observed in source: `.f-node-dragging-disabled`, `.f-node-selection-disabled`, `.f-group-dragging-disabled`, `.f-group-selection-disabled`, `.f-connection-reassign-disabled`, and `.f-connection-selection-disabled` are host modifier classes for disabled interaction states.
|
|
18
|
+
- Observed in source: `.f-node-input-disabled`, `.f-node-output-disabled`, and `.f-node-outlet-disabled` are connector/outlet disabled-state classes.
|
|
19
|
+
- Observed in source: `.f-node-input-multiple`, `.f-node-output-multiple`, and `.f-node-output-self-connectable` are connector capability/modifier classes.
|
|
20
|
+
|
|
21
|
+
## Safe Styling Approach
|
|
22
|
+
|
|
23
|
+
- Prefer styling your own semantic classes first, then combine them with high-level Foblex host classes.
|
|
24
|
+
- Safe selectors usually start from host elements such as `.f-node`, `.f-group`, `.f-connection`, `.f-node-input`, `.f-node-output`, and `.f-node-outlet`.
|
|
25
|
+
- For state styling, prefer selectors like `.my-node.f-selected`, `.my-connector.f-node-input-connected`, or `f-flow.f-connections-dragging .f-node-input`.
|
|
26
|
+
- Avoid depending on deep internal DOM structure for connections, markers, or helper overlays unless you inspect the runtime DOM in the installed version.
|
|
27
|
+
- If you need a very specific selector, inspect the rendered DOM first instead of assuming structure from examples.
|
|
28
|
+
|
|
29
|
+
## Warnings
|
|
30
|
+
|
|
31
|
+
- Not every runtime class should be treated as stable public styling API.
|
|
32
|
+
- Some classes are clearly internal interaction/animation helpers, for example `.f-canvas-dragging`, `.f-scaled-animate`, `.f-external-item-preview`, and `.f-external-item-placeholder`.
|
|
33
|
+
- `.canvas-dragging` is a deprecated compatibility alias. Prefer `.f-canvas-dragging`.
|
|
34
|
+
- Example styles prove that a class exists, not that it is guaranteed stable across versions.
|
|
35
|
+
- If a class is not verified in source or shipped examples, do not invent it. Say: `not found in @foblex/flow`.
|
|
@@ -5,10 +5,11 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
/**
|
|
6
6
|
* Execution that creates connection markers for a given connection.
|
|
7
7
|
*/
|
|
8
|
-
export declare class CreateConnectionMarkers implements IExecution<CreateConnectionMarkersRequest,
|
|
8
|
+
export declare class CreateConnectionMarkers implements IExecution<CreateConnectionMarkersRequest, boolean> {
|
|
9
9
|
private readonly _browser;
|
|
10
10
|
private readonly _store;
|
|
11
|
-
|
|
11
|
+
private readonly _markerCache;
|
|
12
|
+
handle({ connection }: CreateConnectionMarkersRequest): boolean;
|
|
12
13
|
_findConnectionMarkers(connection: FConnectionBase): FConnectionMarkerBase[];
|
|
13
14
|
private _makeSafariCompatible;
|
|
14
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<CreateConnectionMarkers, never>;
|
|
@@ -4,6 +4,7 @@ export * from './add-connection-to-store';
|
|
|
4
4
|
export * from './add-snap-connection-to-store';
|
|
5
5
|
export * from './create-connection-markers';
|
|
6
6
|
export * from './redraw-connections';
|
|
7
|
+
export * from './resolve-connection-endpoint-rotation-context';
|
|
7
8
|
export * from './remove-connection-for-create-from-store';
|
|
8
9
|
export * from './remove-connection-from-store';
|
|
9
10
|
export * from './remove-connection-marker-from-store';
|
|
@@ -8,8 +8,9 @@ import { RemoveSnapConnectionFromStore } from './remove-snap-connection-from-sto
|
|
|
8
8
|
import { AddConnectionMarkerToStore } from './add-connection-marker-to-store';
|
|
9
9
|
import { RemoveConnectionMarkerFromStore } from './remove-connection-marker-from-store';
|
|
10
10
|
import { RedrawConnections } from './redraw-connections';
|
|
11
|
+
import { ResolveConnectionEndpointRotationContext } from './resolve-connection-endpoint-rotation-context';
|
|
11
12
|
import { RemoveConnectionWaypoint } from './remove-connection-waypoint';
|
|
12
13
|
/**
|
|
13
14
|
* This file exports all the connection-related features for the F-Flow domain.
|
|
14
15
|
*/
|
|
15
|
-
export declare const F_CONNECTION_FEATURES: (typeof AddConnectionForCreateToStore | typeof AddConnectionMarkerToStore | typeof AddConnectionToStore | typeof AddSnapConnectionToStore | typeof CreateConnectionMarkers | typeof RedrawConnections | typeof RemoveConnectionForCreateFromStore | typeof RemoveConnectionFromStore | typeof RemoveConnectionMarkerFromStore | typeof RemoveSnapConnectionFromStore | typeof RemoveConnectionWaypoint)[];
|
|
16
|
+
export declare const F_CONNECTION_FEATURES: (typeof AddConnectionForCreateToStore | typeof AddConnectionMarkerToStore | typeof AddConnectionToStore | typeof AddSnapConnectionToStore | typeof CreateConnectionMarkers | typeof RedrawConnections | typeof ResolveConnectionEndpointRotationContext | typeof RemoveConnectionForCreateFromStore | typeof RemoveConnectionFromStore | typeof RemoveConnectionMarkerFromStore | typeof RemoveSnapConnectionFromStore | typeof RemoveConnectionWaypoint)[];
|
|
@@ -13,14 +13,17 @@ export declare class RedrawConnections implements IExecution<RedrawConnectionsRe
|
|
|
13
13
|
private readonly _browser;
|
|
14
14
|
private _renderTicket;
|
|
15
15
|
private readonly _connectedInPreviousRender;
|
|
16
|
+
private readonly _connectionRenderCache;
|
|
16
17
|
handle(_request: RedrawConnectionsRequest): void;
|
|
17
18
|
private _resetConnectedConnectors;
|
|
18
19
|
private _setupConnection;
|
|
19
20
|
private _setupConnectionWithLine;
|
|
20
21
|
private _calculateConnectionLine;
|
|
22
|
+
private _resolveRotationContext;
|
|
21
23
|
private _resolveConnectionConnectors;
|
|
22
24
|
private _resolveConnectionContext;
|
|
23
25
|
private _createMarkers;
|
|
26
|
+
private _shouldRedrawConnection;
|
|
24
27
|
private _setupConnectionsUsingWorker;
|
|
25
28
|
private _applyWorkerResultsChunked;
|
|
26
29
|
private _alignWorkerResultsToConnectionIndexes;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FConnectorBase } from '../../../f-connectors';
|
|
2
|
+
import { IConnectionEndpointRotationContext } from '../../../f-connection-v2';
|
|
3
|
+
export declare class ResolveConnectionEndpointRotationContextRequest {
|
|
4
|
+
readonly connector?: FConnectorBase | undefined;
|
|
5
|
+
static readonly fToken: unique symbol;
|
|
6
|
+
constructor(connector?: FConnectorBase | undefined);
|
|
7
|
+
}
|
|
8
|
+
export type TResolveConnectionEndpointRotationContextResponse = IConnectionEndpointRotationContext | undefined;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IExecution } from '@foblex/mediator';
|
|
2
|
+
import { ResolveConnectionEndpointRotationContextRequest, TResolveConnectionEndpointRotationContextResponse } from './resolve-connection-endpoint-rotation-context-request';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class ResolveConnectionEndpointRotationContext implements IExecution<ResolveConnectionEndpointRotationContextRequest, TResolveConnectionEndpointRotationContextResponse> {
|
|
5
|
+
private readonly _store;
|
|
6
|
+
private readonly _mediator;
|
|
7
|
+
handle({ connector, }: ResolveConnectionEndpointRotationContextRequest): TResolveConnectionEndpointRotationContextResponse;
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ResolveConnectionEndpointRotationContext, never>;
|
|
9
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ResolveConnectionEndpointRotationContext>;
|
|
10
|
+
}
|
|
@@ -7,6 +7,7 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
* when the drag started, and updates the draggable items accordingly.
|
|
8
8
|
*/
|
|
9
9
|
export declare class OnPointerMove implements IExecution<OnPointerMoveRequest, void> {
|
|
10
|
+
private readonly _mediator;
|
|
10
11
|
private readonly _store;
|
|
11
12
|
private get _hostElement();
|
|
12
13
|
private readonly _dragContext;
|
|
@@ -17,9 +17,17 @@ export declare class GetNormalizedConnectorRect implements IExecution<GetNormali
|
|
|
17
17
|
private _getRoundedRect;
|
|
18
18
|
private _getComputedStyle;
|
|
19
19
|
private _toPixels;
|
|
20
|
+
private _getSystemRadius;
|
|
21
|
+
/**
|
|
22
|
+
* Mirrors CSS border-radius normalization so oversized values like `999px`
|
|
23
|
+
* collapse to the largest valid circular radii for the current rect.
|
|
24
|
+
*/
|
|
25
|
+
private _normalizeCircularBorderRadii;
|
|
26
|
+
private _getRadiusScaleFactor;
|
|
20
27
|
private _normalizePosition;
|
|
21
28
|
private _unscaleSize;
|
|
22
29
|
private _getUnscaledRect;
|
|
30
|
+
private _unscaleRadius;
|
|
23
31
|
private _getOffsetSize;
|
|
24
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<GetNormalizedConnectorRect, never>;
|
|
25
33
|
static ɵprov: i0.ɵɵInjectableDeclaration<GetNormalizedConnectorRect>;
|
package/domain/providers.d.ts
CHANGED
|
@@ -10,4 +10,4 @@ import { GetNormalizedConnectorRect } from './get-normalized-connector-rect';
|
|
|
10
10
|
* draggable elements, flow, line alignment, nodes, selection, zoom,
|
|
11
11
|
* and various utility executions.
|
|
12
12
|
*/
|
|
13
|
-
export declare const COMMON_PROVIDERS: (typeof import("../f-cache").FCache | typeof import("../f-cache").InvalidateFCacheNode | typeof import("../f-cache").RegisterFCacheNode | typeof import("../f-cache").UnregisterFCacheNode | typeof import("../f-cache").RegisterFCacheConnector | typeof import("../f-cache").UnregisterFCacheConnector | typeof import("../f-cache").GetCachedFCacheRect | typeof import("../f-cache").SetFCacheConnectorRect | typeof import("../f-cache").SetFCacheNodeRect | typeof import("../f-cache").UpdateFCacheRectByElement | typeof import("./f-canvas").AddCanvasToStore | typeof import("./f-canvas").CenterGroupOrNode | typeof import("./f-canvas").FitToFlow | typeof import("./f-canvas").InputCanvasPosition | typeof import("./f-canvas").InputCanvasScale | typeof import("./f-canvas").RedrawCanvasWithAnimation | typeof import("./f-canvas").ResetScaleAndCenter | typeof import("./f-canvas").UpdateScale | typeof import("./f-connection").AddConnectionForCreateToStore | typeof import("./f-connection").AddConnectionMarkerToStore | typeof import("./f-connection").AddConnectionToStore | typeof import("./f-connection").AddSnapConnectionToStore | typeof import("./f-connection").CreateConnectionMarkers | typeof import("./f-connection").RemoveConnectionFromStore | typeof import("./f-connection").RemoveConnectionMarkerFromStore | typeof import("./f-connection").RemoveConnectionWaypoint | typeof import("./f-background").AddPatternToBackground | typeof import("./f-background").SetBackgroundTransform | typeof import("./f-connectors").AddConnectorToStore | typeof import("./f-connectors").RemoveConnectorFromStore | typeof import("./f-connectors").CalculateClosestConnector | typeof import("./f-connectors").FindConnectableConnectorUsingPriorityAndPosition | typeof import("./f-connectors").CalculateSourceConnectorsToConnect | typeof import("./f-connectors").CalculateTargetConnectorsToConnect | typeof import("./f-connectors").GetConnectorRectReference | typeof import("./f-connectors").MarkConnectableConnectors | typeof import("./f-connectors").UnmarkConnectableConnectors | typeof import("./f-draggable").AddDndToStore | typeof import("./f-draggable").OnPointerMove | typeof import("./f-flow").AddFlowToStore | typeof import("./f-flow").CalculateNodesState | typeof import("./f-node").AddNodeToStore | typeof import("./f-node").CalculateConnectableSideByConnectedPositions | typeof import("./f-node").CalculateConnectableSideByInternalPosition | typeof import("./f-node").CalculateInputConnections | typeof import("./f-node").CalculateConnectorsConnectableSides | typeof import("./f-node").CalculateNodesBoundingBoxNormalizedPosition | typeof import("./f-node").CalculateOutputConnections | typeof import("./f-node").FitToChildNodesAndGroups | typeof import("./f-node").GetChildNodeIds | typeof import("./f-node").GetNodePadding | typeof import("./f-node").GetParentNodes | typeof import("./f-node").UpdateNodeWhenStateOrSizeChanged | typeof import("./f-node").RemoveNodeFromStore | typeof import("./f-selection").Select | typeof import("./f-selection").SelectAndUpdateNodeLayer | typeof import("./f-zoom").SetZoom | typeof import("./minimap").MinimapCalculateViewport | typeof GetDeepChildrenNodesAndGroups | typeof GetNormalizedConnectorRect | typeof GetNormalizedElementRect | typeof GetNormalizedPoint | typeof SortItemsByParent | typeof UpdateItemAndChildrenLayers | typeof MoveFrontElementsBeforeTargetElement)[];
|
|
13
|
+
export declare const COMMON_PROVIDERS: (typeof import("../f-cache").FCache | typeof import("../f-cache").InvalidateFCacheNode | typeof import("../f-cache").RegisterFCacheNode | typeof import("../f-cache").UnregisterFCacheNode | typeof import("../f-cache").RegisterFCacheConnector | typeof import("../f-cache").UnregisterFCacheConnector | typeof import("../f-cache").GetCachedFCacheRect | typeof import("../f-cache").SetFCacheConnectorRect | typeof import("../f-cache").SetFCacheNodeRect | typeof import("../f-cache").UpdateFCacheRectByElement | typeof import("./f-canvas").AddCanvasToStore | typeof import("./f-canvas").CenterGroupOrNode | typeof import("./f-canvas").FitToFlow | typeof import("./f-canvas").InputCanvasPosition | typeof import("./f-canvas").InputCanvasScale | typeof import("./f-canvas").RedrawCanvasWithAnimation | typeof import("./f-canvas").ResetScaleAndCenter | typeof import("./f-canvas").UpdateScale | typeof import("./f-connection").AddConnectionForCreateToStore | typeof import("./f-connection").AddConnectionMarkerToStore | typeof import("./f-connection").AddConnectionToStore | typeof import("./f-connection").AddSnapConnectionToStore | typeof import("./f-connection").CreateConnectionMarkers | typeof import("./f-connection").ResolveConnectionEndpointRotationContext | typeof import("./f-connection").RemoveConnectionFromStore | typeof import("./f-connection").RemoveConnectionMarkerFromStore | typeof import("./f-connection").RemoveConnectionWaypoint | typeof import("./f-background").AddPatternToBackground | typeof import("./f-background").SetBackgroundTransform | typeof import("./f-connectors").AddConnectorToStore | typeof import("./f-connectors").RemoveConnectorFromStore | typeof import("./f-connectors").CalculateClosestConnector | typeof import("./f-connectors").FindConnectableConnectorUsingPriorityAndPosition | typeof import("./f-connectors").CalculateSourceConnectorsToConnect | typeof import("./f-connectors").CalculateTargetConnectorsToConnect | typeof import("./f-connectors").GetConnectorRectReference | typeof import("./f-connectors").MarkConnectableConnectors | typeof import("./f-connectors").UnmarkConnectableConnectors | typeof import("./f-draggable").AddDndToStore | typeof import("./f-draggable").OnPointerMove | typeof import("./f-flow").AddFlowToStore | typeof import("./f-flow").CalculateNodesState | typeof import("./f-node").AddNodeToStore | typeof import("./f-node").CalculateConnectableSideByConnectedPositions | typeof import("./f-node").CalculateConnectableSideByInternalPosition | typeof import("./f-node").CalculateInputConnections | typeof import("./f-node").CalculateConnectorsConnectableSides | typeof import("./f-node").CalculateNodesBoundingBoxNormalizedPosition | typeof import("./f-node").CalculateOutputConnections | typeof import("./f-node").FitToChildNodesAndGroups | typeof import("./f-node").GetChildNodeIds | typeof import("./f-node").GetNodePadding | typeof import("./f-node").GetParentNodes | typeof import("./f-node").UpdateNodeWhenStateOrSizeChanged | typeof import("./f-node").RemoveNodeFromStore | typeof import("./f-selection").Select | typeof import("./f-selection").SelectAndUpdateNodeLayer | typeof import("./f-zoom").SetZoom | typeof import("./minimap").MinimapCalculateViewport | typeof GetDeepChildrenNodesAndGroups | typeof GetNormalizedConnectorRect | typeof GetNormalizedElementRect | typeof GetNormalizedPoint | typeof SortItemsByParent | typeof UpdateItemAndChildrenLayers | typeof MoveFrontElementsBeforeTargetElement)[];
|
|
@@ -12,9 +12,20 @@ import * as i0 from "@angular/core";
|
|
|
12
12
|
let CreateConnectionMarkers = class CreateConnectionMarkers {
|
|
13
13
|
_browser = inject(BrowserService);
|
|
14
14
|
_store = inject(FComponentsStore);
|
|
15
|
+
_markerCache = new WeakMap();
|
|
15
16
|
handle({ connection }) {
|
|
17
|
+
const markers = this._findConnectionMarkers(connection);
|
|
18
|
+
const defs = connection.fDefs();
|
|
19
|
+
if (!defs) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
const signature = createConnectionMarkersSignature(markers);
|
|
23
|
+
const cached = this._markerCache.get(connection);
|
|
24
|
+
if (cached?.signature === signature && cached.defsElement === defs.nativeElement) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
16
27
|
const element = createSVGElement('defs', this._browser);
|
|
17
|
-
|
|
28
|
+
markers.forEach((marker) => {
|
|
18
29
|
const markerElement = createMarkerElement(marker, connection.fId(), this._browser);
|
|
19
30
|
const clone = marker.hostElement.cloneNode(true);
|
|
20
31
|
clone.setAttribute('height', `${marker.height}`);
|
|
@@ -24,11 +35,13 @@ let CreateConnectionMarkers = class CreateConnectionMarkers {
|
|
|
24
35
|
markerElement.append(clone);
|
|
25
36
|
element.append(markerElement);
|
|
26
37
|
});
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
38
|
+
defs.nativeElement.innerHTML = element.innerHTML;
|
|
39
|
+
this._markerCache.set(connection, {
|
|
40
|
+
signature,
|
|
41
|
+
defsElement: defs.nativeElement,
|
|
42
|
+
});
|
|
31
43
|
this._makeSafariCompatible(connection);
|
|
44
|
+
return true;
|
|
32
45
|
}
|
|
33
46
|
_findConnectionMarkers(connection) {
|
|
34
47
|
return this._store.connectionMarkers
|
|
@@ -49,6 +62,20 @@ export { CreateConnectionMarkers };
|
|
|
49
62
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CreateConnectionMarkers, decorators: [{
|
|
50
63
|
type: Injectable
|
|
51
64
|
}] });
|
|
65
|
+
function createConnectionMarkersSignature(markers) {
|
|
66
|
+
return markers
|
|
67
|
+
.map((marker) => [
|
|
68
|
+
marker.type,
|
|
69
|
+
marker.width,
|
|
70
|
+
marker.height,
|
|
71
|
+
marker.refX,
|
|
72
|
+
marker.refY,
|
|
73
|
+
marker.orient,
|
|
74
|
+
marker.markerUnits,
|
|
75
|
+
marker.hostElement.outerHTML,
|
|
76
|
+
].join('|'))
|
|
77
|
+
.join('||');
|
|
78
|
+
}
|
|
52
79
|
function createMarkerElement(marker, connectionId, browser) {
|
|
53
80
|
const markerElement = createSVGElement('marker', browser);
|
|
54
81
|
markerElement.setAttribute('id', normalizeDomElementId(marker.type + '-' + connectionId));
|
|
@@ -63,4 +90,4 @@ function createMarkerElement(marker, connectionId, browser) {
|
|
|
63
90
|
function createSVGElement(tag, fBrowser) {
|
|
64
91
|
return fBrowser.document.createElementNS('http://www.w3.org/2000/svg', tag);
|
|
65
92
|
}
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNvbm5lY3Rpb24tbWFya2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZG9tYWluL2YtY29ubmVjdGlvbi9jcmVhdGUtY29ubmVjdGlvbi1tYXJrZXJzL2NyZWF0ZS1jb25uZWN0aW9uLW1hcmtlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBYyxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBR3REOztHQUVHO0FBR0ksSUFBTSx1QkFBdUIsR0FBN0IsTUFBTSx1QkFBdUI7SUFDakIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNsQyxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFNUMsTUFBTSxDQUFDLEVBQUUsVUFBVSxFQUFrQztRQUMxRCxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUN6RCxNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVuRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQWdCLENBQUM7WUFDaEUsS0FBSyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNqRCxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLEtBQUssQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDckMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1lBQzlCLGFBQWEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFNUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUNuRCxDQUFDO1FBRUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxVQUEyQjtRQUN2RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCO2FBQ2pDLE1BQU0sRUFBRTthQUNSLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELGlHQUFpRztJQUN6RixxQkFBcUIsQ0FBQyxXQUE0QjtRQUN4RCxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0UsQ0FBQzt3R0FyQ1UsdUJBQXVCOzRHQUF2Qix1QkFBdUI7O0FBQXZCLHVCQUF1QjtJQURuQyxrQkFBa0IsQ0FBQyw4QkFBOEIsQ0FBQztHQUN0Qyx1QkFBdUIsQ0FzQ25DOzs0RkF0Q1ksdUJBQXVCO2tCQUZuQyxVQUFVOztBQTBDWCxTQUFTLG1CQUFtQixDQUMxQixNQUE2QixFQUM3QixZQUFvQixFQUNwQixPQUF1QjtJQUV2QixNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFMUQsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUMxRixhQUFhLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELGFBQWEsQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDN0QsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN6RCxhQUFhLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckQsYUFBYSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsR0FBRyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUVuRSxPQUFPLGFBQWEsQ0FBQztBQUN2QixDQUFDO0FBRUQsU0FBUyxnQkFBZ0IsQ0FDdkIsR0FBTSxFQUNOLFFBQXdCO0lBRXhCLE9BQU8sUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ3JlYXRlQ29ubmVjdGlvbk1hcmtlcnNSZXF1ZXN0IH0gZnJvbSAnLi9jcmVhdGUtY29ubmVjdGlvbi1tYXJrZXJzLXJlcXVlc3QnO1xuaW1wb3J0IHsgRkV4ZWN1dGlvblJlZ2lzdGVyLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJ0Bmb2JsZXgvcGxhdGZvcm0nO1xuaW1wb3J0IHsgbm9ybWFsaXplRG9tRWxlbWVudElkIH0gZnJvbSAnQGZvYmxleC91dGlscyc7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7IEZDb25uZWN0aW9uQmFzZSwgRkNvbm5lY3Rpb25NYXJrZXJCYXNlIH0gZnJvbSAnLi4vLi4vLi4vZi1jb25uZWN0aW9uLXYyJztcblxuLyoqXG4gKiBFeGVjdXRpb24gdGhhdCBjcmVhdGVzIGNvbm5lY3Rpb24gbWFya2VycyBmb3IgYSBnaXZlbiBjb25uZWN0aW9uLlxuICovXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKENyZWF0ZUNvbm5lY3Rpb25NYXJrZXJzUmVxdWVzdClcbmV4cG9ydCBjbGFzcyBDcmVhdGVDb25uZWN0aW9uTWFya2VycyBpbXBsZW1lbnRzIElFeGVjdXRpb248Q3JlYXRlQ29ubmVjdGlvbk1hcmtlcnNSZXF1ZXN0LCB2b2lkPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Jyb3dzZXIgPSBpbmplY3QoQnJvd3NlclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdG9yZSA9IGluamVjdChGQ29tcG9uZW50c1N0b3JlKTtcblxuICBwdWJsaWMgaGFuZGxlKHsgY29ubmVjdGlvbiB9OiBDcmVhdGVDb25uZWN0aW9uTWFya2Vyc1JlcXVlc3QpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gY3JlYXRlU1ZHRWxlbWVudCgnZGVmcycsIHRoaXMuX2Jyb3dzZXIpO1xuXG4gICAgdGhpcy5fZmluZENvbm5lY3Rpb25NYXJrZXJzKGNvbm5lY3Rpb24pLmZvckVhY2goKG1hcmtlcikgPT4ge1xuICAgICAgY29uc3QgbWFya2VyRWxlbWVudCA9IGNyZWF0ZU1hcmtlckVsZW1lbnQobWFya2VyLCBjb25uZWN0aW9uLmZJZCgpLCB0aGlzLl9icm93c2VyKTtcblxuICAgICAgY29uc3QgY2xvbmUgPSBtYXJrZXIuaG9zdEVsZW1lbnQuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgY2xvbmUuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBgJHttYXJrZXIuaGVpZ2h0fWApO1xuICAgICAgY2xvbmUuc2V0QXR0cmlidXRlKCd3aWR0aCcsIGAke21hcmtlci53aWR0aH1gKTtcbiAgICAgIGNsb25lLnJlbW92ZUF0dHJpYnV0ZSgnbWFya2VyVW5pdHMnKTtcbiAgICAgIGNsb25lLnN0eWxlLmRpc3BsYXkgPSAndW5zZXQnO1xuICAgICAgbWFya2VyRWxlbWVudC5hcHBlbmQoY2xvbmUpO1xuXG4gICAgICBlbGVtZW50LmFwcGVuZChtYXJrZXJFbGVtZW50KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGRlZnMgPSBjb25uZWN0aW9uLmZEZWZzKCk7XG4gICAgaWYgKGRlZnMpIHtcbiAgICAgIGRlZnMubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSBlbGVtZW50LmlubmVySFRNTDtcbiAgICB9XG5cbiAgICB0aGlzLl9tYWtlU2FmYXJpQ29tcGF0aWJsZShjb25uZWN0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBfZmluZENvbm5lY3Rpb25NYXJrZXJzKGNvbm5lY3Rpb246IEZDb25uZWN0aW9uQmFzZSk6IEZDb25uZWN0aW9uTWFya2VyQmFzZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fc3RvcmUuY29ubmVjdGlvbk1hcmtlcnNcbiAgICAgIC5nZXRBbGwoKVxuICAgICAgLmZpbHRlcigoeCkgPT4gY29ubmVjdGlvbi5ob3N0RWxlbWVudC5jb250YWlucyh4Lmhvc3RFbGVtZW50KSk7XG4gIH1cblxuICAvLyBTYWZhcmkgZG9lcyBub3Qgc3VwcG9ydCBtYXJrZXJzIG9uIHBhdGggZWxlbWVudHMgaWYgbWFya2VycyBhcmUgZGVmaW5lZCBhZnRlciB0aGUgcGF0aCBlbGVtZW50XG4gIHByaXZhdGUgX21ha2VTYWZhcmlDb21wYXRpYmxlKGZDb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UpOiB2b2lkIHtcbiAgICBmQ29ubmVjdGlvbi5mUGF0aCgpLmhvc3RFbGVtZW50LnJlcGxhY2VXaXRoKGZDb25uZWN0aW9uLmZQYXRoKCkuaG9zdEVsZW1lbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU1hcmtlckVsZW1lbnQoXG4gIG1hcmtlcjogRkNvbm5lY3Rpb25NYXJrZXJCYXNlLFxuICBjb25uZWN0aW9uSWQ6IHN0cmluZyxcbiAgYnJvd3NlcjogQnJvd3NlclNlcnZpY2UsXG4pOiBTVkdFbGVtZW50IHtcbiAgY29uc3QgbWFya2VyRWxlbWVudCA9IGNyZWF0ZVNWR0VsZW1lbnQoJ21hcmtlcicsIGJyb3dzZXIpO1xuXG4gIG1hcmtlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdpZCcsIG5vcm1hbGl6ZURvbUVsZW1lbnRJZChtYXJrZXIudHlwZSArICctJyArIGNvbm5lY3Rpb25JZCkpO1xuICBtYXJrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnbWFya2VySGVpZ2h0JywgYCR7bWFya2VyLmhlaWdodH1gKTtcbiAgbWFya2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ21hcmtlcldpZHRoJywgYCR7bWFya2VyLndpZHRofWApO1xuICBtYXJrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnb3JpZW50JywgYCR7bWFya2VyLm9yaWVudH1gKTtcbiAgbWFya2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JlZlgnLCBgJHttYXJrZXIucmVmWH1gKTtcbiAgbWFya2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JlZlknLCBgJHttYXJrZXIucmVmWX1gKTtcbiAgbWFya2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ21hcmtlclVuaXRzJywgYCR7bWFya2VyLm1hcmtlclVuaXRzfWApO1xuXG4gIHJldHVybiBtYXJrZXJFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTVkdFbGVtZW50PEsgZXh0ZW5kcyBrZXlvZiBTVkdFbGVtZW50VGFnTmFtZU1hcD4oXG4gIHRhZzogSyxcbiAgZkJyb3dzZXI6IEJyb3dzZXJTZXJ2aWNlLFxuKTogU1ZHRWxlbWVudFRhZ05hbWVNYXBbS10ge1xuICByZXR1cm4gZkJyb3dzZXIuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsIHRhZyk7XG59XG4iXX0=
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNvbm5lY3Rpb24tbWFya2Vycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZG9tYWluL2YtY29ubmVjdGlvbi9jcmVhdGUtY29ubmVjdGlvbi1tYXJrZXJzL2NyZWF0ZS1jb25uZWN0aW9uLW1hcmtlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBYyxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBR3REOztHQUVHO0FBR0ksSUFBTSx1QkFBdUIsR0FBN0IsTUFBTSx1QkFBdUI7SUFHakIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNsQyxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDbEMsWUFBWSxHQUFHLElBQUksT0FBTyxFQUd4QyxDQUFDO0lBRUcsTUFBTSxDQUFDLEVBQUUsVUFBVSxFQUFrQztRQUMxRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEQsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLGdDQUFnQyxDQUFDLE9BQU8sQ0FBQyxDQUFD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QUVELFNBQVMsbUJBQW1CLENBQzFCLE1BQTZCLEVBQzdCLFlBQW9CLEVBQ3BCLE9BQXVCO0lBRXZCLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUUxRCxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQzFGLGFBQWEsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0QsYUFBYSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM3RCxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckQsYUFBYSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNyRCxhQUFhLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBRW5FLE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUN2QixHQUFNLEVBQ04sUUFBd0I7SUFFeEIsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM5RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDcmVhdGVDb25uZWN0aW9uTWFya2Vyc1JlcXVlc3QgfSBmcm9tICcuL2NyZWF0ZS1jb25uZWN0aW9uLW1hcmtlcnMtcmVxdWVzdCc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIElFeGVjdXRpb24gfSBmcm9tICdAZm9ibGV4L21lZGlhdG9yJztcbmltcG9ydCB7IEJyb3dzZXJTZXJ2aWNlIH0gZnJvbSAnQGZvYmxleC9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBub3JtYWxpemVEb21FbGVtZW50SWQgfSBmcm9tICdAZm9ibGV4L3V0aWxzJztcbmltcG9ydCB7IEZDb21wb25lbnRzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9mLXN0b3JhZ2UnO1xuaW1wb3J0IHsgRkNvbm5lY3Rpb25CYXNlLCBGQ29ubmVjdGlvbk1hcmtlckJhc2UgfSBmcm9tICcuLi8uLi8uLi9mLWNvbm5lY3Rpb24tdjInO1xuXG4vKipcbiAqIEV4ZWN1dGlvbiB0aGF0IGNyZWF0ZXMgY29ubmVjdGlvbiBtYXJrZXJzIGZvciBhIGdpdmVuIGNvbm5lY3Rpb24uXG4gKi9cbkBJbmplY3RhYmxlKClcbkBGRXhlY3V0aW9uUmVnaXN0ZXIoQ3JlYXRlQ29ubmVjdGlvbk1hcmtlcnNSZXF1ZXN0KVxuZXhwb3J0IGNsYXNzIENyZWF0ZUNvbm5lY3Rpb25NYXJrZXJzXG4gIGltcGxlbWVudHMgSUV4ZWN1dGlvbjxDcmVhdGVDb25uZWN0aW9uTWFya2Vyc1JlcXVlc3QsIGJvb2xlYW4+XG57XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Jyb3dzZXIgPSBpbmplY3QoQnJvd3NlclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdG9yZSA9IGluamVjdChGQ29tcG9uZW50c1N0b3JlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWFya2VyQ2FjaGUgPSBuZXcgV2Vha01hcDxcbiAgICBGQ29ubmVjdGlvbkJhc2UsXG4gICAgeyBzaWduYXR1cmU6IHN0cmluZzsgZGVmc0VsZW1lbnQ6IFNWR0RlZnNFbGVtZW50IH1cbiAgPigpO1xuXG4gIHB1YmxpYyBoYW5kbGUoeyBjb25uZWN0aW9uIH06IENyZWF0ZUNvbm5lY3Rpb25NYXJrZXJzUmVxdWVzdCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1hcmtlcnMgPSB0aGlzLl9maW5kQ29ubmVjdGlvbk1hcmtlcnMoY29ubmVjdGlvbik7XG4gICAgY29uc3QgZGVmcyA9IGNvbm5lY3Rpb24uZkRlZnMoKTtcbiAgICBpZiAoIWRlZnMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBzaWduYXR1cmUgPSBjcmVhdGVDb25uZWN0aW9uTWFya2Vyc1NpZ25hdHVyZShtYXJrZXJzKTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLl9tYXJrZXJDYWNoZS5nZXQoY29ubmVjdGlvbik7XG4gICAgaWYgKGNhY2hlZD8uc2lnbmF0dXJlID09PSBzaWduYXR1cmUgJiYgY2FjaGVkLmRlZnNFbGVtZW50ID09PSBkZWZzLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gY3JlYXRlU1ZHRWxlbWVudCgnZGVmcycsIHRoaXMuX2Jyb3dzZXIpO1xuXG4gICAgbWFya2Vycy5mb3JFYWNoKChtYXJrZXIpID0+IHtcbiAgICAgIGNvbnN0IG1hcmtlckVsZW1lbnQgPSBjcmVhdGVNYXJrZXJFbGVtZW50KG1hcmtlciwgY29ubmVjdGlvbi5mSWQoKSwgdGhpcy5fYnJvd3Nlcik7XG5cbiAgICAgIGNvbnN0IGNsb25lID0gbWFya2VyLmhvc3RFbGVtZW50LmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGNsb25lLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgYCR7bWFya2VyLmhlaWdodH1gKTtcbiAgICAgIGNsb25lLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCBgJHttYXJrZXIud2lkdGh9YCk7XG4gICAgICBjbG9uZS5yZW1vdmVBdHRyaWJ1dGUoJ21hcmtlclVuaXRzJyk7XG4gICAgICBjbG9uZS5zdHlsZS5kaXNwbGF5ID0gJ3Vuc2V0JztcbiAgICAgIG1hcmtlckVsZW1lbnQuYXBwZW5kKGNsb25lKTtcblxuICAgICAgZWxlbWVudC5hcHBlbmQobWFya2VyRWxlbWVudCk7XG4gICAgfSk7XG5cbiAgICBkZWZzLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gZWxlbWVudC5pbm5lckhUTUw7XG4gICAgdGhpcy5fbWFya2VyQ2FjaGUuc2V0KGNvbm5lY3Rpb24sIHtcbiAgICAgIHNpZ25hdHVyZSxcbiAgICAgIGRlZnNFbGVtZW50OiBkZWZzLm5hdGl2ZUVsZW1lbnQsXG4gICAgfSk7XG4gICAgdGhpcy5fbWFrZVNhZmFyaUNvbXBhdGlibGUoY29ubmVjdGlvbik7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBfZmluZENvbm5lY3Rpb25NYXJrZXJzKGNvbm5lY3Rpb246IEZDb25uZWN0aW9uQmFzZSk6IEZDb25uZWN0aW9uTWFya2VyQmFzZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fc3RvcmUuY29ubmVjdGlvbk1hcmtlcnNcbiAgICAgIC5nZXRBbGwoKVxuICAgICAgLmZpbHRlcigoeCkgPT4gY29ubmVjdGlvbi5ob3N0RWxlbWVudC5jb250YWlucyh4Lmhvc3RFbGVtZW50KSk7XG4gIH1cblxuICAvLyBTYWZhcmkgZG9lcyBub3Qgc3VwcG9ydCBtYXJrZXJzIG9uIHBhdGggZWxlbWVudHMgaWYgbWFya2VycyBhcmUgZGVmaW5lZCBhZnRlciB0aGUgcGF0aCBlbGVtZW50XG4gIHByaXZhdGUgX21ha2VTYWZhcmlDb21wYXRpYmxlKGZDb25uZWN0aW9uOiBGQ29ubmVjdGlvbkJhc2UpOiB2b2lkIHtcbiAgICBmQ29ubmVjdGlvbi5mUGF0aCgpLmhvc3RFbGVtZW50LnJlcGxhY2VXaXRoKGZDb25uZWN0aW9uLmZQYXRoKCkuaG9zdEVsZW1lbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbm5lY3Rpb25NYXJrZXJzU2lnbmF0dXJlKG1hcmtlcnM6IHJlYWRvbmx5IEZDb25uZWN0aW9uTWFya2VyQmFzZVtdKTogc3RyaW5nIHtcbiAgcmV0dXJuIG1hcmtlcnNcbiAgICAubWFwKChtYXJrZXIpID0+XG4gICAgICBbXG4gICAgICAgIG1hcmtlci50eXBlLFxuICAgICAgICBtYXJrZXIud2lkdGgsXG4gICAgICAgIG1hcmtlci5oZWlnaHQsXG4gICAgICAgIG1hcmtlci5yZWZYLFxuICAgICAgICBtYXJrZXIucmVmWSxcbiAgICAgICAgbWFya2VyLm9yaWVudCxcbiAgICAgICAgbWFya2VyLm1hcmtlclVuaXRzLFxuICAgICAgICBtYXJrZXIuaG9zdEVsZW1lbnQub3V0ZXJIVE1MLFxuICAgICAgXS5qb2luKCd8JyksXG4gICAgKVxuICAgIC5qb2luKCd8fCcpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVNYXJrZXJFbGVtZW50KFxuICBtYXJrZXI6IEZDb25uZWN0aW9uTWFya2VyQmFzZSxcbiAgY29ubmVjdGlvbklkOiBzdHJpbmcsXG4gIGJyb3dzZXI6IEJyb3dzZXJTZXJ2aWNlLFxuKTogU1ZHRWxlbWVudCB7XG4gIGNvbnN0IG1hcmtlckVsZW1lbnQgPSBjcmVhdGVTVkdFbGVtZW50KCdtYXJrZXInLCBicm93c2VyKTtcblxuICBtYXJrZXJFbGVtZW50LnNldEF0dHJpYnV0ZSgnaWQnLCBub3JtYWxpemVEb21FbGVtZW50SWQobWFya2VyLnR5cGUgKyAnLScgKyBjb25uZWN0aW9uSWQpKTtcbiAgbWFya2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ21hcmtlckhlaWdodCcsIGAke21hcmtlci5oZWlnaHR9YCk7XG4gIG1hcmtlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdtYXJrZXJXaWR0aCcsIGAke21hcmtlci53aWR0aH1gKTtcbiAgbWFya2VyRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ29yaWVudCcsIGAke21hcmtlci5vcmllbnR9YCk7XG4gIG1hcmtlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdyZWZYJywgYCR7bWFya2VyLnJlZlh9YCk7XG4gIG1hcmtlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdyZWZZJywgYCR7bWFya2VyLnJlZll9YCk7XG4gIG1hcmtlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdtYXJrZXJVbml0cycsIGAke21hcmtlci5tYXJrZXJVbml0c31gKTtcblxuICByZXR1cm4gbWFya2VyRWxlbWVudDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlU1ZHRWxlbWVudDxLIGV4dGVuZHMga2V5b2YgU1ZHRWxlbWVudFRhZ05hbWVNYXA+KFxuICB0YWc6IEssXG4gIGZCcm93c2VyOiBCcm93c2VyU2VydmljZSxcbik6IFNWR0VsZW1lbnRUYWdOYW1lTWFwW0tdIHtcbiAgcmV0dXJuIGZCcm93c2VyLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLCB0YWcpO1xufVxuIl19
|
|
@@ -4,10 +4,11 @@ export * from './add-connection-to-store';
|
|
|
4
4
|
export * from './add-snap-connection-to-store';
|
|
5
5
|
export * from './create-connection-markers';
|
|
6
6
|
export * from './redraw-connections';
|
|
7
|
+
export * from './resolve-connection-endpoint-rotation-context';
|
|
7
8
|
export * from './remove-connection-for-create-from-store';
|
|
8
9
|
export * from './remove-connection-from-store';
|
|
9
10
|
export * from './remove-connection-marker-from-store';
|
|
10
11
|
export * from './remove-connection-waypoint';
|
|
11
12
|
export * from './remove-snap-connection-from-store';
|
|
12
13
|
export * from './providers';
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLWNvbm5lY3Rpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQ0FBc0MsQ0FBQztBQUVyRCxjQUFjLGtDQUFrQyxDQUFDO0FBRWpELGNBQWMsMkJBQTJCLENBQUM7QUFFMUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUUvQyxjQUFjLDZCQUE2QixDQUFDO0FBRTVDLGNBQWMsc0JBQXNCLENBQUM7QUFFckMsY0FBYyxnREFBZ0QsQ0FBQztBQUUvRCxjQUFjLDJDQUEyQyxDQUFDO0FBRTFELGNBQWMsZ0NBQWdDLENBQUM7QUFFL0MsY0FBYyx1Q0FBdUMsQ0FBQztBQUV0RCxjQUFjLDhCQUE4QixDQUFDO0FBRTdDLGNBQWMscUNBQXFDLENBQUM7QUFFcEQsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FkZC1jb25uZWN0aW9uLWZvci1jcmVhdGUtdG8tc3RvcmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2FkZC1jb25uZWN0aW9uLW1hcmtlci10by1zdG9yZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vYWRkLWNvbm5lY3Rpb24tdG8tc3RvcmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2FkZC1zbmFwLWNvbm5lY3Rpb24tdG8tc3RvcmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL2NyZWF0ZS1jb25uZWN0aW9uLW1hcmtlcnMnO1xuXG5leHBvcnQgKiBmcm9tICcuL3JlZHJhdy1jb25uZWN0aW9ucyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcmVzb2x2ZS1jb25uZWN0aW9uLWVuZHBvaW50LXJvdGF0aW9uLWNvbnRleHQnO1xuXG5leHBvcnQgKiBmcm9tICcuL3JlbW92ZS1jb25uZWN0aW9uLWZvci1jcmVhdGUtZnJvbS1zdG9yZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcmVtb3ZlLWNvbm5lY3Rpb24tZnJvbS1zdG9yZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vcmVtb3ZlLWNvbm5lY3Rpb24tbWFya2VyLWZyb20tc3RvcmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL3JlbW92ZS1jb25uZWN0aW9uLXdheXBvaW50JztcblxuZXhwb3J0ICogZnJvbSAnLi9yZW1vdmUtc25hcC1jb25uZWN0aW9uLWZyb20tc3RvcmUnO1xuXG5leHBvcnQgKiBmcm9tICcuL3Byb3ZpZGVycyc7XG4iXX0=
|
|
@@ -8,6 +8,7 @@ import { RemoveSnapConnectionFromStore } from './remove-snap-connection-from-sto
|
|
|
8
8
|
import { AddConnectionMarkerToStore } from './add-connection-marker-to-store';
|
|
9
9
|
import { RemoveConnectionMarkerFromStore } from './remove-connection-marker-from-store';
|
|
10
10
|
import { RedrawConnections } from './redraw-connections';
|
|
11
|
+
import { ResolveConnectionEndpointRotationContext } from './resolve-connection-endpoint-rotation-context';
|
|
11
12
|
import { RemoveConnectionWaypoint } from './remove-connection-waypoint';
|
|
12
13
|
/**
|
|
13
14
|
* This file exports all the connection-related features for the F-Flow domain.
|
|
@@ -19,10 +20,11 @@ export const F_CONNECTION_FEATURES = [
|
|
|
19
20
|
AddSnapConnectionToStore,
|
|
20
21
|
CreateConnectionMarkers,
|
|
21
22
|
RedrawConnections,
|
|
23
|
+
ResolveConnectionEndpointRotationContext,
|
|
22
24
|
RemoveConnectionForCreateFromStore,
|
|
23
25
|
RemoveConnectionFromStore,
|
|
24
26
|
RemoveConnectionMarkerFromStore,
|
|
25
27
|
RemoveSnapConnectionFromStore,
|
|
26
28
|
RemoveConnectionWaypoint,
|
|
27
29
|
];
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9kb21haW4vZi1jb25uZWN0aW9uL3Byb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV4RTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0lBQ25DLDZCQUE2QjtJQUU3QiwwQkFBMEI7SUFFMUIsb0JBQW9CO0lBRXBCLHdCQUF3QjtJQUV4Qix1QkFBdUI7SUFFdkIsaUJBQWlCO0lBRWpCLHdDQUF3QztJQUV4QyxrQ0FBa0M7SUFFbEMseUJBQXlCO0lBRXpCLCtCQUErQjtJQUUvQiw2QkFBNkI7SUFFN0Isd0JBQXdCO0NBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDcmVhdGVDb25uZWN0aW9uTWFya2VycyB9IGZyb20gJy4vY3JlYXRlLWNvbm5lY3Rpb24tbWFya2Vycyc7XG5pbXBvcnQgeyBBZGRDb25uZWN0aW9uRm9yQ3JlYXRlVG9TdG9yZSB9IGZyb20gJy4vYWRkLWNvbm5lY3Rpb24tZm9yLWNyZWF0ZS10by1zdG9yZSc7XG5pbXBvcnQgeyBBZGRDb25uZWN0aW9uVG9TdG9yZSB9IGZyb20gJy4vYWRkLWNvbm5lY3Rpb24tdG8tc3RvcmUnO1xuaW1wb3J0IHsgQWRkU25hcENvbm5lY3Rpb25Ub1N0b3JlIH0gZnJvbSAnLi9hZGQtc25hcC1jb25uZWN0aW9uLXRvLXN0b3JlJztcbmltcG9ydCB7IFJlbW92ZUNvbm5lY3Rpb25Gb3JDcmVhdGVGcm9tU3RvcmUgfSBmcm9tICcuL3JlbW92ZS1jb25uZWN0aW9uLWZvci1jcmVhdGUtZnJvbS1zdG9yZSc7XG5pbXBvcnQgeyBSZW1vdmVDb25uZWN0aW9uRnJvbVN0b3JlIH0gZnJvbSAnLi9yZW1vdmUtY29ubmVjdGlvbi1mcm9tLXN0b3JlJztcbmltcG9ydCB7IFJlbW92ZVNuYXBDb25uZWN0aW9uRnJvbVN0b3JlIH0gZnJvbSAnLi9yZW1vdmUtc25hcC1jb25uZWN0aW9uLWZyb20tc3RvcmUnO1xuaW1wb3J0IHsgQWRkQ29ubmVjdGlvbk1hcmtlclRvU3RvcmUgfSBmcm9tICcuL2FkZC1jb25uZWN0aW9uLW1hcmtlci10by1zdG9yZSc7XG5pbXBvcnQgeyBSZW1vdmVDb25uZWN0aW9uTWFya2VyRnJvbVN0b3JlIH0gZnJvbSAnLi9yZW1vdmUtY29ubmVjdGlvbi1tYXJrZXItZnJvbS1zdG9yZSc7XG5pbXBvcnQgeyBSZWRyYXdDb25uZWN0aW9ucyB9IGZyb20gJy4vcmVkcmF3LWNvbm5lY3Rpb25zJztcbmltcG9ydCB7IFJlc29sdmVDb25uZWN0aW9uRW5kcG9pbnRSb3RhdGlvbkNvbnRleHQgfSBmcm9tICcuL3Jlc29sdmUtY29ubmVjdGlvbi1lbmRwb2ludC1yb3RhdGlvbi1jb250ZXh0JztcbmltcG9ydCB7IFJlbW92ZUNvbm5lY3Rpb25XYXlwb2ludCB9IGZyb20gJy4vcmVtb3ZlLWNvbm5lY3Rpb24td2F5cG9pbnQnO1xuXG4vKipcbiAqIFRoaXMgZmlsZSBleHBvcnRzIGFsbCB0aGUgY29ubmVjdGlvbi1yZWxhdGVkIGZlYXR1cmVzIGZvciB0aGUgRi1GbG93IGRvbWFpbi5cbiAqL1xuZXhwb3J0IGNvbnN0IEZfQ09OTkVDVElPTl9GRUFUVVJFUyA9IFtcbiAgQWRkQ29ubmVjdGlvbkZvckNyZWF0ZVRvU3RvcmUsXG5cbiAgQWRkQ29ubmVjdGlvbk1hcmtlclRvU3RvcmUsXG5cbiAgQWRkQ29ubmVjdGlvblRvU3RvcmUsXG5cbiAgQWRkU25hcENvbm5lY3Rpb25Ub1N0b3JlLFxuXG4gIENyZWF0ZUNvbm5lY3Rpb25NYXJrZXJzLFxuXG4gIFJlZHJhd0Nvbm5lY3Rpb25zLFxuXG4gIFJlc29sdmVDb25uZWN0aW9uRW5kcG9pbnRSb3RhdGlvbkNvbnRleHQsXG5cbiAgUmVtb3ZlQ29ubmVjdGlvbkZvckNyZWF0ZUZyb21TdG9yZSxcblxuICBSZW1vdmVDb25uZWN0aW9uRnJvbVN0b3JlLFxuXG4gIFJlbW92ZUNvbm5lY3Rpb25NYXJrZXJGcm9tU3RvcmUsXG5cbiAgUmVtb3ZlU25hcENvbm5lY3Rpb25Gcm9tU3RvcmUsXG5cbiAgUmVtb3ZlQ29ubmVjdGlvbldheXBvaW50LFxuXTtcbiJdfQ==
|