previewCreation method
({ConnectorElement? connector, EditResult decision})
previewCreation(
- ConnectorElement connector, {
- FreeEndpoint? deniedTargetFallback,
- bool select = true,
- String label = 'Create connector',
Publishes a new connector from the immutable gesture baseline. A denied binding may become an explicitly supplied free endpoint; without that fallback, the preview is withdrawn. The decision still reports denial.
Implementation
({EditResult decision, ConnectorElement? connector}) previewCreation(
ConnectorElement connector, {
FreeEndpoint? deniedTargetFallback,
bool select = true,
String label = 'Create connector',
}) {
final start = store.internals.interactionStart;
if (start == null) throw StateError('No connection interaction is active.');
if (diagramHasCanonicalId(start.document, connector.id)) {
throw StateError('Element ${connector.id} already exists.');
}
final decision = evaluateConnector(
connector,
phase: DiagramConnectionIntentPhase.preview,
);
final admitted = decision.allowed
? connector
: deniedTargetFallback == null
? null
: connector.copyWith(end: deniedTargetFallback);
final admission = store.internals.previewInteraction(
DiagramTransaction(
label: label,
steps: [
if (admitted != null) InsertElementsStep([admitted]),
],
selectionAfter: select && admitted != null
? ElementSelection({admitted.id})
: start.selection,
),
);
return (
decision: admission.allowed ? decision : admission,
connector: admission.allowed ? admitted : null,
);
}