untangleShortcuts function
Zwilling von untangleShortcuts (Backend, npm stored): Aktionen aus
stored behalten ihre Tasten; jede andere Aktion verliert eine Taste,
die eine gespeicherte Aktion beansprucht, außer die beiden dürfen sie
teilen (posShortcutSharedPairs).
Implementation
Map<String, Object?> untangleShortcuts(Map<String, Object?> mixed, Map<String, Object?> stored) {
final beansprucht = <Object?, String>{};
for (final e in stored.entries) {
final tasten = e.value;
if (tasten is! List) continue;
for (final t in tasten) {
beansprucht[t] = e.key;
}
}
return {
for (final e in mixed.entries)
e.key: e.value is! List || stored.containsKey(e.key)
? e.value
: [
for (final t in e.value as List)
if (beansprucht[t] == null || beansprucht[t] == e.key || _darfTeilen(beansprucht[t]!, e.key)) t,
],
};
}