@rasamjs/connectors 0.1.0 → 0.3.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/API.md +72 -21
- package/CHANGELOG.md +36 -0
- package/README.md +14 -1
- package/RELEASING.md +12 -2
- package/dist/connectors.d.ts +17 -3
- package/dist/connectors.d.ts.map +1 -1
- package/dist/connectors.js +106 -27
- package/dist/connectors.js.map +1 -1
- package/dist/editor.d.ts +15 -1
- package/dist/editor.d.ts.map +1 -1
- package/dist/editor.js +20 -8
- package/dist/editor.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/metadata.d.ts +6 -2
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +28 -3
- package/dist/metadata.js.map +1 -1
- package/dist/routing.d.ts +5 -2
- package/dist/routing.d.ts.map +1 -1
- package/dist/routing.js +28 -8
- package/dist/routing.js.map +1 -1
- package/dist/tool.d.ts +4 -1
- package/dist/tool.d.ts.map +1 -1
- package/dist/tool.js +37 -16
- package/dist/tool.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +64 -63
- package/src/connectors.ts +132 -36
- package/src/editor.ts +31 -8
- package/src/index.ts +2 -0
- package/src/metadata.ts +30 -5
- package/src/routing.ts +35 -9
- package/src/tool.ts +47 -24
- package/src/types.ts +10 -0
package/API.md
CHANGED
|
@@ -6,19 +6,23 @@ connector option/state/geometry types. Optional `./tool` exports `ConnectorTool`
|
|
|
6
6
|
|
|
7
7
|
## Model and history
|
|
8
8
|
|
|
9
|
-
`new Connectors(drawing)` attaches one service to an owning SVG root. Existing saved
|
|
9
|
+
`new Connectors(drawing, options?)` attaches one service to an owning SVG root. Existing saved
|
|
10
10
|
connectors are validated without rewriting their stored geometry. No history recorder
|
|
11
11
|
is created; supply your own if needed.
|
|
12
12
|
|
|
13
13
|
`create(options)` returns an ordinary `Path` in one labelled core change group:
|
|
14
14
|
|
|
15
|
-
- `start`, `end`: `{ target, anchor? }` or `{ point: { x, y } }`.
|
|
16
|
-
units. Targets are transformable shapes/groups/viewports in the same drawing,
|
|
15
|
+
- `start`, `end`: `{ target, anchor? }`, `{ target, port }` or `{ point: { x, y } }`.
|
|
16
|
+
Free points use drawing units. Targets are transformable shapes/groups/viewports in the same drawing,
|
|
17
17
|
excluding the root, connectors and groups containing connectors.
|
|
18
18
|
- `anchor`: `auto` (default), `top`, `right`, `bottom`, `left`, or `{ x, y }` normalized
|
|
19
19
|
between 0 and 1 within the target's local geometric bounds. `{ x: 1, y: 0.5 }` is
|
|
20
20
|
right-center and follows resizing. Sides rotate with the target. Auto intersects the
|
|
21
21
|
ray toward the other endpoint with the local bounds rectangle.
|
|
22
|
+
- `port`: the name of one of the target's ports, read structurally from its
|
|
23
|
+
`portDefinitions` (core's `PortDefinition`), such as a component's `ports()`. The end
|
|
24
|
+
sits exactly on the port and leaves along the port's side, transformed with the
|
|
25
|
+
target; a port without a side has no lead. An unknown port rejects the edit.
|
|
22
26
|
- `routing`: `straight` (default) or `elbow`. Elbows use orthogonal drawing-space
|
|
23
27
|
segments with 16-unit outward leads. They do not avoid obstacles; close/opposing
|
|
24
28
|
anchors can produce backtracking. Curved routing and connector labels are deferred.
|
|
@@ -27,8 +31,9 @@ is created; supply your own if needed.
|
|
|
27
31
|
- `stroke`: nonempty SVG paint, default `#334155`; `strokeWidth`: finite nonnegative
|
|
28
32
|
number, default 2. Edit subsequent appearance through ordinary path APIs.
|
|
29
33
|
|
|
30
|
-
`nodes` is a frozen snapshot of current paths in document order. `
|
|
31
|
-
|
|
34
|
+
`nodes` is a frozen snapshot of current paths in document order. `links(target, port?)`
|
|
35
|
+
lists the connectors with an end on `target`, or only on its port named `port`, in
|
|
36
|
+
the same order. `read(path)` returns `{ path, start, end, routing }`. `update(path, { start?, end?, routing? })` changes a
|
|
32
37
|
connection in one labelled edit. `remove(path)` detaches it reversibly in one edit;
|
|
33
38
|
its marker resources remain available. Undoing creation also removes newly created
|
|
34
39
|
endpoint IDs and markers. Undo/redo retain path and endpoint identities.
|
|
@@ -39,10 +44,21 @@ operation/group, including ordinary setters, transformer gestures and transactio
|
|
|
39
44
|
Getter-only operations do not route. Replay and rollback restore saved path data
|
|
40
45
|
without recomputing it. Camera changes with source `viewport` do not route.
|
|
41
46
|
|
|
47
|
+
Only the connectors a change reaches are routed: those inside a changed subtree and
|
|
48
|
+
those attached to a changed node, its descendants or its ancestors. Attachments are
|
|
49
|
+
found through core's typed-reference index (`context.defs.consumersOf(target)`), so a
|
|
50
|
+
move costs about the same with 10 or 1,000 connectors in the drawing. `links()` uses the
|
|
51
|
+
same index. `bun run bench` measures 500 parts with 10 and 1,000 links
|
|
52
|
+
(`reports/benchmark.json`; `--revision=<commit>` measures older connector sources).
|
|
53
|
+
|
|
42
54
|
Geometry uses fill bounds, excluding strokes and clipping. Curved/irregular targets
|
|
43
55
|
use their bounds rectangle for automatic anchors. Empty/unavailable geometry or an
|
|
44
|
-
unmappable automatic anchor/path rejects creation/update.
|
|
45
|
-
|
|
56
|
+
unmappable automatic anchor/path rejects creation/update. When a target leaves the
|
|
57
|
+
drawing (removal, Delete, Cut, or removing a parent) or its port disappears (for
|
|
58
|
+
example after a prop change), that end becomes a loose point where the path ends now,
|
|
59
|
+
in the same operation and undo step, and the target is no longer referenced. Undo
|
|
60
|
+
restores the attachment. Existing paths retain their last geometry while targets are
|
|
61
|
+
unmappable.
|
|
46
62
|
A connector cannot be placed inside its own endpoint target, which would make routing
|
|
47
63
|
cyclic. Failed connector commands cancel partial edits. Caller setters follow core's
|
|
48
64
|
failure semantics; use a history transaction for rollback when dependent writes fail.
|
|
@@ -52,19 +68,47 @@ The service discovers imported/cloned paths at operation boundaries without regi
|
|
|
52
68
|
removing document paths. `onDispose(callback)` returns an unsubscribe function.
|
|
53
69
|
Drawing disposal destroys the service and its tools. Recreate for a replacement drawing.
|
|
54
70
|
|
|
71
|
+
## Custom routing
|
|
72
|
+
|
|
73
|
+
Since 0.3.0, `ConnectorsOptions.route?: ConnectorRouter` replaces built-in model routing for that
|
|
74
|
+
service. A `ConnectorRouter` receives `{ path, start, end, routing }` and returns at
|
|
75
|
+
least two finite `Point`s in drawing units, or `null`. Connectors converts the points
|
|
76
|
+
to path-local coordinates and writes the line segments in the triggering edit. The
|
|
77
|
+
callback can read application metadata on `path`; it must not mutate the drawing or
|
|
78
|
+
call connector commands. It receives loose endpoints after a target/port disappears.
|
|
79
|
+
|
|
80
|
+
Returning `null` retains an existing path's geometry during derived edits, without
|
|
81
|
+
falling back to built-in routing. It rejects explicit `create`/`update` commands and
|
|
82
|
+
cancels those commands' edits. Invalid results and callback exceptions propagate;
|
|
83
|
+
caller setters follow the core failure semantics described above. Custom routing
|
|
84
|
+
does not require endpoint bounds, though referenced targets must still be live.
|
|
85
|
+
|
|
86
|
+
The callback is not saved in SVG. Supply it again when creating a service after
|
|
87
|
+
loading; attachment and undo/redo preserve saved geometry without calling it.
|
|
88
|
+
`connectorEditing({ route, tools? })` passes the same policy to its service. The
|
|
89
|
+
optional `ConnectorTool`'s dashed gesture preview retains its built-in straight/elbow
|
|
90
|
+
appearance; applications can own their preview, as the circuit app does. Custom SVG
|
|
91
|
+
commands, obstacle avoidance and link-rendering classes are outside this API.
|
|
92
|
+
|
|
55
93
|
## Persistence
|
|
56
94
|
|
|
57
|
-
Versioned routing, anchors and free points live in `data-rasam-connector
|
|
95
|
+
Versioned routing, anchors, ports and free points live in `data-rasam-connector`
|
|
96
|
+
(version 1). A port end is saved as `{ "port": "b" }`; readers without port support
|
|
97
|
+
treat it as an automatic anchor on the same target. Attached
|
|
58
98
|
targets use typed href fragments in the reserved `data-rasam-connector-start` and
|
|
59
99
|
`data-rasam-connector-end` attributes. Core recognizes them during clone, export/import
|
|
60
100
|
and ID remapping. Markers use normal typed URL references. No custom catalog is needed.
|
|
61
101
|
|
|
62
102
|
Cloning a whole group rebinds copied connectors to copied endpoints. Cloning a path
|
|
63
|
-
alone shares its external endpoints/markers by default.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
103
|
+
alone shares its external endpoints/markers by default. Targets are links, not
|
|
104
|
+
resources: exporting, copying or duplicating a connector never copies the shapes it
|
|
105
|
+
joins into defs. Importing or pasting one whose target was left out turns that end into
|
|
106
|
+
a loose point where it was, and ends whose targets were copied along rebind to the
|
|
107
|
+
copies. A whole drawing retains visible shapes and attachments. Permanently destroying
|
|
108
|
+
a target that a connector still references is refused, as for any referenced node;
|
|
109
|
+
editor deletion uses reversible removal, which loosens those ends first. Connectors
|
|
110
|
+
0.2.0 requires core 0.3.0 or a compatible newer 0.3.x release. Earlier connector
|
|
111
|
+
versions do not provide the named-port or partial-copy behavior above.
|
|
68
112
|
|
|
69
113
|
## Geometry helpers
|
|
70
114
|
|
|
@@ -85,8 +129,13 @@ same routing/arrows/stroke/strokeWidth settings, plus:
|
|
|
85
129
|
- `onError(error)`: receives pointer/callback errors; otherwise errors propagate.
|
|
86
130
|
- `onExit()`: runs after Escape exits an idle enabled tool.
|
|
87
131
|
|
|
88
|
-
Hover shows four side hints, five overlay pixels in radius at every zoom.
|
|
89
|
-
|
|
132
|
+
Hover shows four side hints, five overlay pixels in radius at every zoom. A target with
|
|
133
|
+
ports, such as a component, shows its ports instead (`data-connector-port`). Press or
|
|
134
|
+
release within twelve client pixels of a hint to choose it, a side anchor or a
|
|
135
|
+
`{ target, port }` end; the chosen hint is filled (`data-connector-active`). Other
|
|
136
|
+
body presses use auto anchors. Hit testing never reports groups, so a hit that
|
|
137
|
+
`selectable` rejects, such as a component's rendered child, resolves to its nearest
|
|
138
|
+
accepted ancestor. Empty-space
|
|
90
139
|
presses/releases use free points. Previews never edit the document. Release creates one
|
|
91
140
|
labelled edit; coincident endpoints create nothing. The tool stays enabled so the app
|
|
92
141
|
can choose keep-tool behavior.
|
|
@@ -100,13 +149,15 @@ switching other application modes.
|
|
|
100
149
|
|
|
101
150
|
## Editor integration entry
|
|
102
151
|
|
|
103
|
-
`@rasamjs/connectors/editor` exports `connectorEditing()`, a structural extension
|
|
152
|
+
`@rasamjs/connectors/editor` exports `connectorEditing(options?)`, a structural extension
|
|
104
153
|
factory. Its value is the current `Connectors` service. It registers
|
|
105
|
-
`connector-straight` (C) and `connector-elbow` (Shift+C),
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
154
|
+
`connector-straight` (C) and `connector-elbow` (Shift+C), or the `tools` you pass:
|
|
155
|
+
`ConnectorEditingTool` entries `{ id, label, key, routing?, arrows?, hint? }`, for
|
|
156
|
+
example `{ id: 'wire', label: 'Wire', key: 'W', routing: 'elbow', arrows: 'none' }`.
|
|
157
|
+
Each tool has a matching command ID and active-tool metadata, current selection/layer
|
|
158
|
+
restrictions, paint, keep-tool and camera/capture cleanup. Escape cancels a drag first
|
|
159
|
+
and exits an idle tool; document replacement, editing/dialog actions, tool changes and
|
|
160
|
+
disposal interrupt sessions. Read-only camera commands retain an idle connector mode.
|
|
110
161
|
|
|
111
162
|
`ConnectorTool.paint` reads an immutable `{ stroke, strokeWidth }` snapshot and
|
|
112
163
|
accepts a validated replacement. Updates repaint an active preview and apply to
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,42 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.3.0 — 2026-11-07
|
|
6
|
+
|
|
7
|
+
- Add `new Connectors(drawing, { route })` and `connectorEditing({ route })` for an
|
|
8
|
+
application-owned polyline router. Returned drawing-space points replace the
|
|
9
|
+
built-in route; null retains imported geometry for diagnostics. The callback is
|
|
10
|
+
not serialized or called on service attachment, replay or viewport changes.
|
|
11
|
+
- Circuit app now supplies its grid router directly, removing the second routing
|
|
12
|
+
pass during edits and live component paints.
|
|
13
|
+
|
|
14
|
+
## 0.2.0 — 2026-11-07
|
|
15
|
+
|
|
16
|
+
- Ignore disposed derived children when finding affected links during component
|
|
17
|
+
hydration, so copying and pasting rendered components keeps its undo step.
|
|
18
|
+
- Attach ends to named ports with `{ target, port }`, read structurally from
|
|
19
|
+
`portDefinitions` such as a component's `ports()`. Port ends sit exactly on the port,
|
|
20
|
+
lead out along its side and save as `{ "port": "b" }` in version 1 metadata.
|
|
21
|
+
- When a target leaves the drawing or its port disappears, that end becomes a loose
|
|
22
|
+
point where it was, in the same undo step; undo reattaches it. Deleted targets are no
|
|
23
|
+
longer saved as hidden dependencies in `<defs>`.
|
|
24
|
+
- Copying or pasting a connector without its targets pastes loose ends instead of
|
|
25
|
+
hidden copies of the targets.
|
|
26
|
+
- Add `links(target, port?)`.
|
|
27
|
+
- Route only the connectors a change reaches, found through core's reference index:
|
|
28
|
+
with 500 parts, moving one part 100 times takes 20 ms with 1,000 links (1,726 ms
|
|
29
|
+
before) and 15 ms with 10 links. Creating 1,000 links takes 1.1 s instead of 11.2 s.
|
|
30
|
+
Add `bun run bench`.
|
|
31
|
+
- The tool shows a target's ports instead of its side hints, snaps to the nearest one
|
|
32
|
+
within twelve client pixels, fills the chosen hint, and resolves a rejected hit (such
|
|
33
|
+
as a component's rendered child) to its nearest accepted ancestor.
|
|
34
|
+
- `connectorEditing({ tools })` registers custom tools, such as a Wire tool with elbow
|
|
35
|
+
routing and no arrows, in place of Connector and Elbow connector.
|
|
36
|
+
- TypeScript: `ConnectorEndpoint` has a third, port variant. Narrow with
|
|
37
|
+
`'anchor' in endpoint` before reading `anchor`.
|
|
38
|
+
|
|
39
|
+
## 0.1.0 — 2026-11-06
|
|
40
|
+
|
|
5
41
|
- Add `./editor` connector integration with registered tool metadata, live paint,
|
|
6
42
|
keep-tool and scoped camera/input cleanup. Add `ConnectorTool.paint` for preview updates.
|
|
7
43
|
|
package/README.md
CHANGED
|
@@ -4,7 +4,15 @@ The optional [editor adapter](API.md#editor-integration-entry) packages connecto
|
|
|
4
4
|
services and registered straight/elbow tools, including live paint and input cleanup.
|
|
5
5
|
|
|
6
6
|
Attached straight and elbow lines and marker arrows for rasam SVG drawings. Core is
|
|
7
|
-
the only runtime peer.
|
|
7
|
+
the only runtime peer. Version 0.3.0 requires `@rasamjs/core@^0.3.0` for named ports,
|
|
8
|
+
loose-end persistence and indexed routing. Source manifests stay private between releases.
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
npm install @rasamjs/core@^0.3.0 @rasamjs/connectors@^0.3.0
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
The [custom routing option](API.md#custom-routing), added in 0.3.0,
|
|
15
|
+
lets an app supply its own polyline routing without a second path write.
|
|
8
16
|
|
|
9
17
|
```ts
|
|
10
18
|
import { SVG } from '@rasamjs/core';
|
|
@@ -24,6 +32,10 @@ const tool = new ConnectorTool(connectors, { routing: 'straight' });
|
|
|
24
32
|
tool.enabled = true;
|
|
25
33
|
```
|
|
26
34
|
|
|
35
|
+
Ends can also attach to a component's named ports, `{ target: chip, port: 'p3' }`, and
|
|
36
|
+
`connectors.links(chip)` lists the connectors on it. Deleting a target keeps its
|
|
37
|
+
connectors, with a loose end where it was.
|
|
38
|
+
|
|
27
39
|
Moving or resizing an endpoint, or its parent, updates the connector inside the same
|
|
28
40
|
model operation and change group. History records one undo step for a move and all
|
|
29
41
|
its attached lines. Replay restores stored geometry without routing again.
|
|
@@ -42,4 +54,5 @@ bun run --cwd packages/connectors test
|
|
|
42
54
|
bun run --cwd packages/connectors test:browser
|
|
43
55
|
bun run --cwd packages/connectors typecheck
|
|
44
56
|
bun run --cwd packages/connectors build
|
|
57
|
+
bun run --cwd packages/connectors bench
|
|
45
58
|
```
|
package/RELEASING.md
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
# Releasing connectors
|
|
2
2
|
|
|
3
|
-
The
|
|
4
|
-
|
|
3
|
+
The source manifest stays private between releases. Version 0.3.0 is paired with
|
|
4
|
+
core 0.3.0 and adds the custom-routing callback used by the circuit app.
|
|
5
|
+
The owner authorized release preparation, publication and pushing on 2026-11-07.
|
|
6
|
+
Existing approved size caps stay unchanged.
|
|
7
|
+
|
|
8
|
+
Core 0.3.0 and connectors 0.2.0 were published from `917c9df`; their registry
|
|
9
|
+
integrities and exact-tarball consumer validation are recorded in
|
|
10
|
+
[`reports/publication-0.2.0.json`](reports/publication-0.2.0.json). The 0.2.0
|
|
11
|
+
readiness report describes that published baseline. The owner requested
|
|
12
|
+
continuation of the custom-routing release on 2026-11-07. Validate 0.3.0 with a fresh
|
|
13
|
+
release gate and test its exact public tarball against published core 0.3.0 before
|
|
14
|
+
publication. Keep the existing source publication guard.
|
|
5
15
|
|
|
6
16
|
Run scoped format, typecheck, unit, build, API, docs, browser, consumer and size checks.
|
|
7
17
|
Run `api:update` only after reviewing the API diff. The root's 5 KiB gzip and optional
|
package/dist/connectors.d.ts
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { Path } from '@rasamjs/core';
|
|
2
2
|
import type { Svg } from '@rasamjs/core';
|
|
3
|
-
import type { ConnectorOptions, ConnectorState } from './types.js';
|
|
3
|
+
import type { ConnectorOptions, ConnectorState, ConnectorTarget, ConnectorsOptions } from './types.js';
|
|
4
4
|
export declare class Connectors {
|
|
5
5
|
readonly drawing: Svg;
|
|
6
6
|
private disposed;
|
|
7
7
|
private readonly cleanups;
|
|
8
8
|
private readonly disposals;
|
|
9
|
-
|
|
9
|
+
private router?;
|
|
10
|
+
constructor(drawing: Svg, options?: ConnectorsOptions);
|
|
10
11
|
get isDestroyed(): boolean;
|
|
11
12
|
onDispose(listener: () => void): () => void;
|
|
12
13
|
get nodes(): readonly Path[];
|
|
13
14
|
read(path: Path): ConnectorState;
|
|
15
|
+
/** Connectors with an end on `target`, or only on its port named `port`. */
|
|
16
|
+
links(target: ConnectorTarget, port?: string): readonly Path[];
|
|
14
17
|
create(options: ConnectorOptions): Path;
|
|
15
18
|
update(path: Path, patch: Partial<Pick<ConnectorOptions, 'start' | 'end' | 'routing'>>): void;
|
|
16
19
|
remove(path: Path): void;
|
|
@@ -19,8 +22,19 @@ export declare class Connectors {
|
|
|
19
22
|
private assertPath;
|
|
20
23
|
private validate;
|
|
21
24
|
private validateEndpoint;
|
|
22
|
-
|
|
25
|
+
/** An end whose target left the drawing, or whose port is gone, stays where it is. */
|
|
26
|
+
private loosen;
|
|
27
|
+
/** Connectors in this drawing with an end on `target`, from core's reference index. */
|
|
28
|
+
private attached;
|
|
29
|
+
/**
|
|
30
|
+
* Connectors to route after a change: those inside a changed subtree, and those attached
|
|
31
|
+
* to a changed node, its descendants or its ancestors, since parents move, resize or
|
|
32
|
+
* reparent targets and a descendant changes a group's bounds. The work follows the
|
|
33
|
+
* size of the change, not the number of connectors.
|
|
34
|
+
*/
|
|
35
|
+
private affected;
|
|
23
36
|
private route;
|
|
37
|
+
private defaultRoute;
|
|
24
38
|
private edit;
|
|
25
39
|
}
|
|
26
40
|
//# sourceMappingURL=connectors.d.ts.map
|
package/dist/connectors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectors.d.ts","sourceRoot":"","sources":["../src/connectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"connectors.d.ts","sourceRoot":"","sources":["../src/connectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,KAAK,EAAE,GAAG,EAAkB,MAAM,eAAe,CAAC;AAoBzD,OAAO,KAAK,EAEV,gBAAgB,EAChB,cAAc,EACd,eAAe,EAEf,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAkBpB,qBAAa,UAAU;IAMnB,QAAQ,CAAC,OAAO,EAAE,GAAG;IALvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,MAAM,CAAC,CAAkB;IACjC,YACW,OAAO,EAAE,GAAG,EACrB,OAAO,GAAE,iBAAsB,EAiChC;IACD,IAAI,WAAW,IAAI,OAAO,CAEzB;IACD,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAO1C;IACD,IAAI,KAAK,IAAI,SAAS,IAAI,EAAE,CAG3B;IACD,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,CAG/B;IACD,4EAA4E;IAC5E,KAAK,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,IAAI,EAAE,CAiB7D;IACD,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAgCtC;IACD,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,CAS5F;IACD,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAGvB;IACD,OAAO,IAAI,IAAI,CAed;IACD,OAAO,CAAC,UAAU;IAGlB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,gBAAgB;IA2BxB,sFAAsF;IACtF,OAAO,CAAC,MAAM;IAgBd,uFAAuF;IACvF,OAAO,CAAC,QAAQ;IAYhB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,KAAK;IAsBb,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,IAAI;CAgBb"}
|
package/dist/connectors.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Path } from '@rasamjs/core';
|
|
2
2
|
import { Guards } from '@rasamjs/core/advanced';
|
|
3
3
|
import { beginChangeGroup, deriveChanges } from '@rasamjs/core/changes';
|
|
4
|
-
import { isConnector, readConnector, writeConnector } from './metadata.js';
|
|
5
|
-
import { connectorPort, endpointCenter, pathData, routeConnector, validateAnchor, validatePoint, } from './routing.js';
|
|
4
|
+
import { endpointAttribute, isConnector, pathEnd, readConnector, unbound, writeConnector, } from './metadata.js';
|
|
5
|
+
import { connectorPort, endpointCenter, findPort, pathData, routeConnector, validateAnchor, validatePoint, } from './routing.js';
|
|
6
6
|
const owners = new WeakMap();
|
|
7
7
|
const drawableTags = new Set([
|
|
8
8
|
'rect',
|
|
@@ -24,7 +24,8 @@ export class Connectors {
|
|
|
24
24
|
disposed = false;
|
|
25
25
|
cleanups = [];
|
|
26
26
|
disposals = new Set();
|
|
27
|
-
|
|
27
|
+
router;
|
|
28
|
+
constructor(drawing, options = {}) {
|
|
28
29
|
this.drawing = drawing;
|
|
29
30
|
if (!Guards.isTransformable(drawing) ||
|
|
30
31
|
drawing.isDestroyed ||
|
|
@@ -33,16 +34,23 @@ export class Connectors {
|
|
|
33
34
|
throw new TypeError('Connectors needs a live SVG drawing root');
|
|
34
35
|
if (owners.has(drawing))
|
|
35
36
|
throw new Error('Connectors is already attached to this drawing');
|
|
37
|
+
if (!options ||
|
|
38
|
+
typeof options !== 'object' ||
|
|
39
|
+
(options.route !== undefined && typeof options.route !== 'function'))
|
|
40
|
+
throw new TypeError('Connector route must be a function');
|
|
41
|
+
this.router = options.route;
|
|
36
42
|
// Validate saved attachments without changing stored routing during attachment or replay.
|
|
37
43
|
this.nodes.forEach(readConnector);
|
|
38
44
|
owners.set(drawing, this);
|
|
39
45
|
this.cleanups.push(deriveChanges(drawing, (event) => {
|
|
40
46
|
if (event.source === 'viewport')
|
|
41
47
|
return;
|
|
42
|
-
for (const path of this.nodes) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
for (const path of this.affected(event.nodes)) {
|
|
49
|
+
let state = readConnector(path);
|
|
50
|
+
const loose = this.loosen(state);
|
|
51
|
+
if (loose !== state || unbound.has(state.start) || unbound.has(state.end))
|
|
52
|
+
writeConnector(path, (state = loose));
|
|
53
|
+
this.route(state);
|
|
46
54
|
}
|
|
47
55
|
}), drawing.onDispose(() => this.destroy()));
|
|
48
56
|
}
|
|
@@ -66,6 +74,20 @@ export class Connectors {
|
|
|
66
74
|
this.assertPath(path);
|
|
67
75
|
return readConnector(path);
|
|
68
76
|
}
|
|
77
|
+
/** Connectors with an end on `target`, or only on its port named `port`. */
|
|
78
|
+
links(target, port) {
|
|
79
|
+
this.assertLive();
|
|
80
|
+
if (port !== undefined && (typeof port !== 'string' || !port))
|
|
81
|
+
throw new TypeError('Port names must be non-empty strings');
|
|
82
|
+
return Object.freeze(this.attached(target)
|
|
83
|
+
.filter((path) => {
|
|
84
|
+
const { start, end } = readConnector(path);
|
|
85
|
+
return [start, end].some((endpoint) => 'target' in endpoint &&
|
|
86
|
+
endpoint.target === target &&
|
|
87
|
+
(port === undefined || ('port' in endpoint && endpoint.port === port)));
|
|
88
|
+
})
|
|
89
|
+
.sort((a, b) => (a.el.compareDocumentPosition(b.el) & 4 ? -1 : 1)));
|
|
90
|
+
}
|
|
69
91
|
create(options) {
|
|
70
92
|
this.assertLive();
|
|
71
93
|
this.validate(options);
|
|
@@ -96,7 +118,7 @@ export class Connectors {
|
|
|
96
118
|
path.marker('start', marker);
|
|
97
119
|
}
|
|
98
120
|
if (!this.route(readConnector(path)))
|
|
99
|
-
throw new Error('Connector
|
|
121
|
+
throw new Error('Connector route is unavailable or its transform is not invertible');
|
|
100
122
|
return path;
|
|
101
123
|
});
|
|
102
124
|
}
|
|
@@ -107,7 +129,7 @@ export class Connectors {
|
|
|
107
129
|
this.edit('Edit connector', () => {
|
|
108
130
|
writeConnector(path, state);
|
|
109
131
|
if (!this.route(state))
|
|
110
|
-
throw new Error('Connector
|
|
132
|
+
throw new Error('Connector route is unavailable or its transform is not invertible');
|
|
111
133
|
});
|
|
112
134
|
}
|
|
113
135
|
remove(path) {
|
|
@@ -118,6 +140,7 @@ export class Connectors {
|
|
|
118
140
|
if (this.disposed)
|
|
119
141
|
return;
|
|
120
142
|
this.disposed = true;
|
|
143
|
+
this.router = undefined;
|
|
121
144
|
owners.delete(this.drawing);
|
|
122
145
|
const failures = [];
|
|
123
146
|
for (const stop of [...this.cleanups.splice(0).reverse(), ...this.disposals]) {
|
|
@@ -141,7 +164,7 @@ export class Connectors {
|
|
|
141
164
|
if (!isConnector(path) ||
|
|
142
165
|
path.isDestroyed ||
|
|
143
166
|
path.context !== this.drawing.context ||
|
|
144
|
-
!this.drawing.
|
|
167
|
+
!this.drawing.el.contains(path.el))
|
|
145
168
|
throw new TypeError('Expected a connector in this drawing');
|
|
146
169
|
}
|
|
147
170
|
validate(options) {
|
|
@@ -172,43 +195,99 @@ export class Connectors {
|
|
|
172
195
|
target.isDestroyed ||
|
|
173
196
|
target === this.drawing ||
|
|
174
197
|
target.context !== this.drawing.context ||
|
|
175
|
-
!this.drawing.
|
|
198
|
+
!this.drawing.el.contains(target.el) ||
|
|
176
199
|
target.descendants().some(isConnector))
|
|
177
200
|
throw new TypeError('Endpoint target must be a drawable shape without connectors in this drawing');
|
|
178
201
|
for (let node = target; node && node !== this.drawing; node = node.parent)
|
|
179
202
|
if (!drawableTags.has(node.el.localName))
|
|
180
203
|
throw new TypeError('Connector targets cannot be inside definitions');
|
|
181
|
-
|
|
204
|
+
if (!('port' in endpoint))
|
|
205
|
+
return validateAnchor(endpoint.anchor ?? 'auto');
|
|
206
|
+
if ('anchor' in endpoint)
|
|
207
|
+
throw new TypeError('Endpoint needs either a port or an anchor');
|
|
208
|
+
if (typeof endpoint.port !== 'string' || !findPort(target, endpoint.port))
|
|
209
|
+
throw new TypeError(`Unknown connector port: ${String(endpoint.port)}`);
|
|
210
|
+
}
|
|
211
|
+
/** An end whose target left the drawing, or whose port is gone, stays where it is. */
|
|
212
|
+
loosen(state) {
|
|
213
|
+
const loose = (end) => {
|
|
214
|
+
const endpoint = state[end];
|
|
215
|
+
if ('point' in endpoint)
|
|
216
|
+
return endpoint;
|
|
217
|
+
const { target } = endpoint;
|
|
218
|
+
const gone = target.isDestroyed ||
|
|
219
|
+
!this.drawing.el.contains(target.el) ||
|
|
220
|
+
('port' in endpoint && !findPort(target, endpoint.port));
|
|
221
|
+
const point = gone && pathEnd(state.path, end);
|
|
222
|
+
return point ? { point } : endpoint;
|
|
223
|
+
};
|
|
224
|
+
const start = loose('start'), end = loose('end');
|
|
225
|
+
return start === state.start && end === state.end ? state : { ...state, start, end };
|
|
182
226
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
return
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
227
|
+
/** Connectors in this drawing with an end on `target`, from core's reference index. */
|
|
228
|
+
attached(target) {
|
|
229
|
+
return this.drawing.context.defs
|
|
230
|
+
.consumersOf(target)
|
|
231
|
+
.filter((node) => isConnector(node) &&
|
|
232
|
+
this.drawing.el.contains(node.el) &&
|
|
233
|
+
['start', 'end'].some((end) => node.references.get(endpointAttribute(end)) === target));
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Connectors to route after a change: those inside a changed subtree, and those attached
|
|
237
|
+
* to a changed node, its descendants or its ancestors, since parents move, resize or
|
|
238
|
+
* reparent targets and a descendant changes a group's bounds. The work follows the
|
|
239
|
+
* size of the change, not the number of connectors.
|
|
240
|
+
*/
|
|
241
|
+
affected(changed) {
|
|
242
|
+
const paths = new Set(), seen = new Set();
|
|
243
|
+
const visit = (node) => {
|
|
244
|
+
if (node.isDestroyed || seen.has(node))
|
|
245
|
+
return;
|
|
246
|
+
seen.add(node);
|
|
247
|
+
if (isConnector(node) && this.drawing.el.contains(node.el))
|
|
248
|
+
paths.add(node);
|
|
249
|
+
for (const path of this.attached(node))
|
|
250
|
+
paths.add(path);
|
|
251
|
+
};
|
|
252
|
+
for (const node of changed) {
|
|
253
|
+
node.descendants().forEach(visit);
|
|
254
|
+
for (let parent = node.parent; parent; parent = parent.parent)
|
|
255
|
+
visit(parent);
|
|
256
|
+
}
|
|
257
|
+
return paths;
|
|
191
258
|
}
|
|
192
259
|
route(state) {
|
|
193
260
|
const { path, start, end } = state;
|
|
194
261
|
for (const endpoint of [start, end])
|
|
195
262
|
if ('target' in endpoint) {
|
|
196
|
-
if (endpoint.target.isDestroyed || !this.drawing.
|
|
263
|
+
if (endpoint.target.isDestroyed || !this.drawing.el.contains(endpoint.target.el))
|
|
197
264
|
return false;
|
|
198
|
-
if (endpoint.target.
|
|
265
|
+
if (endpoint.target.el.contains(path.el))
|
|
199
266
|
throw new TypeError('A connector cannot be inside its endpoint target');
|
|
200
267
|
}
|
|
201
|
-
const a = endpointCenter(start), b = endpointCenter(end);
|
|
202
|
-
const from = a && b ? connectorPort(start, b) : null;
|
|
203
|
-
const to = a && b ? connectorPort(end, a) : null;
|
|
204
268
|
const inverse = path.worldMatrix().inverse();
|
|
205
|
-
if (!
|
|
269
|
+
if (!inverse)
|
|
270
|
+
return false;
|
|
271
|
+
const points = this.router ? this.router(state) : this.defaultRoute(state);
|
|
272
|
+
if (points === null)
|
|
206
273
|
return false;
|
|
207
|
-
|
|
274
|
+
if (!Array.isArray(points) || points.length < 2)
|
|
275
|
+
throw new TypeError('Connector route must return at least two finite points or null');
|
|
276
|
+
for (const point of points)
|
|
277
|
+
validatePoint(point);
|
|
278
|
+
const local = points.map((point) => inverse.apply(point));
|
|
279
|
+
local.forEach((point) => validatePoint(point));
|
|
280
|
+
const d = pathData(local);
|
|
208
281
|
if (path.getAttributeValue('d') !== d)
|
|
209
282
|
path.attrs({ d });
|
|
210
283
|
return true;
|
|
211
284
|
}
|
|
285
|
+
defaultRoute({ start, end, routing }) {
|
|
286
|
+
const a = endpointCenter(start), b = endpointCenter(end);
|
|
287
|
+
const from = a && b ? connectorPort(start, b) : null;
|
|
288
|
+
const to = a && b ? connectorPort(end, a) : null;
|
|
289
|
+
return from && to ? routeConnector({ start: from, end: to, routing }) : null;
|
|
290
|
+
}
|
|
212
291
|
edit(label, run) {
|
|
213
292
|
const group = beginChangeGroup(this.drawing, { source: 'connectors', label });
|
|
214
293
|
let result;
|
package/dist/connectors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectors.js","sourceRoot":"","sources":["../src/connectors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connectors.js","sourceRoot":"","sources":["../src/connectors.ts"],"names":[],"mappings":"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"}
|
package/dist/editor.d.ts
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import type { AnyNode, Svg } from '@rasamjs/core';
|
|
2
2
|
import { Connectors } from './connectors.js';
|
|
3
|
+
import type { ConnectorOptions, ConnectorsOptions } from './types.js';
|
|
4
|
+
/** One registered connector tool; its id is also its command id. */
|
|
5
|
+
export interface ConnectorEditingTool extends Pick<ConnectorOptions, 'routing' | 'arrows'> {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly label: string;
|
|
8
|
+
readonly key: string;
|
|
9
|
+
readonly hint?: string;
|
|
10
|
+
}
|
|
3
11
|
export interface ConnectorScope {
|
|
4
12
|
readonly drawing: Svg;
|
|
5
13
|
readonly editor: {
|
|
@@ -35,7 +43,13 @@ export interface ConnectorScope {
|
|
|
35
43
|
created(node: AnyNode): void;
|
|
36
44
|
exit(): void;
|
|
37
45
|
}
|
|
38
|
-
|
|
46
|
+
/**
|
|
47
|
+
* The connectors service and its tools. `tools` replaces the default Connector (`C`)
|
|
48
|
+
* and Elbow connector (`Shift+C`), for example with a Wire tool without arrows.
|
|
49
|
+
*/
|
|
50
|
+
export declare function connectorEditing(options?: ConnectorsOptions & {
|
|
51
|
+
readonly tools?: readonly ConnectorEditingTool[];
|
|
52
|
+
}): {
|
|
39
53
|
id: string;
|
|
40
54
|
create(scope: ConnectorScope): Connectors;
|
|
41
55
|
};
|
package/dist/editor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE,oEAAoE;AACpE,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,gBAAgB,EAAE,SAAS,GAAG,QAAQ,CAAC;IACxF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,KAAK,EAAE;YAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1E,QAAQ,CAAC,SAAS,EAAE;YAAE,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAA;SAAE,CAAC;QAC1D,QAAQ,CAAC,MAAM,EAAE;YAAE,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAA;SAAE,CAAC;QAC1D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;KAC5C,CAAC;IACF,GAAG,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,IAAI,CAAA;KAAE,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC;IAC5D,YAAY,CAAC,UAAU,EAAE;QACvB,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG;YAAE,OAAO,IAAI,IAAI,CAAC;YAAC,GAAG,CAAC,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAA;SAAE,CAAC;KAC3F,GAAG,MAAM,IAAI,CAAC;IACf,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACpC,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACzD,OAAO,IAAI,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC7B,IAAI,IAAI,IAAI,CAAC;CACd;AACD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,iBAAiB,GAAG;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAA;CAAO;IAKpF,EAAE;IACF,MAAM,QAAQ,cAAc;EAqD/B"}
|