beuiSidebarInsert function
List<BeuiSidebarResource>
beuiSidebarInsert(
- List<
BeuiSidebarResource> items, - BeuiSidebarResource resource,
- String? targetId,
- BeuiSidebarResourceDropPosition position,
Insert resource relative to targetId / position.
Implementation
List<BeuiSidebarResource> beuiSidebarInsert(
List<BeuiSidebarResource> items,
BeuiSidebarResource resource,
String? targetId,
BeuiSidebarResourceDropPosition position,
) {
if (targetId == null) return [...items, resource];
final next = <BeuiSidebarResource>[];
for (final item in items) {
if (item.id == targetId) {
switch (position) {
case BeuiSidebarResourceDropPosition.before:
next
..add(resource)
..add(item);
case BeuiSidebarResourceDropPosition.after:
next
..add(item)
..add(resource);
case BeuiSidebarResourceDropPosition.inside:
next.add(item.copyWith(children: [...?item.children, resource]));
}
continue;
}
final kids = item.children;
if (kids != null && kids.isNotEmpty) {
next.add(
item.copyWith(
children: beuiSidebarInsert(kids, resource, targetId, position),
),
);
} else {
next.add(item);
}
}
return next;
}