reactive-router 0.2.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f7a8fd6cc3a6c46b51545b58ab6cd38c209702d0
4
- data.tar.gz: d752c6775a07ed7533921b3b080f33ec29e9b575
3
+ metadata.gz: 76464038f9ab3477f15cfa11a50f726339a2488f
4
+ data.tar.gz: c9a74c8523720d3e0d60dee87145e13b2285ed27
5
5
  SHA512:
6
- metadata.gz: 66cbf2995946b6c6126bb9b819608630e538d98c548051cc7454f0dd40bac89141e26ae7ea9eb8623ea1ec43b73b9fcbe29d9fc67a9caf1d67976496e620faf7
7
- data.tar.gz: c5f1b5f780a41e82b7fe139050e39e47c686a99b8e1f6e1b526cff52f64180ffe32c09a8be619f839bbaf4d3181ea1a7f4861aa2ce139f112826b1de6122579e
6
+ metadata.gz: 6e49d2cad407f11eaf7069fd3da3ac057442236b040a5bd8cc0da838f5d7895318feac5964b21f6c106ab090cfeb413aefd3f5d67ff00c66c1ec6c76397bcfaa
7
+ data.tar.gz: 26ffb6cd930963f45bac01f83de27dd8dd9531266dbb8a7b3d16aa19e8e071da97426d1f68659a9042ae6a744d408d23c0271747e0c6c697571e92ebb38c3f08
@@ -5,6 +5,7 @@ if RUBY_ENGINE == 'opal'
5
5
  else
6
6
  require 'opal'
7
7
  require 'opal-react'
8
+ require 'reactive-router/window_location'
8
9
  require 'reactive-router/version'
9
10
 
10
11
  Opal.append_path File.expand_path('../', __FILE__).untaint
@@ -10,11 +10,37 @@ module React
10
10
  base.class_eval do
11
11
 
12
12
  include React::Component
13
+ include React::IsomorphicHelpers
14
+
15
+ before_first_mount do |context|
16
+ if `typeof ReactRouter === 'undefined'`
17
+ if on_opal_client?
18
+ message = "ReactRouter not defined in browser assets - you must manually include it in your assets"
19
+ else
20
+ message = "ReactRouter not defined in components.js.rb assets manifest - you must manually include it in your assets"
21
+ end
22
+ `console.error(message)`
23
+ @routing = true
24
+ else
25
+ @routing = false
26
+ end
27
+ end
13
28
 
14
29
  export_component
15
30
 
16
31
  def render
17
- show if self.class.routing?
32
+ if self.class.routing?
33
+ show
34
+ elsif on_opal_server?
35
+ self.class.routing!
36
+ routes = self.class.build_routes
37
+ %x{
38
+ ReactRouter.run(#{routes}, window.reactive_router_static_location, function(root) {
39
+ self.root = React.createElement(root);
40
+ });
41
+ }
42
+ React::Element.new(@root, 'Root', {}, nil)
43
+ end
18
44
  end
19
45
 
20
46
  def self.routing?
@@ -27,30 +53,33 @@ module React
27
53
  was_routing
28
54
  end
29
55
 
30
- def self.handler(handler)
31
- React::API.create_native_react_class(handler)
32
- end
33
-
34
56
  after_mount do
35
57
  unless self.class.routing!
36
- x = `React.findDOMNode(#{self}.native)`
37
- routes = self.class.class_eval { @routes.call }
58
+ dom_node = `React.findDOMNode(#{self}.native)`
59
+ routes = self.class.build_routes
38
60
  %x{
39
61
  ReactRouter.run(#{routes}, ReactRouter.HistoryLocation, function(root) {
40
- React.render(React.createElement(root), #{x});
62
+ React.render(React.createElement(root), #{dom_node});
41
63
  });
42
64
  }
43
65
  end
44
66
  end
45
67
 
46
68
  def self.routes(opts = {}, &block)
47
- opts[:handler] ||= self
48
- @routes = -> { self.route(opts, generate_node = true, &block) }
69
+ @routes_opts = opts
70
+ @routes_block = block
71
+ end
72
+
73
+ def self.build_routes
74
+ routes_opts = @routes_opts.dup
75
+ routes_opts[:handler] ||= self
76
+ route(routes_opts, generate_node = true, &@routes_block)
49
77
  end
50
78
 
51
79
  def self.route(opts = {}, generate_node = nil, &block)
52
- opts[:handler] = self.handler(opts[:handler])
53
- generate_node ? RR::Route_as_node(opts, &block) : RR::Route(opts, &block)
80
+ opts = opts.dup
81
+ opts[:handler] = React::API.create_native_react_class(opts[:handler])
82
+ (generate_node ? RR::Route_as_node(opts, &block) : RR::Route(opts, &block))
54
83
  end
55
84
 
56
85
  def self.default_route(ops = {}, &block)
@@ -1,3 +1,3 @@
1
1
  module ReactiveRouter
2
- VERSION = "0.2.0"
2
+ VERSION = "0.7.1"
3
3
  end
@@ -0,0 +1,13 @@
1
+ module React
2
+ module Router
3
+ class WindowLocation
4
+
5
+ include React::IsomorphicHelpers
6
+
7
+ before_first_mount do |context|
8
+ context.eval("window.reactive_router_static_location = '#{context.controller.request.path}?#{context.controller.request.query_string}'")
9
+ end
10
+
11
+ end
12
+ end
13
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reactive-router
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam George
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-12 00:00:00.000000000 Z
11
+ date: 2015-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: react-router-rails
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 0.13.3
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 0.13.3
83
69
  description: Adds the ability to write and use the react-router in Ruby through Opal
84
70
  email:
85
71
  - adamgeorge.31@gmail.com
@@ -94,6 +80,7 @@ files:
94
80
  - lib/reactive-router/component.rb
95
81
  - lib/reactive-router/router.rb
96
82
  - lib/reactive-router/version.rb
83
+ - lib/reactive-router/window_location.rb
97
84
  homepage:
98
85
  licenses: []
99
86
  metadata: {}