@focus.matters/diagrams 0.0.9 → 0.1.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/dist/{DirectedPoint-HRgiLZeU.js → DirectedPoint-BcpEj8ub.js} +2 -2
- package/dist/DirectedPoint-BcpEj8ub.js.map +1 -0
- package/dist/diagrams.css +1 -1
- package/dist/index-hTkL5cDr.js +12037 -0
- package/dist/index-hTkL5cDr.js.map +1 -0
- package/dist/index.d.ts +1 -8
- package/dist/index.es.js +8 -6
- package/dist/index.umd.js +5 -4
- package/dist/index.umd.js.map +1 -1
- package/dist/{Diagrams → src/Diagrams}/components/Canvas.d.ts +1 -0
- package/dist/src/Diagrams/components/extensions/RenderDiagramExtensions.d.ts +4 -0
- package/dist/src/Diagrams/components/extensions/RenderUIExtensions.d.ts +4 -0
- package/dist/{Diagrams → src/Diagrams}/components/extra/AlignmentSuggestions.d.ts +1 -0
- package/dist/{Diagrams → src/Diagrams}/components/extra/GatewayRender.d.ts +1 -0
- package/dist/src/Diagrams/components/extra/NodeGatewayRender.d.ts +6 -0
- package/dist/src/Diagrams/components/objects/CustomRenderers.d.ts +4 -0
- package/dist/src/Diagrams/components/objects/EdgeLabels.d.ts +7 -0
- package/dist/{Diagrams → src/Diagrams}/components/objects/RenderEdge/EdgeMarker.d.ts +1 -0
- package/dist/src/Diagrams/components/objects/RenderEdge/buildEdgePath.d.ts +5 -0
- package/dist/{Diagrams → src/Diagrams}/components/objects/RenderEdge/debugEdges.d.ts +4 -4
- package/dist/{Diagrams → src/Diagrams}/components/objects/RenderEdge/index.d.ts +1 -0
- package/dist/{Diagrams → src/Diagrams}/components/objects/RenderEdge/types.d.ts +3 -2
- package/dist/src/Diagrams/components/objects/ScreenRenderers.d.ts +4 -0
- package/dist/{Diagrams → src/Diagrams}/components/objects/Shape.d.ts +3 -3
- package/dist/src/Diagrams/components/objects/Shapes.d.ts +2 -0
- package/dist/{Diagrams → src/Diagrams}/components/objects/customRendererProps.d.ts +1 -1
- package/dist/src/Diagrams/components/objects/edgeLabelPlacement.d.ts +4 -0
- package/dist/src/Diagrams/components/objects/screenRendererProps.d.ts +18 -0
- package/dist/{Diagrams → src/Diagrams}/custom/agent/edges/AgentEdge.d.ts +20 -2
- package/dist/{Diagrams → src/Diagrams}/custom/agent/nodes/ActionNode.d.ts +1 -1
- package/dist/{Diagrams → src/Diagrams}/custom/agent/nodes/AgentNode.d.ts +21 -2
- package/dist/{Diagrams → src/Diagrams}/custom/agent/nodes/ConditionNode.d.ts +1 -1
- package/dist/{Diagrams → src/Diagrams}/custom/agent/nodes/OutcomeNode.d.ts +1 -1
- package/dist/{Diagrams → src/Diagrams}/custom/agent/nodes/TriggerNode.d.ts +1 -1
- package/dist/{Diagrams → src/Diagrams}/custom/agent/types.d.ts +6 -6
- package/dist/src/Diagrams/custom/bpmn/BPMDiagram.d.ts +14 -0
- package/dist/src/Diagrams/custom/bpmn/bpmnEvents.d.ts +4 -0
- package/dist/src/Diagrams/custom/bpmn/config/BPMNElementCatalog.d.ts +26 -0
- package/dist/src/Diagrams/custom/bpmn/config/BPMNLabels.d.ts +27 -0
- package/dist/src/Diagrams/custom/bpmn/edges/BPMNEdge.d.ts +77 -0
- package/dist/src/Diagrams/custom/bpmn/extensions/BPMNArtifactTransformer.d.ts +5 -0
- package/dist/src/Diagrams/custom/bpmn/extensions/BPMNEventAttachments.d.ts +19 -0
- package/dist/src/Diagrams/custom/bpmn/extensions/BPMNGridSnap.d.ts +23 -0
- package/dist/src/Diagrams/custom/bpmn/extensions/BPMNLaneResizer.d.ts +20 -0
- package/dist/src/Diagrams/custom/bpmn/extensions/BPMNModelerExtension.d.ts +97 -0
- package/dist/src/Diagrams/custom/bpmn/extensions/BPMNNodeResizer.d.ts +31 -0
- package/dist/src/Diagrams/custom/bpmn/extensions/BPMNPropertyChangeEvent.d.ts +4 -0
- package/dist/src/Diagrams/custom/bpmn/extensions/BPMNResizeSuggester.d.ts +23 -0
- package/dist/src/Diagrams/custom/bpmn/nodes/BPMNEventDefinition.d.ts +28 -0
- package/dist/src/Diagrams/custom/bpmn/nodes/BPMNode.d.ts +15 -0
- package/dist/src/Diagrams/custom/bpmn/nodes/BlackBoxPoolNode.d.ts +17 -0
- package/dist/src/Diagrams/custom/bpmn/nodes/DataStoreNode.d.ts +14 -0
- package/dist/src/Diagrams/custom/bpmn/nodes/DocumentAnnotationNode.d.ts +19 -0
- package/dist/src/Diagrams/custom/bpmn/nodes/DocumentNode.d.ts +13 -0
- package/dist/src/Diagrams/custom/bpmn/nodes/EventNode.d.ts +130 -0
- package/dist/{Diagrams → src/Diagrams}/custom/bpmn/nodes/GateNode.d.ts +30 -3
- package/dist/src/Diagrams/custom/bpmn/nodes/Lanes/LaneScreenRenderer.d.ts +6 -0
- package/dist/src/Diagrams/custom/bpmn/nodes/Lanes/index.d.ts +131 -0
- package/dist/src/Diagrams/custom/bpmn/nodes/TaskNode.d.ts +114 -0
- package/dist/{Diagrams/custom/bpmn/nodes/EventNode.d.ts → src/Diagrams/custom/bpmn/nodes/TextAnnotationNode.d.ts} +33 -16
- package/dist/{Diagrams → src/Diagrams}/custom/bpmn/nodes/UnknownBPMNNode.d.ts +22 -3
- package/dist/src/Diagrams/custom/bpmn/ui/BPMNDiagramControls.d.ts +6 -0
- package/dist/src/Diagrams/custom/bpmn/ui/BPMNElementMenu.d.ts +11 -0
- package/dist/src/Diagrams/custom/bpmn/ui/BPMNIcon.d.ts +9 -0
- package/dist/src/Diagrams/custom/bpmn/ui/BPMNPropertiesPanel.d.ts +6 -0
- package/dist/src/Diagrams/custom/bpmn/ui/BPMNResizeHandle.d.ts +7 -0
- package/dist/src/Diagrams/custom/bpmn/ui/resolveToolbarMenuPlacement.d.ts +18 -0
- package/dist/src/Diagrams/custom/bpmn/ui/resolveVisibleEdgeToolbarAnchor.d.ts +4 -0
- package/dist/src/Diagrams/custom/communication/edges/CommunicationEdge.d.ts +9 -0
- package/dist/{Diagrams → src/Diagrams}/custom/communication/nodes/CommunicationActorNode.d.ts +1 -1
- package/dist/{Diagrams → src/Diagrams}/custom/communication/nodes/CommunicationControllerNode.d.ts +1 -1
- package/dist/{Diagrams → src/Diagrams}/custom/communication/nodes/CommunicationObjectNode.d.ts +1 -1
- package/dist/src/Diagrams/custom/communication/types.d.ts +1 -0
- package/dist/src/Diagrams/custom/editable/EditableLabel.d.ts +8 -0
- package/dist/src/Diagrams/custom/editable/EditableNode.d.ts +21 -0
- package/dist/{Diagrams → src/Diagrams}/store/Canvas.d.ts +16 -6
- package/dist/{Diagrams → src/Diagrams}/store/Diagram.d.ts +77 -19
- package/dist/src/Diagrams/store/elements/DEdgeLabelChangeEvent.d.ts +5 -0
- package/dist/src/Diagrams/store/elements/Edge.d.ts +92 -0
- package/dist/src/Diagrams/store/elements/EdgeLabel.d.ts +64 -0
- package/dist/{Diagrams → src/Diagrams}/store/elements/EdgePoint.d.ts +4 -4
- package/dist/{Diagrams → src/Diagrams}/store/elements/Events.d.ts +11 -11
- package/dist/{Diagrams → src/Diagrams}/store/elements/Gateway.d.ts +27 -7
- package/dist/src/Diagrams/store/elements/Node.d.ts +143 -0
- package/dist/{Diagrams → src/Diagrams}/store/extensions/Creator.d.ts +1 -1
- package/dist/src/Diagrams/store/extensions/DiagramExtension.d.ts +23 -0
- package/dist/{Diagrams → src/Diagrams}/store/extensions/DistancesBalancer.d.ts +7 -1
- package/dist/{Diagrams → src/Diagrams}/store/extensions/Dragger.d.ts +20 -5
- package/dist/{Diagrams → src/Diagrams}/store/extensions/EdgesDragger.d.ts +38 -27
- package/dist/src/Diagrams/store/extensions/History.d.ts +23 -0
- package/dist/{Diagrams → src/Diagrams}/store/extensions/Hotkeys.d.ts +4 -1
- package/dist/src/Diagrams/store/extensions/LabelsAligner.d.ts +21 -0
- package/dist/src/Diagrams/store/extensions/NodesAligner.d.ts +46 -0
- package/dist/src/Diagrams/store/extensions/NodesConnector.d.ts +56 -0
- package/dist/{Diagrams → src/Diagrams}/store/extensions/Priorities.d.ts +2 -1
- package/dist/{Diagrams → src/Diagrams}/store/extensions/Rules.d.ts +6 -1
- package/dist/{Diagrams → src/Diagrams}/store/extensions/Selector.d.ts +18 -5
- package/dist/{Diagrams → src/Diagrams}/store/extensions/StraightDrag.d.ts +3 -0
- package/dist/src/Diagrams/store/extensions/StraightLabelsDrag.d.ts +10 -0
- package/dist/src/Diagrams/store/extensions/nodePositionProposalRanking.d.ts +8 -0
- package/dist/{Diagrams → src/Diagrams}/store/primitives/Coordinates.d.ts +1 -1
- package/dist/src/Diagrams/store/routers/CurvedRouter.d.ts +13 -0
- package/dist/src/Diagrams/store/routers/EdgesRouter.d.ts +21 -0
- package/dist/src/Diagrams/store/routers/OrthogonalRouter.d.ts +16 -0
- package/dist/src/Diagrams/store/routers/StraightRouter.d.ts +13 -0
- package/dist/src/Diagrams/store/routers/cardinalAxisConstraint.d.ts +7 -0
- package/dist/src/Diagrams/store/routers/getEdgesRouter.d.ts +4 -0
- package/dist/src/Diagrams/store/routers/resolveConnectionCandidate.d.ts +22 -0
- package/dist/{Diagrams → src/Diagrams}/store/types.d.ts +18 -9
- package/dist/src/Diagrams/util/Autopan.d.ts +14 -0
- package/dist/{Diagrams → src/Diagrams}/util/bpmn/applyBPMNImportPlan.d.ts +1 -0
- package/dist/{Diagrams → src/Diagrams}/util/bpmn/buildBPMNImportPlan.d.ts +1 -1
- package/dist/{Diagrams → src/Diagrams}/util/bpmn/index.d.ts +2 -1
- package/dist/src/Diagrams/util/bpmn/sanitizeId.d.ts +2 -0
- package/dist/{Diagrams → src/Diagrams}/util/bpmn/types.d.ts +2 -1
- package/dist/{Diagrams → src/Diagrams}/util/paths/orthogonalRouter.d.ts +2 -0
- package/dist/src/index.d.ts +11 -0
- package/package.json +1 -1
- package/dist/Diagrams/components/objects/CustomRenderers.d.ts +0 -6
- package/dist/Diagrams/components/objects/Shapes.d.ts +0 -1
- package/dist/Diagrams/custom/bpmn/BPMDiagram.d.ts +0 -5
- package/dist/Diagrams/custom/bpmn/bpmnEvents.d.ts +0 -3
- package/dist/Diagrams/custom/bpmn/nodes/BPMNode.d.ts +0 -6
- package/dist/Diagrams/custom/bpmn/nodes/Lanes/LanesResizer.d.ts +0 -6
- package/dist/Diagrams/custom/bpmn/nodes/Lanes/index.d.ts +0 -66
- package/dist/Diagrams/custom/bpmn/nodes/TaskNode.d.ts +0 -9
- package/dist/Diagrams/custom/communication/edges/CommunicationEdge.d.ts +0 -35
- package/dist/Diagrams/custom/communication/types.d.ts +0 -1
- package/dist/Diagrams/custom/editable/EditableLabel.d.ts +0 -3
- package/dist/Diagrams/custom/editable/EditableNode.d.ts +0 -15
- package/dist/Diagrams/custom/editable/EditableNodeContext.d.ts +0 -3
- package/dist/Diagrams/store/elements/Edge.d.ts +0 -42
- package/dist/Diagrams/store/elements/Node.d.ts +0 -73
- package/dist/Diagrams/store/extensions/DiagramExtension.d.ts +0 -13
- package/dist/Diagrams/store/extensions/History.d.ts +0 -15
- package/dist/Diagrams/store/extensions/NodesAligner.d.ts +0 -19
- package/dist/Diagrams/store/extensions/NodesConnector.d.ts +0 -27
- package/dist/Diagrams/util/paths/findBestPathBetweenNodes.d.ts +0 -8
- package/dist/DirectedPoint-HRgiLZeU.js.map +0 -1
- package/dist/index-DZNvKq1b.js +0 -6657
- package/dist/index-DZNvKq1b.js.map +0 -1
- /package/dist/{Diagrams → src/Diagrams}/DiagramEditor.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/components/extra/Measurement.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/components/extra/MouseTracker.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/components/extra/NodesConnectorRenderer.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/components/extra/PathFindingRenderer.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/components/extra/Selection.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/components/extra/Stats.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/components/extra/Svg.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/components/extra/Theme.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/components/extra/ToolsState.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/components/nodes/NodeTools.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/components/objects/Cross.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/components/objects/Grid.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/components/objects/RenderEdge/EdgeMidpoints.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/components/objects/RenderEdge/util.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/components/objects/makeScalableComponent.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/context-menu/ContextMenu.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/context-menu/buildDiagramContextMenu.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/context-menu/index.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/context-menu/types.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/custom/agent/AgentDiagram.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/custom/agent/index.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/custom/bpmn/edges/EdgeWithLoad.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/custom/bpmn/nodes/BPMNNodeContext.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/custom/communication/CommunicationDiagram.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/custom/communication/CommunicationNode.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/custom/editable/EditableDiagram.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/custom/editable/EditionMode.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/custom/editable/events.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/layout/HStack.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/store/elements/Element.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/store/elements/EventsMouseInformation.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/store/elements/TextNode.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/store/extensions/Debugger.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/store/extensions/GridSnap.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/store/extensions/Measurer.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/store/extensions/NodesResizer.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/store/extensions/PathFindingRenderer.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/store/primitives/Dimensions.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/store/primitives/DirectedPoint.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/ClassList.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/Mouse.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/Mutex.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/PriorityQueue.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/Semaphore.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/TasksQueue.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/arrayOrArray.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/awaitTime.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/binders.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/bpmn/importBPMNXmlIntoDiagram.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/bpmn/parseBPMNXml.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/cloneDeep.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/downloadFile.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/getEnumStr.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/getIdForNode.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/getUniqueId.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/insertSorted.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/paths/PathsGrid.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/paths/stepBackFromGateway.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/readFile.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/shapes.d.ts +0 -0
- /package/dist/{Diagrams → src/Diagrams}/util/throttle.d.ts +0 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { MouseEvent } from 'react';
|
|
2
|
+
import { Midpoint } from '../../components/objects/RenderEdge';
|
|
3
|
+
import { Coordinates } from '../primitives/Coordinates';
|
|
4
|
+
import { Dimensions } from '../primitives/Dimensions';
|
|
5
|
+
import { EdgeRouterAnchor } from '../routers/EdgesRouter';
|
|
6
|
+
import { EdgePathType, TEdgeAnchorState, TEdgeState } from '../types';
|
|
7
|
+
import { EdgeLabel } from './EdgeLabel';
|
|
8
|
+
import { EdgePoint, TSerializedEdgePoint } from './EdgePoint';
|
|
9
|
+
import { Element } from './Element';
|
|
10
|
+
import { Gateway } from './Gateway';
|
|
11
|
+
/** Models a routed connection, its endpoint anchors, editable label, and state. */
|
|
12
|
+
export declare class Edge extends Element {
|
|
13
|
+
state: TEdgeState;
|
|
14
|
+
id: Readonly<string>;
|
|
15
|
+
constructor(parent: Element | null, state: TEdgeState);
|
|
16
|
+
get arrowHeadEnd(): import('../types').EdgeArrowHead | undefined;
|
|
17
|
+
get arrowHeadStart(): import('../types').EdgeArrowHead | undefined;
|
|
18
|
+
get from(): Gateway;
|
|
19
|
+
get hasManualSteps(): EdgePoint | undefined;
|
|
20
|
+
get lineStyle(): import('../types').EdgeLineStyle | undefined;
|
|
21
|
+
get pathType(): EdgePathType;
|
|
22
|
+
get startAnchor(): TEdgeAnchorState;
|
|
23
|
+
get endAnchor(): TEdgeAnchorState;
|
|
24
|
+
get steps(): EdgePoint[];
|
|
25
|
+
get stroke(): string | undefined;
|
|
26
|
+
get strokeWidth(): number | undefined;
|
|
27
|
+
get labels(): readonly EdgeLabel[];
|
|
28
|
+
/** Creates one independent blank label exactly at the supplied world position. */
|
|
29
|
+
createLabel(position: Coordinates): EdgeLabel;
|
|
30
|
+
/** Removes one owned label and optionally records the deletion in history. */
|
|
31
|
+
removeLabel(label: EdgeLabel, emitChange?: boolean): void;
|
|
32
|
+
/** Updates the first label used by property panels, creating it when necessary. */
|
|
33
|
+
setPrimaryLabel(text: string): EdgeLabel | null;
|
|
34
|
+
/** Finds the length-weighted route midpoint used for programmatic first labels. */
|
|
35
|
+
defaultLabelPosition(): Coordinates;
|
|
36
|
+
/** Reports whether any routed segment intersects the supplied diagram bounds. */
|
|
37
|
+
collides(box: Dimensions): boolean;
|
|
38
|
+
/** Updates one observable edge-state property through a MobX action boundary. */
|
|
39
|
+
setState<K extends keyof TEdgeState>(prop: K, value: TEdgeState[K]): void;
|
|
40
|
+
/** Replaces the route and marks both endpoint coordinates as immutable anchors. */
|
|
41
|
+
setSteps(steps: Coordinates[]): void;
|
|
42
|
+
/** Changes this edge routing strategy and immediately rebuilds its route. */
|
|
43
|
+
setPathType(pathType: EdgePathType): void;
|
|
44
|
+
/** Resolves a persisted fixed endpoint against the node's current geometry. */
|
|
45
|
+
resolveEndpointAnchor(endpoint: "from" | "to"): EdgeRouterAnchor;
|
|
46
|
+
/** Changes one endpoint between automatic and exact boundary positioning. */
|
|
47
|
+
setEndpointAnchor(endpoint: "from" | "to", anchor: TEdgeAnchorState, recompute?: boolean): void;
|
|
48
|
+
/** Reconnects one endpoint to a resolved node anchor and optionally reroutes. */
|
|
49
|
+
setResolvedEndpoint(endpoint: "from" | "to", resolved: EdgeRouterAnchor, anchor: TEdgeAnchorState, recompute?: boolean): void;
|
|
50
|
+
/** Reattaches resolved gateways safely and updates derived displacements. */
|
|
51
|
+
applyResolvedAnchors(start: EdgeRouterAnchor, end: EdgeRouterAnchor): void;
|
|
52
|
+
get to(): Gateway;
|
|
53
|
+
/** Restores the complete current edge contract and reconnects its target node. */
|
|
54
|
+
deserialize(o: ReturnType<(typeof this)["serialize"]>): void;
|
|
55
|
+
/** Serializes routing, endpoint anchors, presentation, and editable label state. */
|
|
56
|
+
serialize(): {
|
|
57
|
+
arrowHeadEnd: import('../types').EdgeArrowHead | undefined;
|
|
58
|
+
arrowHeadStart: import('../types').EdgeArrowHead | undefined;
|
|
59
|
+
displacementEnd: [number, number] | undefined;
|
|
60
|
+
displacementStart: [number, number] | undefined;
|
|
61
|
+
lineStyle: import('../types').EdgeLineStyle | undefined;
|
|
62
|
+
labels: {
|
|
63
|
+
alignment: "right" | "left" | "center";
|
|
64
|
+
id: string;
|
|
65
|
+
size: {
|
|
66
|
+
height: number;
|
|
67
|
+
width: number;
|
|
68
|
+
};
|
|
69
|
+
text: string;
|
|
70
|
+
position: [number, number];
|
|
71
|
+
}[];
|
|
72
|
+
pathType: EdgePathType;
|
|
73
|
+
startAnchor: {
|
|
74
|
+
mode: import('../types').EdgeAnchorMode;
|
|
75
|
+
position: [number, number] | undefined;
|
|
76
|
+
};
|
|
77
|
+
endAnchor: {
|
|
78
|
+
mode: import('../types').EdgeAnchorMode;
|
|
79
|
+
position: [number, number] | undefined;
|
|
80
|
+
};
|
|
81
|
+
steps: TSerializedEdgePoint[];
|
|
82
|
+
stroke: string | undefined;
|
|
83
|
+
strokeWidth: number | undefined;
|
|
84
|
+
to: string;
|
|
85
|
+
toParentId: string;
|
|
86
|
+
class: string;
|
|
87
|
+
};
|
|
88
|
+
/** Starts an orthogonal segment drag by emitting its normalized diagram event. */
|
|
89
|
+
dragStart(midpoint: Midpoint, ev: MouseEvent): void;
|
|
90
|
+
/** Starts reconnecting one endpoint while preventing duplicate pointer handling. */
|
|
91
|
+
dragEndpoint(endpoint: "from" | "to", ev: MouseEvent): void;
|
|
92
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Coordinates } from '../primitives/Coordinates';
|
|
2
|
+
import { Edge } from './Edge';
|
|
3
|
+
import { Element } from './Element';
|
|
4
|
+
type EdgeLabelState = {
|
|
5
|
+
alignment?: "left" | "center" | "right";
|
|
6
|
+
id?: string;
|
|
7
|
+
text?: string;
|
|
8
|
+
position: Coordinates;
|
|
9
|
+
size?: {
|
|
10
|
+
height: number;
|
|
11
|
+
width: number;
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
/** Models one independently editable and movable screen-rendered edge label. */
|
|
15
|
+
export declare class EdgeLabel extends Element {
|
|
16
|
+
parent: Edge;
|
|
17
|
+
readonly id: string;
|
|
18
|
+
text: string;
|
|
19
|
+
alignment: "left" | "center" | "right";
|
|
20
|
+
size: {
|
|
21
|
+
height: number;
|
|
22
|
+
width: number;
|
|
23
|
+
};
|
|
24
|
+
position: Coordinates;
|
|
25
|
+
isEditing: boolean;
|
|
26
|
+
draft: string;
|
|
27
|
+
private isNew;
|
|
28
|
+
constructor(parent: Edge, state: EdgeLabelState, isNew?: boolean);
|
|
29
|
+
/** Replaces persisted text for programmatic editors without emitting history. */
|
|
30
|
+
setText(text: string): void;
|
|
31
|
+
/** Changes horizontal text alignment and records the presentation update in history. */
|
|
32
|
+
setAlignment(alignment: "left" | "center" | "right"): void;
|
|
33
|
+
/** Replaces the persisted world-space label box size without emitting history immediately. */
|
|
34
|
+
setSize(size: {
|
|
35
|
+
height: number;
|
|
36
|
+
width: number;
|
|
37
|
+
}): void;
|
|
38
|
+
/** Opens this label editor with a draft copied from its persisted text value. */
|
|
39
|
+
beginEdit(): void;
|
|
40
|
+
/** Updates only the transient input draft while the label remains in edition. */
|
|
41
|
+
setDraft(text: string): void;
|
|
42
|
+
/** Cancels editing and discards a newly-created label that has never persisted. */
|
|
43
|
+
cancelEdit(): void;
|
|
44
|
+
/** Removes this label and emits history only when it has already been persisted. */
|
|
45
|
+
delete(): void;
|
|
46
|
+
/** Commits edited text, removing empty labels and emitting one history change. */
|
|
47
|
+
confirmEdit(): void;
|
|
48
|
+
/** Moves this label to an absolute diagram position without changing its edge. */
|
|
49
|
+
setPosition(position: Coordinates): void;
|
|
50
|
+
/** Records the completed pointer movement as one undoable diagram mutation. */
|
|
51
|
+
commitPosition(): void;
|
|
52
|
+
/** Serializes identity, alignment, size, text, and absolute world position for persistence. */
|
|
53
|
+
serialize(): {
|
|
54
|
+
alignment: "right" | "left" | "center";
|
|
55
|
+
id: string;
|
|
56
|
+
size: {
|
|
57
|
+
height: number;
|
|
58
|
+
width: number;
|
|
59
|
+
};
|
|
60
|
+
text: string;
|
|
61
|
+
position: [number, number];
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Coordinates } from '../primitives/Coordinates';
|
|
2
2
|
import { Element } from './Element';
|
|
3
3
|
import { AnyMouseEvent } from './Events';
|
|
4
|
-
export type TEdgePointType =
|
|
5
|
-
export type TEdgePointManualAxes =
|
|
4
|
+
export type TEdgePointType = "auto" | "manual" | "static";
|
|
5
|
+
export type TEdgePointManualAxes = "none" | "x" | "y" | "both";
|
|
6
6
|
export type TSerializedEdgePoint = [number, number, TEdgePointType] | [number, number, TEdgePointType, TEdgePointManualAxes];
|
|
7
7
|
export declare class EdgePoint extends Coordinates {
|
|
8
8
|
parent: Element | null;
|
|
@@ -11,8 +11,8 @@ export declare class EdgePoint extends Coordinates {
|
|
|
11
11
|
constructor(parent: Element | null, items?: AnyMouseEvent | Event | Coordinates | number[] | TSerializedEdgePoint);
|
|
12
12
|
get manualX(): boolean;
|
|
13
13
|
get manualY(): boolean;
|
|
14
|
-
addManualAxis(axis:
|
|
15
|
-
hasManualAxis(axis:
|
|
14
|
+
addManualAxis(axis: "x" | "y" | "both"): this;
|
|
15
|
+
hasManualAxis(axis: "x" | "y"): boolean;
|
|
16
16
|
markStatic(): this;
|
|
17
17
|
copy(): EdgePoint;
|
|
18
18
|
toString(includeMode?: boolean): string;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { KeyboardEvent as KE, MouseEvent as ME } from 'react';
|
|
2
|
+
import { Midpoint } from '../../components/objects/RenderEdge';
|
|
3
3
|
import { Coordinates } from '../primitives/Coordinates';
|
|
4
|
-
import { Node } from './Node';
|
|
5
4
|
import { Edge } from './Edge';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { Element } from './Element';
|
|
6
|
+
import { Node } from './Node';
|
|
8
7
|
import { Dimensions } from '../primitives/Dimensions';
|
|
8
|
+
import { MouseInformation } from './EventsMouseInformation';
|
|
9
9
|
export type AnyMouseEvent = ME | MouseEvent;
|
|
10
10
|
export type AnyKeyboardEvent = KE | KeyboardEvent;
|
|
11
11
|
export declare abstract class DEvent {
|
|
@@ -191,10 +191,10 @@ export declare class DEdgeDragStartEvent extends DDragEvent {
|
|
|
191
191
|
}
|
|
192
192
|
export declare class DEdgeEndpointDragStartEvent extends DDragEvent {
|
|
193
193
|
src: Edge;
|
|
194
|
-
endpoint:
|
|
194
|
+
endpoint: "from" | "to";
|
|
195
195
|
originalEvent: AnyMouseEvent;
|
|
196
196
|
protected readonly __brand: void;
|
|
197
|
-
constructor(src: Edge, endpoint:
|
|
197
|
+
constructor(src: Edge, endpoint: "from" | "to", originalEvent: AnyMouseEvent);
|
|
198
198
|
}
|
|
199
199
|
export declare class NodePositionProposal {
|
|
200
200
|
readonly node: Node<any>;
|
|
@@ -222,11 +222,11 @@ export declare class DDragNodeEvent extends DDragEvent {
|
|
|
222
222
|
}
|
|
223
223
|
export declare class EdgePointPositionProposal {
|
|
224
224
|
readonly point: Coordinates;
|
|
225
|
-
readonly movedAxis:
|
|
225
|
+
readonly movedAxis: "x" | "y";
|
|
226
226
|
private _updated;
|
|
227
227
|
private _lockX;
|
|
228
228
|
private _lockY;
|
|
229
|
-
constructor(point: Coordinates, movedAxis:
|
|
229
|
+
constructor(point: Coordinates, movedAxis: "x" | "y");
|
|
230
230
|
get current(): Coordinates;
|
|
231
231
|
get(): Coordinates;
|
|
232
232
|
lockX(): void;
|
|
@@ -238,7 +238,7 @@ export declare class EdgePointPositionProposal {
|
|
|
238
238
|
export declare class DDragEdgeSegmentEvent extends DDragEvent {
|
|
239
239
|
src: Element;
|
|
240
240
|
proposals: EdgePointPositionProposal[];
|
|
241
|
-
movedAxis:
|
|
241
|
+
movedAxis: "x" | "y";
|
|
242
242
|
protected readonly __brand: void;
|
|
243
|
-
constructor(src: Element, proposals: EdgePointPositionProposal[], movedAxis:
|
|
243
|
+
constructor(src: Element, proposals: EdgePointPositionProposal[], movedAxis: "x" | "y", originalEvent: AnyMouseEvent);
|
|
244
244
|
}
|
|
@@ -6,10 +6,12 @@ import { Element } from './Element';
|
|
|
6
6
|
export declare class Gateway extends Element {
|
|
7
7
|
parent: Node<any>;
|
|
8
8
|
state: TGatewayState;
|
|
9
|
-
constructor(parent: Node<any>, state: Pick<TGatewayState,
|
|
10
|
-
addIncomingEdge(edge: Edge): void;
|
|
11
|
-
addOutgoingEdge(edge: Edge): void;
|
|
12
|
-
canConnect(from: Gateway): boolean;
|
|
9
|
+
constructor(parent: Node<any>, state: Pick<TGatewayState, "maxIncomingConnections" | "maxOutgoingConnections" | "orientation" | "id"> & Partial<TGatewayState>);
|
|
10
|
+
addIncomingEdge(edge: Edge, _recompute?: boolean): void;
|
|
11
|
+
addOutgoingEdge(edge: Edge, recompute?: boolean): void;
|
|
12
|
+
canConnect(from: Gateway, ignoreEdge?: Edge): boolean;
|
|
13
|
+
/** Checks outgoing capacity while optionally ignoring a reconnected edge. */
|
|
14
|
+
canStartConnection(to: Gateway, ignoreEdge?: Edge): boolean;
|
|
13
15
|
connectionDisplacement(c: Coordinates): Coordinates;
|
|
14
16
|
connectionDistance(c: Coordinates): number;
|
|
15
17
|
removeIncomingEdge(edge: Edge): void;
|
|
@@ -26,10 +28,10 @@ export declare class Gateway extends Element {
|
|
|
26
28
|
get id(): string;
|
|
27
29
|
get direction(): "horizontal" | "vertical";
|
|
28
30
|
get orientation(): import('../types').TOrientation;
|
|
29
|
-
recomputeConnectedEdge(edge: Edge, _movedSide:
|
|
31
|
+
recomputeConnectedEdge(edge: Edge, _movedSide: "from" | "to"): void;
|
|
30
32
|
updateEdges(): void;
|
|
31
33
|
get remainingSlots(): number;
|
|
32
|
-
deserialize(c: ReturnType<(typeof this)[
|
|
34
|
+
deserialize(c: ReturnType<(typeof this)["serialize"]>): void;
|
|
33
35
|
serialize(): {
|
|
34
36
|
coordinates: [number, number];
|
|
35
37
|
fill: string | undefined;
|
|
@@ -44,7 +46,25 @@ export declare class Gateway extends Element {
|
|
|
44
46
|
displacementEnd: [number, number] | undefined;
|
|
45
47
|
displacementStart: [number, number] | undefined;
|
|
46
48
|
lineStyle: import('../types').EdgeLineStyle | undefined;
|
|
47
|
-
|
|
49
|
+
labels: {
|
|
50
|
+
alignment: "right" | "left" | "center";
|
|
51
|
+
id: string;
|
|
52
|
+
size: {
|
|
53
|
+
height: number;
|
|
54
|
+
width: number;
|
|
55
|
+
};
|
|
56
|
+
text: string;
|
|
57
|
+
position: [number, number];
|
|
58
|
+
}[];
|
|
59
|
+
pathType: import('../types').EdgePathType;
|
|
60
|
+
startAnchor: {
|
|
61
|
+
mode: import('../types').EdgeAnchorMode;
|
|
62
|
+
position: [number, number] | undefined;
|
|
63
|
+
};
|
|
64
|
+
endAnchor: {
|
|
65
|
+
mode: import('../types').EdgeAnchorMode;
|
|
66
|
+
position: [number, number] | undefined;
|
|
67
|
+
};
|
|
48
68
|
steps: import('./EdgePoint').TSerializedEdgePoint[];
|
|
49
69
|
stroke: string | undefined;
|
|
50
70
|
strokeWidth: number | undefined;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { ClassList } from '../../util/ClassList';
|
|
3
|
+
import { Diagram } from '../Diagram';
|
|
4
|
+
import { Coordinates } from '../primitives/Coordinates';
|
|
5
|
+
import { Dimensions } from '../primitives/Dimensions';
|
|
6
|
+
import { EdgeRouterAnchor } from '../routers/EdgesRouter';
|
|
7
|
+
import { EdgePathType, TNodeState, TOrientation } from '../types';
|
|
8
|
+
import { Element } from './Element';
|
|
9
|
+
import { Gateway } from './Gateway';
|
|
10
|
+
type EdgeGatewayShape = "rectangle" | "ellipse" | "diamond";
|
|
11
|
+
export type TNodeConstructorProps = Pick<TNodeState, "id" | "label"> & Partial<TNodeState>;
|
|
12
|
+
export type TNodeRenderProps<N extends Node<any> = Node<any>> = {
|
|
13
|
+
node: N;
|
|
14
|
+
box: Dimensions;
|
|
15
|
+
};
|
|
16
|
+
export type TNodeScreenRenderProps<N extends Node<any> = Node<any>> = TNodeRenderProps<N> & {
|
|
17
|
+
scale: number;
|
|
18
|
+
};
|
|
19
|
+
/** Models a positioned diagram element with declared gateways and routed edges. */
|
|
20
|
+
export declare class Node<Gateways = TOrientation> extends Element {
|
|
21
|
+
protected _gateways: Map<Gateways, Gateway>;
|
|
22
|
+
state: TNodeState;
|
|
23
|
+
readonly classList: ClassList;
|
|
24
|
+
edgesAsGateways: boolean;
|
|
25
|
+
requiredEdgePathType: EdgePathType | null;
|
|
26
|
+
protected edgeGatewayShape: EdgeGatewayShape;
|
|
27
|
+
get selected(): boolean | undefined;
|
|
28
|
+
/** Reports whether this node owns the diagram-wide hover state right now. */
|
|
29
|
+
get hovered(): boolean;
|
|
30
|
+
constructor(parent: Element | null, state: TNodeConstructorProps);
|
|
31
|
+
/** Reports whether current state and node policy allow entering selection now. */
|
|
32
|
+
canSelect(): boolean;
|
|
33
|
+
/** Reports whether the node currently participates in the active selection. */
|
|
34
|
+
canUnselect(): boolean;
|
|
35
|
+
/** Attaches this node to the diagram that owns its rendering and connections. */
|
|
36
|
+
setDiagram(d: Diagram): void;
|
|
37
|
+
/** Updates one observable node-state property through a MobX action boundary. */
|
|
38
|
+
setState<K extends keyof TNodeState>(prop: K, value: TNodeState[K]): void;
|
|
39
|
+
/** Requests or releases exclusive hover ownership through the parent diagram. */
|
|
40
|
+
setHovered(hovered: boolean): void;
|
|
41
|
+
protected initializeGateways(): void;
|
|
42
|
+
get box(): Dimensions;
|
|
43
|
+
get coordinates(): Coordinates;
|
|
44
|
+
/** Translates the node box by a canvas-space displacement without rerouting. */
|
|
45
|
+
displace(howMuch: Coordinates): void;
|
|
46
|
+
get id(): string;
|
|
47
|
+
/** Returns the persisted displacement of a movable external node label. */
|
|
48
|
+
get labelOffset(): Coordinates;
|
|
49
|
+
/** Moves an external label while keeping it within a nearby bounded region. */
|
|
50
|
+
setLabelOffset(offset: Coordinates | [number, number]): void;
|
|
51
|
+
get gateways(): Gateway[];
|
|
52
|
+
protected dragEventMouseStartPosition: Coordinates | null;
|
|
53
|
+
protected dragEventStartPosition: Coordinates | null;
|
|
54
|
+
/** Returns the gateway registered under the requested node-specific identifier. */
|
|
55
|
+
getGateway(which: Gateways): Gateway | undefined;
|
|
56
|
+
private boundaryPoint;
|
|
57
|
+
private anchorForBoundaryPoint;
|
|
58
|
+
/** Resolves a precise mouse location to the nearest valid boundary anchor. */
|
|
59
|
+
findFixedConnectionAnchor(point: Coordinates): EdgeRouterAnchor;
|
|
60
|
+
/** Finds the exact shape intersection sharing one cardinal axis with an endpoint. */
|
|
61
|
+
findAxisAlignedConnectionAnchor(oppositePoint: Coordinates, axis: "horizontal" | "vertical"): EdgeRouterAnchor | null;
|
|
62
|
+
/** Resolves the exact shape-boundary intersection facing a supplied route hint. */
|
|
63
|
+
findAutomaticConnectionAnchor(towards: Coordinates): EdgeRouterAnchor;
|
|
64
|
+
/** Selects the nearest declared perimeter gateway for automatic routed edges. */
|
|
65
|
+
findAutomaticGatewayAnchor(towards: Coordinates): EdgeRouterAnchor;
|
|
66
|
+
/** Restores a fixed relative boundary position after node movement or resize. */
|
|
67
|
+
findRelativeConnectionAnchor(position: Coordinates): EdgeRouterAnchor;
|
|
68
|
+
/** Returns whether an interior drop should let the router choose the anchor. */
|
|
69
|
+
usesAutomaticConnectionPoint(point: Coordinates): boolean;
|
|
70
|
+
/** Builds the invisible SVG boundary used to begin connections anywhere. */
|
|
71
|
+
get connectionBoundaryPath(): string;
|
|
72
|
+
/** Replaces node width and height while retaining its current canvas position. */
|
|
73
|
+
setDimentions(c: Coordinates | [number, number]): void;
|
|
74
|
+
private updateConnectedEdges;
|
|
75
|
+
/** Moves the node inside canvas bounds and optionally recomputes attached edges. */
|
|
76
|
+
setPosition(c: Coordinates, options?: {
|
|
77
|
+
updateConnectedEdges?: boolean;
|
|
78
|
+
}): void;
|
|
79
|
+
/** Restores node geometry, gateways, and outgoing edges from the current contract. */
|
|
80
|
+
deserialize(o: ReturnType<(typeof this)["serialize"]>): void;
|
|
81
|
+
/** Serializes node geometry, presentation, selection, gateways, and connections. */
|
|
82
|
+
serialize(): {
|
|
83
|
+
box: [number, number, number, number];
|
|
84
|
+
id: string;
|
|
85
|
+
label: string;
|
|
86
|
+
movable: boolean | undefined;
|
|
87
|
+
selectable: boolean | undefined;
|
|
88
|
+
selected: boolean | undefined;
|
|
89
|
+
gateways: {
|
|
90
|
+
coordinates: [number, number];
|
|
91
|
+
fill: string | undefined;
|
|
92
|
+
id: string;
|
|
93
|
+
orientation: TOrientation;
|
|
94
|
+
radius: number;
|
|
95
|
+
stroke: string | undefined;
|
|
96
|
+
strokeWidth: number;
|
|
97
|
+
outEdges: {
|
|
98
|
+
arrowHeadEnd: import('../types').EdgeArrowHead | undefined;
|
|
99
|
+
arrowHeadStart: import('../types').EdgeArrowHead | undefined;
|
|
100
|
+
displacementEnd: [number, number] | undefined;
|
|
101
|
+
displacementStart: [number, number] | undefined;
|
|
102
|
+
lineStyle: import('../types').EdgeLineStyle | undefined;
|
|
103
|
+
labels: {
|
|
104
|
+
alignment: "right" | "left" | "center";
|
|
105
|
+
id: string;
|
|
106
|
+
size: {
|
|
107
|
+
height: number;
|
|
108
|
+
width: number;
|
|
109
|
+
};
|
|
110
|
+
text: string;
|
|
111
|
+
position: [number, number];
|
|
112
|
+
}[];
|
|
113
|
+
pathType: EdgePathType;
|
|
114
|
+
startAnchor: {
|
|
115
|
+
mode: import('../types').EdgeAnchorMode;
|
|
116
|
+
position: [number, number] | undefined;
|
|
117
|
+
};
|
|
118
|
+
endAnchor: {
|
|
119
|
+
mode: import('../types').EdgeAnchorMode;
|
|
120
|
+
position: [number, number] | undefined;
|
|
121
|
+
};
|
|
122
|
+
steps: import('./EdgePoint').TSerializedEdgePoint[];
|
|
123
|
+
stroke: string | undefined;
|
|
124
|
+
strokeWidth: number | undefined;
|
|
125
|
+
to: string;
|
|
126
|
+
toParentId: string;
|
|
127
|
+
class: string;
|
|
128
|
+
}[];
|
|
129
|
+
class: string;
|
|
130
|
+
}[];
|
|
131
|
+
fill: string | undefined;
|
|
132
|
+
labelFontSize: number | undefined;
|
|
133
|
+
labelOffset: [number, number] | undefined;
|
|
134
|
+
stroke: string | undefined;
|
|
135
|
+
strokewWidth: number | undefined;
|
|
136
|
+
class: string;
|
|
137
|
+
};
|
|
138
|
+
/** Remaps node-specific serialized references when import or copy changes ids. */
|
|
139
|
+
remapSerializedReferences<T>(state: T, _idMap: ReadonlyMap<string, string>): T;
|
|
140
|
+
RenderOverlay: FC<any> | null;
|
|
141
|
+
RenderScreen: FC<any> | null;
|
|
142
|
+
}
|
|
143
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DClickEvent } from '../elements/Events';
|
|
2
2
|
import { DiagramExtension } from './DiagramExtension';
|
|
3
|
-
export type TCreationMode =
|
|
3
|
+
export type TCreationMode = "none" | "text";
|
|
4
4
|
export declare class Creator extends DiagramExtension {
|
|
5
5
|
creationMode: TCreationMode;
|
|
6
6
|
init(): void;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { Diagram } from '../Diagram';
|
|
3
|
+
import { Element } from '../elements/Element';
|
|
4
|
+
export type TDiagramExtensionRenderProps<T extends DiagramExtension = DiagramExtension> = {
|
|
5
|
+
diagram: Diagram;
|
|
6
|
+
extension: T;
|
|
7
|
+
};
|
|
8
|
+
export declare abstract class DiagramExtension extends Element {
|
|
9
|
+
parent: Diagram;
|
|
10
|
+
constructor(parent: Diagram);
|
|
11
|
+
abstract init(): void;
|
|
12
|
+
/** Renders fixed editor chrome that remains independent from canvas panning. */
|
|
13
|
+
RenderUI: FC<TDiagramExtensionRenderProps<any>> | null;
|
|
14
|
+
/** Renders viewport-projected content that follows diagram pan and zoom state. */
|
|
15
|
+
RenderDiagram: FC<TDiagramExtensionRenderProps<any>> | null;
|
|
16
|
+
get diagram(): Diagram;
|
|
17
|
+
protected _enable: boolean;
|
|
18
|
+
get enabled(): boolean;
|
|
19
|
+
disable(): void;
|
|
20
|
+
enable(): void;
|
|
21
|
+
/** Changes the enabled state and optionally persists the user's preference. */
|
|
22
|
+
toggle(newValue?: boolean, persist?: boolean): void;
|
|
23
|
+
}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import { DiagramExtension } from './DiagramExtension';
|
|
2
1
|
import { Coordinates } from '../primitives/Coordinates';
|
|
2
|
+
import { DiagramExtension } from './DiagramExtension';
|
|
3
3
|
type Proposal = {
|
|
4
4
|
from: Coordinates;
|
|
5
5
|
to: Coordinates;
|
|
6
6
|
};
|
|
7
|
+
/** Balances spacing using the best matching member of a rigid dragged group. */
|
|
7
8
|
export declare class DistancesBalancer extends DiagramExtension {
|
|
8
9
|
private gridSize;
|
|
9
10
|
proposals: Proposal[];
|
|
11
|
+
/** Removes every transient equal-distance guide when the current drag finishes. */
|
|
10
12
|
clear(): void;
|
|
13
|
+
/** Registers best-candidate equal-distance balancing for every node drag event. */
|
|
11
14
|
init(): void;
|
|
15
|
+
private balance;
|
|
16
|
+
private findNeighbors;
|
|
17
|
+
private applyCandidate;
|
|
12
18
|
}
|
|
13
19
|
export {};
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { Diagram } from '../Diagram';
|
|
2
|
+
import { DMouseDownEvent, DMouseMoveEvent, DScaleEvent } from '../elements/Events';
|
|
2
3
|
import { Node } from '../elements/Node';
|
|
3
4
|
import { Coordinates } from '../primitives/Coordinates';
|
|
4
|
-
import { DMouseDownEvent, DMouseMoveEvent, DScaleEvent } from '../elements/Events';
|
|
5
5
|
import { DiagramExtension } from './DiagramExtension';
|
|
6
|
+
type StartDragOptions = {
|
|
7
|
+
deferAutopanUntilSafe?: boolean;
|
|
8
|
+
startImmediately?: boolean;
|
|
9
|
+
};
|
|
6
10
|
/**
|
|
7
11
|
* Conditions for dragging:
|
|
8
12
|
*
|
|
@@ -10,14 +14,19 @@ import { DiagramExtension } from './DiagramExtension';
|
|
|
10
14
|
* - The selection mode isn't enabled
|
|
11
15
|
* - The mouse button is the left click
|
|
12
16
|
*/
|
|
13
|
-
/**
|
|
14
|
-
*/
|
|
17
|
+
/** Coordinates single, grouped, and rigid multi-node dragging with canvas auto-pan. */
|
|
15
18
|
export declare class Dragger extends DiagramExtension {
|
|
16
19
|
private dragThreshold;
|
|
20
|
+
private readonly autopan;
|
|
21
|
+
private autopanReady;
|
|
22
|
+
private dragStarted;
|
|
23
|
+
private draggingLabel;
|
|
24
|
+
private primaryNodeId;
|
|
17
25
|
/**
|
|
18
26
|
* childId -> parentId, built at drag start for grouped nodes.
|
|
19
27
|
*/
|
|
20
28
|
private groupedChildren;
|
|
29
|
+
/** Registers diagram input listeners that drive node movement and drag cleanup. */
|
|
21
30
|
init(): void;
|
|
22
31
|
constructor(parent: Diagram);
|
|
23
32
|
protected draggingNodes: Map<string, {
|
|
@@ -28,19 +37,25 @@ export declare class Dragger extends DiagramExtension {
|
|
|
28
37
|
protected startPointScaled: Coordinates;
|
|
29
38
|
protected mousePoint: Coordinates;
|
|
30
39
|
protected unsubscribe: () => void;
|
|
31
|
-
|
|
40
|
+
/** Starts a pointer-aligned programmatic drag with optional deferred auto-pan. */
|
|
41
|
+
startDrag(node: Node, mousePoint?: Coordinates, options?: StartDragOptions): void;
|
|
32
42
|
protected originalEvent: DMouseDownEvent | null;
|
|
43
|
+
private labelDragHandle;
|
|
44
|
+
private createLabelDragState;
|
|
45
|
+
private snapLabelOffset;
|
|
33
46
|
protected handleMouseDown(ev: DMouseDownEvent): void;
|
|
34
47
|
protected handleMouseMove(ev: DMouseMoveEvent): void;
|
|
35
48
|
protected handleDragAction(): void;
|
|
36
|
-
private calcDisplacement;
|
|
37
49
|
private isFullyContained;
|
|
38
50
|
private collectConnectedEdges;
|
|
39
51
|
private translateEdge;
|
|
40
52
|
private updateEdgesAfterBatchMove;
|
|
53
|
+
private rigidSelectionDisplacement;
|
|
41
54
|
private applyNodePositionProposals;
|
|
42
55
|
private includeGroupedChildren;
|
|
43
56
|
protected handleDragInterval(): void;
|
|
44
57
|
protected handleMouseUp(): void;
|
|
58
|
+
private pointerIsInsideSafeViewport;
|
|
45
59
|
protected handleScale(_ev: DScaleEvent): void;
|
|
46
60
|
}
|
|
61
|
+
export {};
|