1 /// Here we implement the components exclusive for view managers.
2 
3 // MARK: View factory
4 
5 /**
6  Defines the factory creating a native view when the module is used as a view.
7  */
8 @available(*, deprecated, renamed: "View")
9 public func view(_ closure: @escaping () -> UIView) -> ViewManagerDefinitionComponent {
10   return ViewFactory(closure)
11 }
12 
13 /**
14  Defines the factory creating a native view when the module is used as a view.
15  */
16 public func View(_ closure: @escaping () -> UIView) -> ViewManagerDefinitionComponent {
17   return ViewFactory(closure)
18 }
19 
20 // MARK: Props
21 
22 /**
23  Creates a view prop that defines its name and setter.
24  */
25 @available(*, deprecated, renamed: "Prop")
26 public func prop<ViewType: UIView, PropType: AnyArgument>(
27   _ name: String,
28   _ setter: @escaping (ViewType, PropType) -> Void
29 ) -> ViewManagerDefinitionComponent {
30   return ConcreteViewProp(
31     name: name,
32     propType: ~PropType.self,
33     setter: setter
34   )
35 }
36 
37 /**
38  Creates a view prop that defines its name and setter.
39  */
40 public func Prop<ViewType: UIView, PropType: AnyArgument>(
41   _ name: String,
42   _ setter: @escaping (ViewType, PropType) -> Void
43 ) -> ViewManagerDefinitionComponent {
44   return ConcreteViewProp(
45     name: name,
46     propType: ~PropType.self,
47     setter: setter
48   )
49 }
50