lib/react/router.rb in hyper-router-2.4.1 vs lib/react/router.rb in hyper-router-4.0.0
- old
+ new
@@ -1,131 +1,5 @@
module React
- class Router
- include Hyperloop::Component::Mixin
-
- class << self
- def hash_history
- RouterHistory.new(`ReactRouter.hashHistory`)
- end
-
- def browser_history
- RouterHistory.new(`ReactRouter.browserHistory`)
- end
-
- def create_memory_history(opts = {})
- RouterHistory.new(`ReactRouter.createMemoryHistory(#{opts.to_n})`)
- end
-
- def Link(to, opts = {}, &children)
- opts[:activeClassName] = opts.delete(:active_class).to_n if opts[:active_class]
- opts[:activeStyle] = opts.delete(:active_style).to_n if opts[:active_style]
- if opts[:only_active_on_index]
- opts[:onlyActiveOnIndex] = opts.delete(:only_active_on_index).to_n
- end
- opts[:to] = to.to_n
- Native::Link(opts, &children)
- end
- end
-
- def route(*args, &children)
- DSL::Route.new(*args, &children)
- end
-
- def index(opts = {})
- DSL::Index.new(opts)
- end
-
- def redirect(from, opts = {})
- DSL::Route.new(opts.merge(path: from)).on(:enter) { |c| c.replace(opts[:to]) }
- end
-
- def index_redirect(opts = {})
- DSL::Index.new(opts).on(:enter) { |c| c.replace(opts[:to]) }
- end
-
- def build_routes(&block)
- React::Router::DSL.build_routes(&block)
- end
-
- def gather_params
- params = { routes: React::Router::DSL.children_to_n(build_routes { routes }) }
- params[:history] = history.to_n if respond_to? :history
- %w(create_element stringify_query parse_query_string on_error on_update).each do |method|
- params[method.camelcase(false)] = send("#{method}_wrapper") if respond_to? method
- end
- params
- end
-
- def render
- Native::Router(gather_params)
- end
-
- # private
-
- class Native < React::NativeLibrary
- imports 'ReactRouter'
- end
-
- def stringify_query_wrapper
- ->(query) { stringify_query(query) }
- end
-
- def parse_query_string_wrapper
- ->(query_string) { parse_query_string(query_string) }
- end
-
- def on_update_wrapper
- -> { on_update(Hash.new(`this.props`), Hash.new(`this.state`)) }
- end
-
- def create_element_wrapper
- lambda do |component, props|
- comp_classes = React::API.class_eval { @@component_classes }
- rb_component = comp_classes.detect { |_key, value| value == component }.first
- # Not sure if this could ever happen,
- # could not figure out a way to test it so commented it out.
- # unless rb_component
- # rb_component = Class.new(React::Component::Base)
- # comp_classes[rb_component] = component
- # end
- rb_props = convert_props(props)
- result = create_element(rb_component, rb_props)
- convert_or_create_element(result, component, props, rb_component, rb_props)
- end
- end
-
- def on_error_wrapper
- -> (message) { on_error(message) }
- end
-
- private
-
- def convert_props(props)
- children_are_null = `#{props}.children == undefined || #{props}.children == null`
- { children: children_are_null ? [] : [`#{props}.children`].flatten,
- history: `#{props}.history`,
- location: `#{props}.location`,
- params: `#{props}.params`,
- route: `#{props}.route`,
- route_params: `#{props}.route_params`,
- routes: `#{props}.routes` }
- end
-
- def convert_or_create_element(result, component, props, rb_component, rb_props)
- is_result_native_react_element = `!!result._isReactElement`
- if is_result_native_react_element
- result
- elsif !result
- `React.createElement(#{component}, #{props})`
- elsif result.is_a? React::Element
- result.to_n
- else
- React.create_element(rb_component, rb_props).to_n
- end
- end
- end
-end
-
-module Hyperloop
- class Router < React::Router
+ class Router < React::NativeLibrary
+ imports 'ReactRouter'
end
end