1 // Copyright 2015-present 650 Industries. All rights reserved.
2 
3 import Foundation
4 
5 @objc
6 public class DevMenuItemsContainer: NSObject, DevMenuItemsContainerProtocol {
7   private var items: [DevMenuScreenItem] = []
8 
9   public func getRootItems() -> [DevMenuScreenItem] {
10     return items.sorted { $0.importance > $1.importance }
11   }
12 
13   public func getAllItems() -> [DevMenuScreenItem] {
14     var result: [DevMenuScreenItem] = []
15     for item in items {
16       result.append(item)
17       if let container = item as? DevMenuItemsContainerProtocol {
18         result.append(contentsOf: container.getAllItems())
19       }
20     }
21     return result.sorted { $0.importance > $1.importance }
22   }
23 
24   @objc
25   public func addItem(_ item: DevMenuScreenItem) {
26     items.append(item)
27   }
28 
29   func serializeItems() -> [[String : Any]] {
30     return getRootItems().map({ $0.serialize() })
31   }
32 }
33