@rasamjs/connectors 0.2.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 +23 -1
- package/CHANGELOG.md +9 -0
- package/README.md +5 -2
- package/RELEASING.md +10 -2
- package/dist/connectors.d.ts +4 -2
- package/dist/connectors.d.ts.map +1 -1
- package/dist/connectors.js +27 -8
- package/dist/connectors.js.map +1 -1
- package/dist/editor.d.ts +2 -2
- package/dist/editor.d.ts.map +1 -1
- package/dist/editor.js +1 -1
- package/dist/editor.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/connectors.ts +33 -13
- package/src/editor.ts +3 -3
- package/src/index.ts +2 -0
- package/src/types.ts +5 -0
package/API.md
CHANGED
|
@@ -6,7 +6,7 @@ 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
|
|
|
@@ -68,6 +68,28 @@ The service discovers imported/cloned paths at operation boundaries without regi
|
|
|
68
68
|
removing document paths. `onDispose(callback)` returns an unsubscribe function.
|
|
69
69
|
Drawing disposal destroys the service and its tools. Recreate for a replacement drawing.
|
|
70
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
|
+
|
|
71
93
|
## Persistence
|
|
72
94
|
|
|
73
95
|
Versioned routing, anchors, ports and free points live in `data-rasam-connector`
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
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
|
+
|
|
5
14
|
## 0.2.0 — 2026-11-07
|
|
6
15
|
|
|
7
16
|
- Ignore disposed derived children when finding affected links during component
|
package/README.md
CHANGED
|
@@ -4,13 +4,16 @@ 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. Version 0.
|
|
7
|
+
the only runtime peer. Version 0.3.0 requires `@rasamjs/core@^0.3.0` for named ports,
|
|
8
8
|
loose-end persistence and indexed routing. Source manifests stay private between releases.
|
|
9
9
|
|
|
10
10
|
```sh
|
|
11
|
-
npm install @rasamjs/core@^0.3.0 @rasamjs/connectors@^0.
|
|
11
|
+
npm install @rasamjs/core@^0.3.0 @rasamjs/connectors@^0.3.0
|
|
12
12
|
```
|
|
13
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.
|
|
16
|
+
|
|
14
17
|
```ts
|
|
15
18
|
import { SVG } from '@rasamjs/core';
|
|
16
19
|
import { Connectors } from '@rasamjs/connectors';
|
package/RELEASING.md
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
# Releasing connectors
|
|
2
2
|
|
|
3
|
-
The source manifest stays private between releases. Version 0.
|
|
4
|
-
core 0.3.0 and adds
|
|
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
5
|
The owner authorized release preparation, publication and pushing on 2026-11-07.
|
|
6
6
|
Existing approved size caps stay unchanged.
|
|
7
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.
|
|
15
|
+
|
|
8
16
|
Run scoped format, typecheck, unit, build, API, docs, browser, consumer and size checks.
|
|
9
17
|
Run `api:update` only after reviewing the API diff. The root's 5 KiB gzip and optional
|
|
10
18
|
tool's 4 KiB budgets keep core external and UI code isolated from the model entry.
|
package/dist/connectors.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Path } from '@rasamjs/core';
|
|
2
2
|
import type { Svg } from '@rasamjs/core';
|
|
3
|
-
import type { ConnectorOptions, ConnectorState, ConnectorTarget } 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[];
|
|
@@ -33,6 +34,7 @@ export declare class Connectors {
|
|
|
33
34
|
*/
|
|
34
35
|
private affected;
|
|
35
36
|
private route;
|
|
37
|
+
private defaultRoute;
|
|
36
38
|
private edit;
|
|
37
39
|
}
|
|
38
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
|
@@ -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,6 +34,11 @@ 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);
|
|
@@ -112,7 +118,7 @@ export class Connectors {
|
|
|
112
118
|
path.marker('start', marker);
|
|
113
119
|
}
|
|
114
120
|
if (!this.route(readConnector(path)))
|
|
115
|
-
throw new Error('Connector
|
|
121
|
+
throw new Error('Connector route is unavailable or its transform is not invertible');
|
|
116
122
|
return path;
|
|
117
123
|
});
|
|
118
124
|
}
|
|
@@ -123,7 +129,7 @@ export class Connectors {
|
|
|
123
129
|
this.edit('Edit connector', () => {
|
|
124
130
|
writeConnector(path, state);
|
|
125
131
|
if (!this.route(state))
|
|
126
|
-
throw new Error('Connector
|
|
132
|
+
throw new Error('Connector route is unavailable or its transform is not invertible');
|
|
127
133
|
});
|
|
128
134
|
}
|
|
129
135
|
remove(path) {
|
|
@@ -134,6 +140,7 @@ export class Connectors {
|
|
|
134
140
|
if (this.disposed)
|
|
135
141
|
return;
|
|
136
142
|
this.disposed = true;
|
|
143
|
+
this.router = undefined;
|
|
137
144
|
owners.delete(this.drawing);
|
|
138
145
|
const failures = [];
|
|
139
146
|
for (const stop of [...this.cleanups.splice(0).reverse(), ...this.disposals]) {
|
|
@@ -258,17 +265,29 @@ export class Connectors {
|
|
|
258
265
|
if (endpoint.target.el.contains(path.el))
|
|
259
266
|
throw new TypeError('A connector cannot be inside its endpoint target');
|
|
260
267
|
}
|
|
261
|
-
const a = endpointCenter(start), b = endpointCenter(end);
|
|
262
|
-
const from = a && b ? connectorPort(start, b) : null;
|
|
263
|
-
const to = a && b ? connectorPort(end, a) : null;
|
|
264
268
|
const inverse = path.worldMatrix().inverse();
|
|
265
|
-
if (!
|
|
269
|
+
if (!inverse)
|
|
270
|
+
return false;
|
|
271
|
+
const points = this.router ? this.router(state) : this.defaultRoute(state);
|
|
272
|
+
if (points === null)
|
|
266
273
|
return false;
|
|
267
|
-
|
|
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);
|
|
268
281
|
if (path.getAttributeValue('d') !== d)
|
|
269
282
|
path.attrs({ d });
|
|
270
283
|
return true;
|
|
271
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
|
+
}
|
|
272
291
|
edit(label, run) {
|
|
273
292
|
const group = beginChangeGroup(this.drawing, { source: 'connectors', label });
|
|
274
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,6 +1,6 @@
|
|
|
1
1
|
import type { AnyNode, Svg } from '@rasamjs/core';
|
|
2
2
|
import { Connectors } from './connectors.js';
|
|
3
|
-
import type { ConnectorOptions } from './types.js';
|
|
3
|
+
import type { ConnectorOptions, ConnectorsOptions } from './types.js';
|
|
4
4
|
/** One registered connector tool; its id is also its command id. */
|
|
5
5
|
export interface ConnectorEditingTool extends Pick<ConnectorOptions, 'routing' | 'arrows'> {
|
|
6
6
|
readonly id: string;
|
|
@@ -47,7 +47,7 @@ export interface ConnectorScope {
|
|
|
47
47
|
* The connectors service and its tools. `tools` replaces the default Connector (`C`)
|
|
48
48
|
* and Elbow connector (`Shift+C`), for example with a Wire tool without arrows.
|
|
49
49
|
*/
|
|
50
|
-
export declare function connectorEditing(options?: {
|
|
50
|
+
export declare function connectorEditing(options?: ConnectorsOptions & {
|
|
51
51
|
readonly tools?: readonly ConnectorEditingTool[];
|
|
52
52
|
}): {
|
|
53
53
|
id: string;
|
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;AAE7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,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"}
|
package/dist/editor.js
CHANGED
|
@@ -15,7 +15,7 @@ export function connectorEditing(options = {}) {
|
|
|
15
15
|
return {
|
|
16
16
|
id: 'connectors',
|
|
17
17
|
create(scope) {
|
|
18
|
-
const service = scope.use(new Connectors(scope.drawing));
|
|
18
|
+
const service = scope.use(new Connectors(scope.drawing, options));
|
|
19
19
|
for (const { id, label, key, routing = 'straight', arrows, hint } of tools)
|
|
20
20
|
scope.registerTool({
|
|
21
21
|
id,
|
package/dist/editor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAU1C,MAAM,YAAY,GAAoC;IACpD,EAAE,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE;IAC/E,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;CACtF,CAAC;AAyBF;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAO,
|
|
1
|
+
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { Connectors } from './connectors.js';
|
|
2
2
|
export { isConnector } from './metadata.js';
|
|
3
3
|
export { connectorPort, routeConnector } from './routing.js';
|
|
4
|
-
export type { ConnectorTarget, ConnectorAnchor, ConnectorSide, ConnectorEndpoint, ConnectorRouting, ConnectorOptions, ConnectorState, ConnectorPort, ConnectorRoute, } from './types.js';
|
|
4
|
+
export type { ConnectorTarget, ConnectorAnchor, ConnectorSide, ConnectorEndpoint, ConnectorRouting, ConnectorOptions, ConnectorState, ConnectorRouter, ConnectorsOptions, ConnectorPort, ConnectorRoute, } from './types.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC7D,YAAY,EACV,eAAe,EACf,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC7D,YAAY,EACV,eAAe,EACf,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -31,6 +31,11 @@ export interface ConnectorState {
|
|
|
31
31
|
readonly end: ConnectorEndpoint;
|
|
32
32
|
readonly routing: ConnectorRouting;
|
|
33
33
|
}
|
|
34
|
+
/** Return at least two finite points in drawing units, or null to retain stored geometry. */
|
|
35
|
+
export type ConnectorRouter = (state: ConnectorState) => readonly Point[] | null;
|
|
36
|
+
export interface ConnectorsOptions {
|
|
37
|
+
readonly route?: ConnectorRouter;
|
|
38
|
+
}
|
|
34
39
|
export interface ConnectorPort {
|
|
35
40
|
readonly point: Point;
|
|
36
41
|
readonly direction: Point;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;AAClD,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAChE,wEAAwE;AACxE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC;AAC7D;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAA;CAAE,GACvE;IAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAC9B,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,OAAO,CAAC;AACpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;CACpC;AACD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;CAC3B;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;CACpC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;AAClD,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAChE,wEAAwE;AACxE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,aAAa,GAAG,KAAK,CAAC;AAC7D;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAA;CAAE,GACvE;IAAE,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAC9B,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,OAAO,CAAC;AACpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;CACpC;AACD,6FAA6F;AAC7F,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,SAAS,KAAK,EAAE,GAAG,IAAI,CAAC;AACjF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;CAClC;AACD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;CAC3B;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;CACpC"}
|
package/package.json
CHANGED
package/src/connectors.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Path } from '@rasamjs/core';
|
|
2
|
-
import type { Svg, AnyNode } from '@rasamjs/core';
|
|
2
|
+
import type { Svg, AnyNode, Point } from '@rasamjs/core';
|
|
3
3
|
import { Guards } from '@rasamjs/core/advanced';
|
|
4
4
|
import { beginChangeGroup, deriveChanges } from '@rasamjs/core/changes';
|
|
5
5
|
import {
|
|
@@ -24,6 +24,8 @@ import type {
|
|
|
24
24
|
ConnectorOptions,
|
|
25
25
|
ConnectorState,
|
|
26
26
|
ConnectorTarget,
|
|
27
|
+
ConnectorRouter,
|
|
28
|
+
ConnectorsOptions,
|
|
27
29
|
} from './types.js';
|
|
28
30
|
|
|
29
31
|
const owners = new WeakMap<Svg, Connectors>();
|
|
@@ -46,7 +48,11 @@ export class Connectors {
|
|
|
46
48
|
private disposed = false;
|
|
47
49
|
private readonly cleanups: (() => void)[] = [];
|
|
48
50
|
private readonly disposals = new Set<() => void>();
|
|
49
|
-
|
|
51
|
+
private router?: ConnectorRouter;
|
|
52
|
+
constructor(
|
|
53
|
+
readonly drawing: Svg,
|
|
54
|
+
options: ConnectorsOptions = {},
|
|
55
|
+
) {
|
|
50
56
|
if (
|
|
51
57
|
!Guards.isTransformable(drawing) ||
|
|
52
58
|
drawing.isDestroyed ||
|
|
@@ -55,6 +61,13 @@ export class Connectors {
|
|
|
55
61
|
)
|
|
56
62
|
throw new TypeError('Connectors needs a live SVG drawing root');
|
|
57
63
|
if (owners.has(drawing)) throw new Error('Connectors is already attached to this drawing');
|
|
64
|
+
if (
|
|
65
|
+
!options ||
|
|
66
|
+
typeof options !== 'object' ||
|
|
67
|
+
(options.route !== undefined && typeof options.route !== 'function')
|
|
68
|
+
)
|
|
69
|
+
throw new TypeError('Connector route must be a function');
|
|
70
|
+
this.router = options.route;
|
|
58
71
|
// Validate saved attachments without changing stored routing during attachment or replay.
|
|
59
72
|
this.nodes.forEach(readConnector);
|
|
60
73
|
owners.set(drawing, this);
|
|
@@ -139,7 +152,7 @@ export class Connectors {
|
|
|
139
152
|
if (options.arrows === 'both') path.marker('start', marker);
|
|
140
153
|
}
|
|
141
154
|
if (!this.route(readConnector(path)))
|
|
142
|
-
throw new Error('Connector
|
|
155
|
+
throw new Error('Connector route is unavailable or its transform is not invertible');
|
|
143
156
|
return path;
|
|
144
157
|
});
|
|
145
158
|
}
|
|
@@ -150,7 +163,7 @@ export class Connectors {
|
|
|
150
163
|
this.edit('Edit connector', () => {
|
|
151
164
|
writeConnector(path, state);
|
|
152
165
|
if (!this.route(state))
|
|
153
|
-
throw new Error('Connector
|
|
166
|
+
throw new Error('Connector route is unavailable or its transform is not invertible');
|
|
154
167
|
});
|
|
155
168
|
}
|
|
156
169
|
remove(path: Path): void {
|
|
@@ -160,6 +173,7 @@ export class Connectors {
|
|
|
160
173
|
destroy(): void {
|
|
161
174
|
if (this.disposed) return;
|
|
162
175
|
this.disposed = true;
|
|
176
|
+
this.router = undefined;
|
|
163
177
|
owners.delete(this.drawing);
|
|
164
178
|
const failures: unknown[] = [];
|
|
165
179
|
for (const stop of [...this.cleanups.splice(0).reverse(), ...this.disposals]) {
|
|
@@ -291,19 +305,25 @@ export class Connectors {
|
|
|
291
305
|
if (endpoint.target.el.contains(path.el))
|
|
292
306
|
throw new TypeError('A connector cannot be inside its endpoint target');
|
|
293
307
|
}
|
|
308
|
+
const inverse = path.worldMatrix().inverse();
|
|
309
|
+
if (!inverse) return false;
|
|
310
|
+
const points = this.router ? this.router(state) : this.defaultRoute(state);
|
|
311
|
+
if (points === null) return false;
|
|
312
|
+
if (!Array.isArray(points) || points.length < 2)
|
|
313
|
+
throw new TypeError('Connector route must return at least two finite points or null');
|
|
314
|
+
for (const point of points) validatePoint(point);
|
|
315
|
+
const local = points.map((point) => inverse.apply(point));
|
|
316
|
+
local.forEach((point) => validatePoint(point));
|
|
317
|
+
const d = pathData(local);
|
|
318
|
+
if (path.getAttributeValue('d') !== d) path.attrs({ d });
|
|
319
|
+
return true;
|
|
320
|
+
}
|
|
321
|
+
private defaultRoute({ start, end, routing }: ConnectorState): readonly Point[] | null {
|
|
294
322
|
const a = endpointCenter(start),
|
|
295
323
|
b = endpointCenter(end);
|
|
296
324
|
const from = a && b ? connectorPort(start, b) : null;
|
|
297
325
|
const to = a && b ? connectorPort(end, a) : null;
|
|
298
|
-
|
|
299
|
-
if (!from || !to || !inverse) return false;
|
|
300
|
-
const d = pathData(
|
|
301
|
-
routeConnector({ start: from, end: to, routing: state.routing }).map((point) =>
|
|
302
|
-
inverse.apply(point),
|
|
303
|
-
),
|
|
304
|
-
);
|
|
305
|
-
if (path.getAttributeValue('d') !== d) path.attrs({ d });
|
|
306
|
-
return true;
|
|
326
|
+
return from && to ? routeConnector({ start: from, end: to, routing }) : null;
|
|
307
327
|
}
|
|
308
328
|
private edit<Result>(label: string, run: () => Result): Result {
|
|
309
329
|
const group = beginChangeGroup(this.drawing, { source: 'connectors', label });
|
package/src/editor.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AnyNode, Svg } from '@rasamjs/core';
|
|
2
2
|
import { Connectors } from './connectors.js';
|
|
3
3
|
import { ConnectorTool } from './tool.js';
|
|
4
|
-
import type { ConnectorOptions } from './types.js';
|
|
4
|
+
import type { ConnectorOptions, ConnectorsOptions } from './types.js';
|
|
5
5
|
|
|
6
6
|
/** One registered connector tool; its id is also its command id. */
|
|
7
7
|
export interface ConnectorEditingTool extends Pick<ConnectorOptions, 'routing' | 'arrows'> {
|
|
@@ -43,14 +43,14 @@ export interface ConnectorScope {
|
|
|
43
43
|
* and Elbow connector (`Shift+C`), for example with a Wire tool without arrows.
|
|
44
44
|
*/
|
|
45
45
|
export function connectorEditing(
|
|
46
|
-
options: { readonly tools?: readonly ConnectorEditingTool[] } = {},
|
|
46
|
+
options: ConnectorsOptions & { readonly tools?: readonly ConnectorEditingTool[] } = {},
|
|
47
47
|
) {
|
|
48
48
|
const tools = options.tools ?? defaultTools;
|
|
49
49
|
if (!Array.isArray(tools)) throw new TypeError('Connector tools must be an array');
|
|
50
50
|
return {
|
|
51
51
|
id: 'connectors',
|
|
52
52
|
create(scope: ConnectorScope) {
|
|
53
|
-
const service = scope.use(new Connectors(scope.drawing));
|
|
53
|
+
const service = scope.use(new Connectors(scope.drawing, options));
|
|
54
54
|
for (const { id, label, key, routing = 'straight', arrows, hint } of tools)
|
|
55
55
|
scope.registerTool({
|
|
56
56
|
id,
|
package/src/index.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -27,6 +27,11 @@ export interface ConnectorState {
|
|
|
27
27
|
readonly end: ConnectorEndpoint;
|
|
28
28
|
readonly routing: ConnectorRouting;
|
|
29
29
|
}
|
|
30
|
+
/** Return at least two finite points in drawing units, or null to retain stored geometry. */
|
|
31
|
+
export type ConnectorRouter = (state: ConnectorState) => readonly Point[] | null;
|
|
32
|
+
export interface ConnectorsOptions {
|
|
33
|
+
readonly route?: ConnectorRouter;
|
|
34
|
+
}
|
|
30
35
|
export interface ConnectorPort {
|
|
31
36
|
readonly point: Point;
|
|
32
37
|
readonly direction: Point;
|