previewEndpoint method

({ConnectorElement connector, EditResult decision}) previewEndpoint(
  1. String id, {
  2. required bool atStart,
  3. required ConnectorEndpoint endpoint,
  4. FreeEndpoint? deniedTargetFallback,
})

A rejected candidate restores the original connector unless the host explicitly requests a free endpoint fallback.

Implementation

({EditResult decision, ConnectorElement connector}) previewEndpoint(
  String id, {
  required bool atStart,
  required ConnectorEndpoint endpoint,
  FreeEndpoint? deniedTargetFallback,
}) {
  final start = store.internals.interactionStart;
  if (start == null) throw StateError('No endpoint interaction is active.');
  final original = _requireConnector(start.document, id);
  final decision = _endpointDecision(
    original,
    endpoint,
    atStart,
    DiagramConnectionIntentPhase.preview,
  );
  final admitted = decision.allowed ? endpoint : deniedTargetFallback;
  final next = admitted == null
      ? original
      : _replaceEndpoint(original, admitted, atStart);
  final admission = store.internals.previewInteraction(
    DiagramTransaction(
      label: 'Reconnect endpoint',
      steps: [ReplaceElementStep(before: original, after: next)],
    ),
  );
  return (
    decision: admission.allowed ? decision : admission,
    connector: admission.allowed ? next : original,
  );
}