resolve static method
Implementation
static ResolvedDiagramTextTarget? resolve(
ResolvedElement? element,
String storyId,
) {
final source = switch (element) {
ResolvedFramedElement(:final source) => source,
ResolvedConnector(:final source) => source,
_ => null,
};
final target = DiagramTextTarget.resolve(source, storyId);
if (target == null) return null;
return switch (element) {
ResolvedFramedElement() => ResolvedDiagramTextTarget._(
canonical: target,
fontSizeRange: switch (element) {
ResolvedShape() => element.definition.fontSizeRange,
ResolvedTextElement() => element.definition.fontSizeRange,
_ => const DiagramTextFontSizeRange(),
},
text: element.text,
editable: element.textEditable,
textFor: switch (element) {
ResolvedShape(:final definition, :final source) => (
slotId,
) => definition.textFor(slotId, source.textStory),
ResolvedTextElement(:final definition) => definition.textFor,
_ => (_) => const PlainTextDefinition(),
},
),
ResolvedConnector() => ResolvedDiagramTextTarget._(
canonical: target,
defaultFontSize: element.definition.labeling!.defaultFontSize,
fontSizeRange: element.definition.labeling!.fontSizeRange,
text: element.labels
.where((label) => label.source.story.id == storyId)
.firstOrNull
?.text,
editable:
!element.isLocked &&
element.definition.labeling?.textEditable == true,
textFor: (_) => element.definition.labeling!.textType,
),
_ => null,
};
}