@ngroznykh/papirus 0.9.0 → 0.9.2
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/dist/core/ConnectionManager.d.ts +11 -1
- package/dist/core/ConnectionManager.d.ts.map +1 -1
- package/dist/core/EdgeEndpointUpdater.d.ts.map +1 -1
- package/dist/elements/Node.d.ts +10 -0
- package/dist/elements/Node.d.ts.map +1 -1
- package/dist/elements/nodes/CircleNode.d.ts +1 -0
- package/dist/elements/nodes/CircleNode.d.ts.map +1 -1
- package/dist/elements/nodes/CustomShapeNode.d.ts +1 -0
- package/dist/elements/nodes/CustomShapeNode.d.ts.map +1 -1
- package/dist/elements/nodes/DiamondNode.d.ts +1 -0
- package/dist/elements/nodes/DiamondNode.d.ts.map +1 -1
- package/dist/papirus.js +245 -36
- package/dist/papirus.js.map +1 -1
- package/dist/utils/direction.d.ts +2 -0
- package/dist/utils/direction.d.ts.map +1 -1
- package/dist/utils/outlineConnectHandle.d.ts +18 -0
- package/dist/utils/outlineConnectHandle.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -45,6 +45,9 @@ export declare class ConnectionManager extends EventEmitter<ConnectionEvents> {
|
|
|
45
45
|
private sourceAnchorId;
|
|
46
46
|
private hoverNodeId;
|
|
47
47
|
private hoverAnchorId;
|
|
48
|
+
private hoverPoint;
|
|
49
|
+
private hoverOutlineHandle;
|
|
50
|
+
private hoverOutlineSide;
|
|
48
51
|
private hoverDisabled;
|
|
49
52
|
private reconnectPoint;
|
|
50
53
|
private previewTargetAnchorId;
|
|
@@ -112,7 +115,7 @@ export declare class ConnectionManager extends EventEmitter<ConnectionEvents> {
|
|
|
112
115
|
enableHover(): void;
|
|
113
116
|
/**
|
|
114
117
|
* Try to start connection from a hovered anchor point.
|
|
115
|
-
* When attachToOutline
|
|
118
|
+
* When attachToOutline: drag the outline handle, or Shift+drag from the node body.
|
|
116
119
|
* Otherwise: requires clicking on an anchor/port so that node drag still works.
|
|
117
120
|
*/
|
|
118
121
|
tryStartConnectionAtPoint(event: InputEvent): boolean;
|
|
@@ -191,6 +194,13 @@ export declare class ConnectionManager extends EventEmitter<ConnectionEvents> {
|
|
|
191
194
|
private renderAnchorHighlights;
|
|
192
195
|
private drawCross;
|
|
193
196
|
private getNodeAtPoint;
|
|
197
|
+
private startOutlineConnection;
|
|
198
|
+
private outlineHandleHysteresis;
|
|
199
|
+
private outlineConnectHandleFor;
|
|
200
|
+
private outlineHandleHitRadius;
|
|
201
|
+
private findOutlineConnectHandleAt;
|
|
202
|
+
private renderOutlineConnectHandle;
|
|
203
|
+
private clearOutlineHandleCursor;
|
|
194
204
|
private updateHover;
|
|
195
205
|
private getAnchorAtPoint;
|
|
196
206
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionManager.d.ts","sourceRoot":"","sources":["../../src/core/ConnectionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAY,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ConnectionManager.d.ts","sourceRoot":"","sources":["../../src/core/ConnectionManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EdgeEndpointUpdater.d.ts","sourceRoot":"","sources":["../../src/core/EdgeEndpointUpdater.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"EdgeEndpointUpdater.d.ts","sourceRoot":"","sources":["../../src/core/EdgeEndpointUpdater.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMrD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtC,QAAQ,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtC,gBAAgB,IAAI,YAAY,EAAE,CAAC;CACpC;AAOD,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,uBAAuB;IAE1D,aAAa,IAAI,IAAI;IAMrB,SAAS,IAAI,IAAI;IAIjB,OAAO,CAAC,MAAM;IA+Bd,OAAO,CAAC,kBAAkB;IA2D1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA8C9B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,WAAW;IAqBnB;;;;;;;;;OASG;IACH,OAAO,CAAC,qBAAqB;IA2C7B,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,mBAAmB;IAqB3B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,uBAAuB;CAOhC"}
|
package/dist/elements/Node.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { TextLabel, TextLabelOptions } from './TextLabel';
|
|
|
4
4
|
import { NodeImage, NodeImageOptions } from './NodeImage';
|
|
5
5
|
import { StyleManager } from '../styles/StyleManager';
|
|
6
6
|
import { Bounds, ContentInsetSides, NodeStyle, Point, Size } from '../types';
|
|
7
|
+
import { Direction } from '../utils/direction';
|
|
7
8
|
import { ContentInsetScaleSides } from '../utils/resolveContentInset';
|
|
8
9
|
/** Badge shown in top-left corner of node (e.g. interactive property indicator) */
|
|
9
10
|
export interface NodeBadgeOption {
|
|
@@ -275,6 +276,15 @@ export declare abstract class Node extends Element {
|
|
|
275
276
|
* Get point on outline at normalized param (0-1 along perimeter).
|
|
276
277
|
* Base implementation uses rectangular outline. Override for non-rectangular shapes.
|
|
277
278
|
*/
|
|
279
|
+
/**
|
|
280
|
+
* Outward cardinal side at an outline param. Rectangles use AABB perimeter
|
|
281
|
+
* fractions; non-rectangular shapes override from the real outline point.
|
|
282
|
+
*/
|
|
283
|
+
getOutlineDirection(param: number): Exclude<Direction, undefined>;
|
|
284
|
+
/**
|
|
285
|
+
* Outward side from node center toward a point on the outline.
|
|
286
|
+
*/
|
|
287
|
+
protected outlineDirectionFromCenter(param: number): Exclude<Direction, undefined>;
|
|
278
288
|
getConnectionPointAtOutlineParam(param: number): Point;
|
|
279
289
|
/**
|
|
280
290
|
* Get closest point on outline and its param (0-1).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../../src/elements/Node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Node.d.ts","sourceRoot":"","sources":["../../src/elements/Node.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ export declare class CircleNode extends Node {
|
|
|
15
15
|
*/
|
|
16
16
|
get radiusY(): number;
|
|
17
17
|
hitTest(point: Point): boolean;
|
|
18
|
+
getOutlineDirection(param: number): 'top' | 'right' | 'bottom' | 'left';
|
|
18
19
|
getConnectionPointAtOutlineParam(param: number): Point;
|
|
19
20
|
getClosestPointOnOutline(target: Point): {
|
|
20
21
|
point: Point;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CircleNode.d.ts","sourceRoot":"","sources":["../../../src/elements/nodes/CircleNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE7C;;GAEG;AACH,qBAAa,UAAW,SAAQ,IAAI;gBACtB,OAAO,EAAE,WAAW;IAIhC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAEQ,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAY9B,gCAAgC,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK;IAYtD,wBAAwB,CAAC,MAAM,EAAE,KAAK,GAAG;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;cAc9D,qBAAqB,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK;cAkB3C,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAWlE,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;CAuB5C"}
|
|
1
|
+
{"version":3,"file":"CircleNode.d.ts","sourceRoot":"","sources":["../../../src/elements/nodes/CircleNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE7C;;GAEG;AACH,qBAAa,UAAW,SAAQ,IAAI;gBACtB,OAAO,EAAE,WAAW;IAIhC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAEQ,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAY9B,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM;IAIvE,gCAAgC,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK;IAYtD,wBAAwB,CAAC,MAAM,EAAE,KAAK,GAAG;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;cAc9D,qBAAqB,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK;cAkB3C,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAWlE,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;CAuB5C"}
|
|
@@ -43,6 +43,7 @@ export declare class CustomShapeNode extends Node {
|
|
|
43
43
|
setSvgPath(value: string | ((width: number, height: number) => string) | undefined): void;
|
|
44
44
|
private getOutlineSample;
|
|
45
45
|
private localToWorld;
|
|
46
|
+
getOutlineDirection(param: number): 'top' | 'right' | 'bottom' | 'left';
|
|
46
47
|
getConnectionPointAtOutlineParam(param: number): Point;
|
|
47
48
|
getClosestPointOnOutline(target: Point): {
|
|
48
49
|
point: Point;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomShapeNode.d.ts","sourceRoot":"","sources":["../../../src/elements/nodes/CustomShapeNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIrC,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC3D;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,IAAI;IACvC,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,eAAe,CAA4D;IACnF,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAA4E;gBAEtF,OAAO,EAAE,sBAAsB;IAsB3C,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAKtC;IAED;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI;IAOxE;;OAEG;IACH,OAAO,IAAI,MAAM;IAcjB;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAO3B;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,GAAG,IAAI;IAWzF,OAAO,CAAC,gBAAgB;IAkExB,OAAO,CAAC,YAAY;IAIX,gCAAgC,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK;IAuBtD,wBAAwB,CAAC,MAAM,EAAE,KAAK,GAAG;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;cAiD9D,qBAAqB,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK;IAqB9D,OAAO,CAAC,qBAAqB;IA6BpB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAyBvC,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;CAsB5C;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;qBACc,MAAM,UAAU,MAAM,KAAG,MAAM;IAehD;;OAEG;2BACoB,MAAM,UAAU,MAAM,KAAG,MAAM;IAatD;;OAEG;sBACe,MAAM,UAAU,MAAM,KAAG,MAAM;IAgBjD;;OAEG;sBACe,MAAM,UAAU,MAAM,KAAG,MAAM;IAcjD;;OAEG;;qBAEY,MAAM,KAAK,MAAM,KAAG,MAAM;2BAEpB,MAAM,KAAK,MAAM,KAAG,MAAM;sBAI/B,MAAM,KAAK,MAAM,KAAG,MAAM;sBAK1B,MAAM,KAAK,MAAM,KAAG,MAAM;QAIxC,wCAAwC;uBACzB,MAAM,KAAK,MAAM,KAAG,MAAM;;CAK5C,CAAC"}
|
|
1
|
+
{"version":3,"file":"CustomShapeNode.d.ts","sourceRoot":"","sources":["../../../src/elements/nodes/CustomShapeNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAIrC,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC3D;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,IAAI;IACvC,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,eAAe,CAA4D;IACnF,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAA4E;gBAEtF,OAAO,EAAE,sBAAsB;IAsB3C,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAKtC;IAED;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI;IAOxE;;OAEG;IACH,OAAO,IAAI,MAAM;IAcjB;;OAEG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAO3B;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,GAAG,IAAI;IAWzF,OAAO,CAAC,gBAAgB;IAkExB,OAAO,CAAC,YAAY;IAIX,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM;IAOvE,gCAAgC,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK;IAuBtD,wBAAwB,CAAC,MAAM,EAAE,KAAK,GAAG;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;cAiD9D,qBAAqB,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK;IAqB9D,OAAO,CAAC,qBAAqB;IA6BpB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAyBvC,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;CAsB5C;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;qBACc,MAAM,UAAU,MAAM,KAAG,MAAM;IAehD;;OAEG;2BACoB,MAAM,UAAU,MAAM,KAAG,MAAM;IAatD;;OAEG;sBACe,MAAM,UAAU,MAAM,KAAG,MAAM;IAgBjD;;OAEG;sBACe,MAAM,UAAU,MAAM,KAAG,MAAM;IAcjD;;OAEG;;qBAEY,MAAM,KAAK,MAAM,KAAG,MAAM;2BAEpB,MAAM,KAAK,MAAM,KAAG,MAAM;sBAI/B,MAAM,KAAK,MAAM,KAAG,MAAM;sBAK1B,MAAM,KAAK,MAAM,KAAG,MAAM;QAIxC,wCAAwC;uBACzB,MAAM,KAAK,MAAM,KAAG,MAAM;;CAK5C,CAAC"}
|
|
@@ -7,6 +7,7 @@ export declare class DiamondNode extends Node {
|
|
|
7
7
|
constructor(options: NodeOptions);
|
|
8
8
|
get typeName(): string;
|
|
9
9
|
hitTest(point: Point): boolean;
|
|
10
|
+
getOutlineDirection(param: number): 'top' | 'right' | 'bottom' | 'left';
|
|
10
11
|
getConnectionPointAtOutlineParam(param: number): Point;
|
|
11
12
|
getClosestPointOnOutline(target: Point): {
|
|
12
13
|
point: Point;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiamondNode.d.ts","sourceRoot":"","sources":["../../../src/elements/nodes/DiamondNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE7C;;GAEG;AACH,qBAAa,WAAY,SAAQ,IAAI;gBACvB,OAAO,EAAE,WAAW;IAIhC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAEQ,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAe9B,gCAAgC,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK;IA6BtD,wBAAwB,CAAC,MAAM,EAAE,KAAK,GAAG;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;cAuC9D,qBAAqB,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK;cAkB3C,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAWlE,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;CA0B5C"}
|
|
1
|
+
{"version":3,"file":"DiamondNode.d.ts","sourceRoot":"","sources":["../../../src/elements/nodes/DiamondNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE7C;;GAEG;AACH,qBAAa,WAAY,SAAQ,IAAI;gBACvB,OAAO,EAAE,WAAW;IAIhC,IAAI,QAAQ,IAAI,MAAM,CAErB;IAEQ,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAe9B,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM;IAIvE,gCAAgC,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK;IA6BtD,wBAAwB,CAAC,MAAM,EAAE,KAAK,GAAG;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;cAuC9D,qBAAqB,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK;cAkB3C,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAWlE,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI;CA0B5C"}
|
package/dist/papirus.js
CHANGED
|
@@ -1698,6 +1698,11 @@ function getDirectionFromOutlineParam(param, bounds) {
|
|
|
1698
1698
|
if (p < .75) return "bottom";
|
|
1699
1699
|
return "left";
|
|
1700
1700
|
}
|
|
1701
|
+
/** Snap a vector to a cardinal side (Y-down canvas). */
|
|
1702
|
+
function directionFromDelta(dx, dy) {
|
|
1703
|
+
if (Math.abs(dx) > Math.abs(dy)) return dx >= 0 ? "right" : "left";
|
|
1704
|
+
return dy >= 0 ? "bottom" : "top";
|
|
1705
|
+
}
|
|
1701
1706
|
function isHorizontal(dir) {
|
|
1702
1707
|
return dir === "left" || dir === "right";
|
|
1703
1708
|
}
|
|
@@ -1731,6 +1736,101 @@ function directionToVector(dir) {
|
|
|
1731
1736
|
};
|
|
1732
1737
|
}
|
|
1733
1738
|
}
|
|
1739
|
+
function clamp$1(value, min, max) {
|
|
1740
|
+
return Math.max(min, Math.min(max, value));
|
|
1741
|
+
}
|
|
1742
|
+
function dist(a, b) {
|
|
1743
|
+
return Math.hypot(a.x - b.x, a.y - b.y);
|
|
1744
|
+
}
|
|
1745
|
+
function closestPointOnRectSide(bounds, side, pointer) {
|
|
1746
|
+
const { x, y, width, height } = bounds;
|
|
1747
|
+
switch (side) {
|
|
1748
|
+
case "top": return {
|
|
1749
|
+
x: clamp$1(pointer.x, x, x + width),
|
|
1750
|
+
y
|
|
1751
|
+
};
|
|
1752
|
+
case "bottom": return {
|
|
1753
|
+
x: clamp$1(pointer.x, x, x + width),
|
|
1754
|
+
y: y + height
|
|
1755
|
+
};
|
|
1756
|
+
case "left": return {
|
|
1757
|
+
x,
|
|
1758
|
+
y: clamp$1(pointer.y, y, y + height)
|
|
1759
|
+
};
|
|
1760
|
+
case "right": return {
|
|
1761
|
+
x: x + width,
|
|
1762
|
+
y: clamp$1(pointer.y, y, y + height)
|
|
1763
|
+
};
|
|
1764
|
+
}
|
|
1765
|
+
}
|
|
1766
|
+
function closestPointOnRectOutline(bounds, pointer) {
|
|
1767
|
+
const sides = [
|
|
1768
|
+
"top",
|
|
1769
|
+
"right",
|
|
1770
|
+
"bottom",
|
|
1771
|
+
"left"
|
|
1772
|
+
];
|
|
1773
|
+
let side = sides[0];
|
|
1774
|
+
let point = closestPointOnRectSide(bounds, side, pointer);
|
|
1775
|
+
let best = dist(pointer, point);
|
|
1776
|
+
for (let i = 1; i < sides.length; i++) {
|
|
1777
|
+
const nextSide = sides[i];
|
|
1778
|
+
const nextPoint = closestPointOnRectSide(bounds, nextSide, pointer);
|
|
1779
|
+
const nextDist = dist(pointer, nextPoint);
|
|
1780
|
+
if (nextDist < best) {
|
|
1781
|
+
side = nextSide;
|
|
1782
|
+
point = nextPoint;
|
|
1783
|
+
best = nextDist;
|
|
1784
|
+
}
|
|
1785
|
+
}
|
|
1786
|
+
return {
|
|
1787
|
+
side,
|
|
1788
|
+
point
|
|
1789
|
+
};
|
|
1790
|
+
}
|
|
1791
|
+
function getOutlineConnectHandle(bounds, pointer, offset, prevSide, hysteresis = 8) {
|
|
1792
|
+
const closest = closestPointOnRectOutline(bounds, pointer);
|
|
1793
|
+
let side = closest.side;
|
|
1794
|
+
let attach = closest.point;
|
|
1795
|
+
if (prevSide && prevSide !== closest.side) {
|
|
1796
|
+
const stay = closestPointOnRectSide(bounds, prevSide, pointer);
|
|
1797
|
+
if (dist(pointer, stay) <= dist(pointer, closest.point) + hysteresis) {
|
|
1798
|
+
side = prevSide;
|
|
1799
|
+
attach = stay;
|
|
1800
|
+
}
|
|
1801
|
+
}
|
|
1802
|
+
if (offset === 0) return {
|
|
1803
|
+
side,
|
|
1804
|
+
attach,
|
|
1805
|
+
handle: attach
|
|
1806
|
+
};
|
|
1807
|
+
const delta = {
|
|
1808
|
+
top: {
|
|
1809
|
+
x: 0,
|
|
1810
|
+
y: -offset
|
|
1811
|
+
},
|
|
1812
|
+
right: {
|
|
1813
|
+
x: offset,
|
|
1814
|
+
y: 0
|
|
1815
|
+
},
|
|
1816
|
+
bottom: {
|
|
1817
|
+
x: 0,
|
|
1818
|
+
y: offset
|
|
1819
|
+
},
|
|
1820
|
+
left: {
|
|
1821
|
+
x: -offset,
|
|
1822
|
+
y: 0
|
|
1823
|
+
}
|
|
1824
|
+
}[side];
|
|
1825
|
+
return {
|
|
1826
|
+
side,
|
|
1827
|
+
attach,
|
|
1828
|
+
handle: {
|
|
1829
|
+
x: attach.x + delta.x,
|
|
1830
|
+
y: attach.y + delta.y
|
|
1831
|
+
}
|
|
1832
|
+
};
|
|
1833
|
+
}
|
|
1734
1834
|
//#endregion
|
|
1735
1835
|
//#region src/core/ConnectionManager.ts
|
|
1736
1836
|
/**
|
|
@@ -1747,6 +1847,9 @@ var ConnectionManager = class extends EventEmitter {
|
|
|
1747
1847
|
this.sourceAnchorId = null;
|
|
1748
1848
|
this.hoverNodeId = null;
|
|
1749
1849
|
this.hoverAnchorId = null;
|
|
1850
|
+
this.hoverPoint = null;
|
|
1851
|
+
this.hoverOutlineHandle = false;
|
|
1852
|
+
this.hoverOutlineSide = null;
|
|
1750
1853
|
this.hoverDisabled = false;
|
|
1751
1854
|
this.reconnectPoint = null;
|
|
1752
1855
|
this.previewTargetAnchorId = null;
|
|
@@ -1808,9 +1911,12 @@ var ConnectionManager = class extends EventEmitter {
|
|
|
1808
1911
|
*/
|
|
1809
1912
|
clearPointerHover() {
|
|
1810
1913
|
if (this.hoverDisabled) return;
|
|
1811
|
-
if (this.hoverNodeId !== null || this.hoverAnchorId !== null) {
|
|
1914
|
+
if (this.hoverNodeId !== null || this.hoverAnchorId !== null || this.hoverOutlineHandle) {
|
|
1812
1915
|
this.hoverNodeId = null;
|
|
1813
1916
|
this.hoverAnchorId = null;
|
|
1917
|
+
this.hoverPoint = null;
|
|
1918
|
+
this.hoverOutlineSide = null;
|
|
1919
|
+
this.clearOutlineHandleCursor();
|
|
1814
1920
|
this.renderer.markDirty();
|
|
1815
1921
|
}
|
|
1816
1922
|
}
|
|
@@ -1837,9 +1943,12 @@ var ConnectionManager = class extends EventEmitter {
|
|
|
1837
1943
|
*/
|
|
1838
1944
|
disableHover() {
|
|
1839
1945
|
this.hoverDisabled = true;
|
|
1840
|
-
if (this.hoverNodeId !== null || this.hoverAnchorId !== null) {
|
|
1946
|
+
if (this.hoverNodeId !== null || this.hoverAnchorId !== null || this.hoverOutlineHandle) {
|
|
1841
1947
|
this.hoverNodeId = null;
|
|
1842
1948
|
this.hoverAnchorId = null;
|
|
1949
|
+
this.hoverPoint = null;
|
|
1950
|
+
this.hoverOutlineSide = null;
|
|
1951
|
+
this.clearOutlineHandleCursor();
|
|
1843
1952
|
this.renderer.markDirty();
|
|
1844
1953
|
}
|
|
1845
1954
|
}
|
|
@@ -1851,7 +1960,7 @@ var ConnectionManager = class extends EventEmitter {
|
|
|
1851
1960
|
}
|
|
1852
1961
|
/**
|
|
1853
1962
|
* Try to start connection from a hovered anchor point.
|
|
1854
|
-
* When attachToOutline
|
|
1963
|
+
* When attachToOutline: drag the outline handle, or Shift+drag from the node body.
|
|
1855
1964
|
* Otherwise: requires clicking on an anchor/port so that node drag still works.
|
|
1856
1965
|
*/
|
|
1857
1966
|
tryStartConnectionAtPoint(event) {
|
|
@@ -1860,18 +1969,18 @@ var ConnectionManager = class extends EventEmitter {
|
|
|
1860
1969
|
x: event.worldX,
|
|
1861
1970
|
y: event.worldY
|
|
1862
1971
|
};
|
|
1972
|
+
if (this.attachToOutline) {
|
|
1973
|
+
const handleHit = this.findOutlineConnectHandleAt(point);
|
|
1974
|
+
if (handleHit) {
|
|
1975
|
+
this.startOutlineConnection(handleHit.node, handleHit.attach);
|
|
1976
|
+
return true;
|
|
1977
|
+
}
|
|
1978
|
+
}
|
|
1863
1979
|
const node = this.getNodeAtPoint(point, false);
|
|
1864
1980
|
if (!node) return false;
|
|
1865
1981
|
if (this.attachToOutline && event.shiftKey) {
|
|
1866
|
-
const { point: outlinePoint
|
|
1867
|
-
this.
|
|
1868
|
-
this.isConnecting = true;
|
|
1869
|
-
this.sourceAnchorId = null;
|
|
1870
|
-
this.sourcePoint = outlinePoint;
|
|
1871
|
-
this.sourceOutlineParam = param;
|
|
1872
|
-
this.previewEndpoint = point;
|
|
1873
|
-
this.emit("connectionStart", node);
|
|
1874
|
-
this.renderer.markDirty();
|
|
1982
|
+
const { point: outlinePoint } = node.getClosestPointOnOutline(point);
|
|
1983
|
+
this.startOutlineConnection(node, outlinePoint);
|
|
1875
1984
|
return true;
|
|
1876
1985
|
}
|
|
1877
1986
|
const hover = this.getAnchorAtPoint(node, point);
|
|
@@ -1963,14 +2072,14 @@ var ConnectionManager = class extends EventEmitter {
|
|
|
1963
2072
|
snappedPoint = bestResult.point;
|
|
1964
2073
|
this.reconnectingOutlineParam = bestResult.param;
|
|
1965
2074
|
this.reconnectingTargetNodeId = bestResult.node.id;
|
|
1966
|
-
snappedDir =
|
|
2075
|
+
snappedDir = bestResult.node.getOutlineDirection(bestResult.param);
|
|
1967
2076
|
if (this.reconnectingEndpoint === "start" ? toNode : fromNode) {
|
|
1968
2077
|
const alignRef = edge.isEditablePolyline() ? this.getNearestBendPointForAxisAlignment(edge, this.reconnectingEndpoint) : this.reconnectingEndpoint === "start" ? this.getTargetPointForReconnect(edge, toNode, "to", snappedPoint) : this.getTargetPointForReconnect(edge, fromNode, "from", snappedPoint);
|
|
1969
2078
|
snappedPoint = this.applyAxisAlignmentToPoint(snappedPoint, alignRef);
|
|
1970
2079
|
const reprojected = targetNode.getClosestPointOnOutline(snappedPoint);
|
|
1971
2080
|
snappedPoint = reprojected.point;
|
|
1972
2081
|
this.reconnectingOutlineParam = reprojected.param;
|
|
1973
|
-
snappedDir =
|
|
2082
|
+
snappedDir = targetNode.getOutlineDirection(reprojected.param);
|
|
1974
2083
|
}
|
|
1975
2084
|
} else {
|
|
1976
2085
|
this.reconnectingOutlineParam = null;
|
|
@@ -2036,7 +2145,7 @@ var ConnectionManager = class extends EventEmitter {
|
|
|
2036
2145
|
const ep = endpoint === "from" ? edge.from : edge.to;
|
|
2037
2146
|
if (this.attachToOutline && ep.outlineParam !== void 0) {
|
|
2038
2147
|
const node = ep.nodeId ? this.renderer.getNode(ep.nodeId) : void 0;
|
|
2039
|
-
return
|
|
2148
|
+
return node ? node.getOutlineDirection(ep.outlineParam) : getDirectionFromOutlineParam(ep.outlineParam);
|
|
2040
2149
|
}
|
|
2041
2150
|
return (ep.portId?.replace(ANCHOR_PORT_PREFIX, ""))?.split(":")[0];
|
|
2042
2151
|
}
|
|
@@ -2353,8 +2462,8 @@ var ConnectionManager = class extends EventEmitter {
|
|
|
2353
2462
|
ctx.stroke();
|
|
2354
2463
|
} else {
|
|
2355
2464
|
const previewTarget = this.previewTargetNodeId != null ? this.renderer.getNode(this.previewTargetNodeId) : void 0;
|
|
2356
|
-
const fromDir = this.sourceOutlineParam !== null ?
|
|
2357
|
-
const toDir = this.previewTargetOutlineParam !== null ?
|
|
2465
|
+
const fromDir = this.sourceOutlineParam !== null ? this.sourceNode ? this.sourceNode.getOutlineDirection(this.sourceOutlineParam) : getDirectionFromOutlineParam(this.sourceOutlineParam) : this.sourceAnchorId?.split(":")[0];
|
|
2466
|
+
const toDir = this.previewTargetOutlineParam !== null ? previewTarget ? previewTarget.getOutlineDirection(this.previewTargetOutlineParam) : getDirectionFromOutlineParam(this.previewTargetOutlineParam) : this.previewTargetAnchorId?.split(":")[0];
|
|
2358
2467
|
this.drawBezierPreview(ctx, start, end, fromDir, toDir);
|
|
2359
2468
|
}
|
|
2360
2469
|
ctx.setLineDash([]);
|
|
@@ -2473,7 +2582,10 @@ var ConnectionManager = class extends EventEmitter {
|
|
|
2473
2582
|
renderHoverAnchors(ctx) {
|
|
2474
2583
|
if (this.isConnecting || this.isReconnecting) return;
|
|
2475
2584
|
this.renderEditablePolylineControls(ctx);
|
|
2476
|
-
if (this.attachToOutline)
|
|
2585
|
+
if (this.attachToOutline) {
|
|
2586
|
+
this.renderOutlineConnectHandle(ctx);
|
|
2587
|
+
return;
|
|
2588
|
+
}
|
|
2477
2589
|
if (!this.hoverNodeId) return;
|
|
2478
2590
|
const node = this.renderer.getNode(this.hoverNodeId);
|
|
2479
2591
|
if (!node) return;
|
|
@@ -2488,7 +2600,7 @@ var ConnectionManager = class extends EventEmitter {
|
|
|
2488
2600
|
ctx.beginPath();
|
|
2489
2601
|
ctx.arc(anchor.point.x, anchor.point.y, radius, 0, Math.PI * 2);
|
|
2490
2602
|
ctx.fill();
|
|
2491
|
-
if (isHovered) this.drawPlus(radius, ctx, anchor);
|
|
2603
|
+
if (isHovered) this.drawPlus(radius, ctx, anchor.point);
|
|
2492
2604
|
}
|
|
2493
2605
|
ctx.restore();
|
|
2494
2606
|
}
|
|
@@ -2639,15 +2751,15 @@ var ConnectionManager = class extends EventEmitter {
|
|
|
2639
2751
|
y
|
|
2640
2752
|
};
|
|
2641
2753
|
}
|
|
2642
|
-
drawPlus(radius, ctx,
|
|
2754
|
+
drawPlus(radius, ctx, point) {
|
|
2643
2755
|
const plusSize = radius * .5;
|
|
2644
2756
|
ctx.strokeStyle = "#ffffff";
|
|
2645
2757
|
ctx.lineWidth = 1.5;
|
|
2646
2758
|
ctx.beginPath();
|
|
2647
|
-
ctx.moveTo(
|
|
2648
|
-
ctx.lineTo(
|
|
2649
|
-
ctx.moveTo(
|
|
2650
|
-
ctx.lineTo(
|
|
2759
|
+
ctx.moveTo(point.x - plusSize, point.y);
|
|
2760
|
+
ctx.lineTo(point.x + plusSize, point.y);
|
|
2761
|
+
ctx.moveTo(point.x, point.y - plusSize);
|
|
2762
|
+
ctx.lineTo(point.x, point.y + plusSize);
|
|
2651
2763
|
ctx.stroke();
|
|
2652
2764
|
}
|
|
2653
2765
|
renderAnchorHighlights(ctx, point, reconnecting) {
|
|
@@ -2668,7 +2780,7 @@ var ConnectionManager = class extends EventEmitter {
|
|
|
2668
2780
|
ctx.arc(anchor.point.x, anchor.point.y, radius, 0, Math.PI * 2);
|
|
2669
2781
|
ctx.fill();
|
|
2670
2782
|
if (isNearest) if (forbidden) this.drawCross(radius, ctx, anchor);
|
|
2671
|
-
else this.drawPlus(radius, ctx, anchor);
|
|
2783
|
+
else this.drawPlus(radius, ctx, anchor.point);
|
|
2672
2784
|
}
|
|
2673
2785
|
ctx.restore();
|
|
2674
2786
|
}
|
|
@@ -2693,19 +2805,94 @@ var ConnectionManager = class extends EventEmitter {
|
|
|
2693
2805
|
}
|
|
2694
2806
|
return null;
|
|
2695
2807
|
}
|
|
2808
|
+
startOutlineConnection(node, attach) {
|
|
2809
|
+
const { point: outlinePoint, param } = node.getClosestPointOnOutline(attach);
|
|
2810
|
+
this.sourceNode = node;
|
|
2811
|
+
this.isConnecting = true;
|
|
2812
|
+
this.sourceAnchorId = null;
|
|
2813
|
+
this.sourcePoint = outlinePoint;
|
|
2814
|
+
this.sourceOutlineParam = param;
|
|
2815
|
+
this.previewEndpoint = attach;
|
|
2816
|
+
this.emit("connectionStart", node);
|
|
2817
|
+
this.renderer.markDirty();
|
|
2818
|
+
}
|
|
2819
|
+
outlineHandleHysteresis() {
|
|
2820
|
+
return 8 / Math.max(this.renderer.zoom, 1e-4);
|
|
2821
|
+
}
|
|
2822
|
+
outlineConnectHandleFor(node, pointer) {
|
|
2823
|
+
const prevSide = node.id === this.hoverNodeId ? this.hoverOutlineSide : null;
|
|
2824
|
+
const geom = getOutlineConnectHandle(node.getBounds(), pointer, 0, prevSide, this.outlineHandleHysteresis());
|
|
2825
|
+
const { point: onOutline } = node.getClosestPointOnOutline(geom.attach);
|
|
2826
|
+
return {
|
|
2827
|
+
attach: onOutline,
|
|
2828
|
+
handle: onOutline,
|
|
2829
|
+
side: geom.side
|
|
2830
|
+
};
|
|
2831
|
+
}
|
|
2832
|
+
outlineHandleHitRadius() {
|
|
2833
|
+
return 10 / Math.max(this.renderer.zoom, 1e-4);
|
|
2834
|
+
}
|
|
2835
|
+
findOutlineConnectHandleAt(point) {
|
|
2836
|
+
if (!this.attachToOutline) return null;
|
|
2837
|
+
const radiusSq = this.outlineHandleHitRadius() ** 2;
|
|
2838
|
+
const nodes = Array.from(this.renderer.nodes.values());
|
|
2839
|
+
for (let i = nodes.length - 1; i >= 0; i--) {
|
|
2840
|
+
const node = nodes[i];
|
|
2841
|
+
if (!node.visible || !this.isCompatibleTarget(node)) continue;
|
|
2842
|
+
const { attach, handle } = this.outlineConnectHandleFor(node, point);
|
|
2843
|
+
const dx = point.x - handle.x;
|
|
2844
|
+
const dy = point.y - handle.y;
|
|
2845
|
+
if (dx * dx + dy * dy <= radiusSq) return {
|
|
2846
|
+
node,
|
|
2847
|
+
attach,
|
|
2848
|
+
handle
|
|
2849
|
+
};
|
|
2850
|
+
}
|
|
2851
|
+
return null;
|
|
2852
|
+
}
|
|
2853
|
+
renderOutlineConnectHandle(ctx) {
|
|
2854
|
+
if (!this.hoverNodeId || !this.hoverPoint) return;
|
|
2855
|
+
const node = this.renderer.getNode(this.hoverNodeId);
|
|
2856
|
+
if (!node) return;
|
|
2857
|
+
const { handle } = this.outlineConnectHandleFor(node, this.hoverPoint);
|
|
2858
|
+
const radius = this.hoverOutlineHandle ? 6 : 4;
|
|
2859
|
+
ctx.save();
|
|
2860
|
+
ctx.setLineDash([]);
|
|
2861
|
+
ctx.fillStyle = "#3b82f6";
|
|
2862
|
+
ctx.beginPath();
|
|
2863
|
+
ctx.arc(handle.x, handle.y, radius, 0, Math.PI * 2);
|
|
2864
|
+
ctx.fill();
|
|
2865
|
+
this.drawPlus(radius, ctx, handle);
|
|
2866
|
+
ctx.restore();
|
|
2867
|
+
}
|
|
2868
|
+
clearOutlineHandleCursor() {
|
|
2869
|
+
if (this.hoverOutlineHandle) {
|
|
2870
|
+
this.hoverOutlineHandle = false;
|
|
2871
|
+
this.setCursor("");
|
|
2872
|
+
}
|
|
2873
|
+
}
|
|
2696
2874
|
updateHover(point) {
|
|
2697
2875
|
if (this.hoverDisabled) return;
|
|
2698
|
-
const
|
|
2876
|
+
const handleHit = this.findOutlineConnectHandleAt(point);
|
|
2877
|
+
const node = handleHit?.node ?? this.getNodeAtPoint(point, false);
|
|
2699
2878
|
const prevNodeId = this.hoverNodeId;
|
|
2700
2879
|
const prevAnchorId = this.hoverAnchorId;
|
|
2880
|
+
const prevOutlineHandle = this.hoverOutlineHandle;
|
|
2881
|
+
this.hoverPoint = node ? point : null;
|
|
2701
2882
|
if (!node) {
|
|
2702
2883
|
this.hoverNodeId = null;
|
|
2703
2884
|
this.hoverAnchorId = null;
|
|
2885
|
+
this.hoverOutlineSide = null;
|
|
2886
|
+
this.clearOutlineHandleCursor();
|
|
2704
2887
|
} else {
|
|
2705
2888
|
this.hoverNodeId = node.id;
|
|
2706
|
-
this.hoverAnchorId = this.getAnchorAtPoint(node, point)?.id ?? null;
|
|
2889
|
+
this.hoverAnchorId = handleHit ? null : this.getAnchorAtPoint(node, point)?.id ?? null;
|
|
2890
|
+
this.hoverOutlineHandle = handleHit !== null;
|
|
2891
|
+
if (this.attachToOutline) this.hoverOutlineSide = this.outlineConnectHandleFor(node, point).side;
|
|
2892
|
+
if (this.hoverOutlineHandle) this.setCursor("crosshair");
|
|
2893
|
+
else if (prevOutlineHandle) this.setCursor("");
|
|
2707
2894
|
}
|
|
2708
|
-
if (prevNodeId !== this.hoverNodeId || prevAnchorId !== this.hoverAnchorId) this.renderer.markDirty();
|
|
2895
|
+
if (prevNodeId !== this.hoverNodeId || prevAnchorId !== this.hoverAnchorId || prevOutlineHandle !== this.hoverOutlineHandle || this.attachToOutline && node !== null) this.renderer.markDirty();
|
|
2709
2896
|
}
|
|
2710
2897
|
getAnchorAtPoint(node, point) {
|
|
2711
2898
|
const anchorIds = !this.attachToOutline && node.ports.length > 0 ? node.getPortAnchorIds() : null;
|
|
@@ -8558,7 +8745,7 @@ var EdgeEndpointUpdater = class {
|
|
|
8558
8745
|
const fromPort = this.portSide(endpoint.portId);
|
|
8559
8746
|
if (fromPort) return fromPort;
|
|
8560
8747
|
if (endpoint.outlineParam === void 0) return void 0;
|
|
8561
|
-
return
|
|
8748
|
+
return node.getOutlineDirection(endpoint.outlineParam);
|
|
8562
8749
|
}
|
|
8563
8750
|
nearestAnchorOnSide(node, side, toward) {
|
|
8564
8751
|
const anchors = node.getAnchors().filter((a) => a.id.startsWith(`${side}:`));
|
|
@@ -8600,13 +8787,10 @@ var EdgeEndpointUpdater = class {
|
|
|
8600
8787
|
direction: anchorId.split(":")[0]
|
|
8601
8788
|
};
|
|
8602
8789
|
}
|
|
8603
|
-
if (isNodeEdgeEndpoint(endpoint) && endpoint.outlineParam !== void 0) {
|
|
8604
|
-
|
|
8605
|
-
|
|
8606
|
-
|
|
8607
|
-
direction: getDirectionFromOutlineParam(endpoint.outlineParam, bounds)
|
|
8608
|
-
};
|
|
8609
|
-
}
|
|
8790
|
+
if (isNodeEdgeEndpoint(endpoint) && endpoint.outlineParam !== void 0) return {
|
|
8791
|
+
point: node.getConnectionPointAtOutlineParam(endpoint.outlineParam),
|
|
8792
|
+
direction: node.getOutlineDirection(endpoint.outlineParam)
|
|
8793
|
+
};
|
|
8610
8794
|
if (toward) return this.resolveFloatingEndpoint(node, toward);
|
|
8611
8795
|
return { point: node.getCenter() };
|
|
8612
8796
|
}
|
|
@@ -11076,6 +11260,21 @@ var Node = class extends Element {
|
|
|
11076
11260
|
* Get point on outline at normalized param (0-1 along perimeter).
|
|
11077
11261
|
* Base implementation uses rectangular outline. Override for non-rectangular shapes.
|
|
11078
11262
|
*/
|
|
11263
|
+
/**
|
|
11264
|
+
* Outward cardinal side at an outline param. Rectangles use AABB perimeter
|
|
11265
|
+
* fractions; non-rectangular shapes override from the real outline point.
|
|
11266
|
+
*/
|
|
11267
|
+
getOutlineDirection(param) {
|
|
11268
|
+
return getDirectionFromOutlineParam(param, this.getBounds());
|
|
11269
|
+
}
|
|
11270
|
+
/**
|
|
11271
|
+
* Outward side from node center toward a point on the outline.
|
|
11272
|
+
*/
|
|
11273
|
+
outlineDirectionFromCenter(param) {
|
|
11274
|
+
const point = this.getConnectionPointAtOutlineParam(param);
|
|
11275
|
+
const center = this.getCenter();
|
|
11276
|
+
return directionFromDelta(point.x - center.x, point.y - center.y);
|
|
11277
|
+
}
|
|
11079
11278
|
getConnectionPointAtOutlineParam(param) {
|
|
11080
11279
|
const { x, y, width: w, height: h } = this.getBounds();
|
|
11081
11280
|
const perimeter = 2 * (w + h);
|
|
@@ -11599,6 +11798,9 @@ var CircleNode = class extends Node {
|
|
|
11599
11798
|
const dy = point.y - center.y;
|
|
11600
11799
|
return dx * dx / (rx * rx) + dy * dy / (ry * ry) <= 1;
|
|
11601
11800
|
}
|
|
11801
|
+
getOutlineDirection(param) {
|
|
11802
|
+
return this.outlineDirectionFromCenter(param);
|
|
11803
|
+
}
|
|
11602
11804
|
getConnectionPointAtOutlineParam(param) {
|
|
11603
11805
|
const center = this.getCenter();
|
|
11604
11806
|
const rx = this._width / 2;
|
|
@@ -11685,6 +11887,9 @@ var DiamondNode = class extends Node {
|
|
|
11685
11887
|
const dy = Math.abs(point.y - center.y);
|
|
11686
11888
|
return dx / hw + dy / hh <= 1;
|
|
11687
11889
|
}
|
|
11890
|
+
getOutlineDirection(param) {
|
|
11891
|
+
return this.outlineDirectionFromCenter(param);
|
|
11892
|
+
}
|
|
11688
11893
|
getConnectionPointAtOutlineParam(param) {
|
|
11689
11894
|
const center = this.getCenter();
|
|
11690
11895
|
const hw = this._width / 2;
|
|
@@ -11958,6 +12163,10 @@ var CustomShapeNode = class extends Node {
|
|
|
11958
12163
|
y: p.y + this._y
|
|
11959
12164
|
};
|
|
11960
12165
|
}
|
|
12166
|
+
getOutlineDirection(param) {
|
|
12167
|
+
if (!this.getOutlineSample()) return super.getOutlineDirection(param);
|
|
12168
|
+
return this.outlineDirectionFromCenter(param);
|
|
12169
|
+
}
|
|
11961
12170
|
getConnectionPointAtOutlineParam(param) {
|
|
11962
12171
|
const sample = this.getOutlineSample();
|
|
11963
12172
|
if (!sample) return super.getConnectionPointAtOutlineParam(param);
|