generateStableId function
Build a human-readable, deterministic stable ID for one tree node.
Implementation
String generateStableId({
required String parentPath,
required String role,
required int siblingPosition,
String identifier = '',
String text = '',
int? disambiguator,
}) {
String slug;
final textSlug = text.isEmpty ? '' : idTextSlug(text);
if (identifier.isNotEmpty) {
slug = slugify(identifier);
} else if (textSlug.isNotEmpty) {
slug = textSlug;
} else {
final r = role.isEmpty ? 'node' : slugify(role);
slug = '${r}_$siblingPosition';
}
if (disambiguator != null) slug = '${slug}_$disambiguator';
return parentPath.isEmpty ? slug : '$parentPath.$slug';
}