@@ -28,7 +28,7 @@ def deprecation_warning(message)
2828 end
2929
3030 def validator
31- @validator ||= React :: Validator . new ( self )
31+ @validator ||= Validator . new ( self )
3232 end
3333
3434 def prop_types
@@ -55,44 +55,12 @@ def params(&block)
5555 validator . build ( &block )
5656 end
5757
58- def define_param_method ( name , param_type )
59- wrapper = const_get ( "PropsWrapper" )
60- if param_type == React ::Observable
61- #(@two_way_params ||= []) << name
62- wrapper . define_method ( "#{ name } " ) do
63- @props_hash [ name ] . instance_variable_get ( "@value" ) if @props_hash [ name ]
64- end
65- wrapper . define_method ( "#{ name } !" ) do |*args |
66- return unless @props_hash [ name ]
67- if args . count > 0
68- current_value = @props_hash [ name ] . instance_variable_get ( "@value" )
69- @props_hash [ name ] . call args [ 0 ]
70- current_value
71- else
72- current_value = @props_hash [ name ] . instance_variable_get ( "@value" )
73- @props_hash [ name ] . call current_value unless @dont_update_state rescue nil # rescue in case we in middle of render
74- @props_hash [ name ]
75- end
76- end
77- define_method ( "#{ name } " ) { deprecated_params_method ( "#{ name } " ) }
78- define_method ( "#{ name } !" ) { |*args | deprecated_params_method ( "#{ name } !" , *args ) }
79- elsif param_type == Proc
80- wrapper . define_method ( "#{ name } " ) do |*args , &block |
81- @props_hash [ name ] . call ( *args , &block ) if @props_hash [ name ]
82- end
83- define_method ( "#{ name } " ) { deprecated_params_method ( "#{ name } " , *args , &block ) }
84- else
85- wrapper . define_method ( "#{ name } " ) do
86- @processed_params [ name ] ||= if param_type . respond_to? :_react_param_conversion
87- param_type . _react_param_conversion @props_hash [ name ]
88- elsif param_type . is_a? ( Array ) && param_type [ 0 ] . respond_to? ( :_react_param_conversion )
89- @props_hash [ name ] . collect { |param | param_type [ 0 ] . _react_param_conversion param }
90- else
91- @props_hash [ name ]
92- end
93- end
94- define_method ( "#{ name } " ) { deprecated_params_method ( "#{ name } " ) }
95- end
58+ def props_wrapper
59+ @props_wrapper ||= Class . new ( PropsWrapper )
60+ end
61+
62+ def define_param ( name , param_type )
63+ props_wrapper . define_param ( name , param_type , self )
9664 end
9765
9866 def param ( *args )
0 commit comments