1 // Copyright 2015-present 650 Industries. All rights reserved.
2 
3 @objc
4 public protocol DevMenuDataSourceItem {
5   @objc
6   func serialize() -> [String : Any]
7 }
8 
9 public typealias DevMenuDataSourceResolver = ([DevMenuDataSourceItem]) -> Void
10 
11 @objc
12 public protocol DevMenuDataSourceProtocol {
13   var id: String { get }
14 
15   func fetchData(resolve: @escaping DevMenuDataSourceResolver)
16 }
17 
18 @objc
19 public class DevMenuListDataSource: NSObject, DevMenuDataSourceProtocol {
20   public var id: String
21   private var dataFetcher: (@escaping ([DevMenuSelectionList.Item]) -> Void) -> Void
22 
23   public init(id: String, dataFetcher: @escaping (@escaping ([DevMenuSelectionList.Item]) -> Void) -> Void) {
24     self.id = id
25     self.dataFetcher = dataFetcher
26   }
27 
28   public func fetchData(resolve: @escaping ([DevMenuDataSourceItem]) -> Void) {
29     dataFetcher(resolve)
30   }
31 }
32