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