untangleShortcuts function

Map<String, Object?> untangleShortcuts(
  1. Map<String, Object?> mixed,
  2. Map<String, Object?> stored
)

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,
            ],
  };
}