hyper-react 0.12.7 → 0.99.0

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.
Files changed (129) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +48 -34
  3. data/CODE_OF_CONDUCT.md +49 -0
  4. data/Gemfile +5 -6
  5. data/README.md +47 -98
  6. data/Rakefile +6 -28
  7. data/hyper-react.gemspec +36 -43
  8. data/lib/hyper-react.rb +4 -73
  9. data/lib/react/version.rb +3 -0
  10. metadata +91 -249
  11. data/.codeclimate.yml +0 -27
  12. data/.rubocop.yml +0 -1159
  13. data/.travis.yml +0 -62
  14. data/Appraisals +0 -31
  15. data/CHANGELOG.md +0 -143
  16. data/LICENSE +0 -19
  17. data/UPGRADING.md +0 -24
  18. data/component-name-lookup.md +0 -145
  19. data/config.ru +0 -26
  20. data/gemfiles/opal_0.10_react_13.gemfile +0 -15
  21. data/gemfiles/opal_0.10_react_14.gemfile +0 -15
  22. data/gemfiles/opal_0.10_react_15.gemfile +0 -15
  23. data/gemfiles/opal_0.8_react_13.gemfile +0 -15
  24. data/gemfiles/opal_0.8_react_14.gemfile +0 -15
  25. data/gemfiles/opal_0.8_react_15.gemfile +0 -15
  26. data/gemfiles/opal_0.9_react_13.gemfile +0 -15
  27. data/gemfiles/opal_0.9_react_14.gemfile +0 -15
  28. data/gemfiles/opal_0.9_react_15.gemfile +0 -15
  29. data/gemfiles/opal_master_react_15.gemfile +0 -16
  30. data/lib/generators/reactive_ruby/test_app/templates/assets/javascripts/components.rb +0 -3
  31. data/lib/generators/reactive_ruby/test_app/templates/assets/javascripts/test_application.rb +0 -2
  32. data/lib/generators/reactive_ruby/test_app/templates/boot.rb.erb +0 -6
  33. data/lib/generators/reactive_ruby/test_app/templates/script/rails +0 -5
  34. data/lib/generators/reactive_ruby/test_app/templates/test_application.rb.erb +0 -13
  35. data/lib/generators/reactive_ruby/test_app/templates/views/components/hello_world.rb +0 -11
  36. data/lib/generators/reactive_ruby/test_app/templates/views/components/todo.rb +0 -14
  37. data/lib/generators/reactive_ruby/test_app/templates/views/layouts/test_layout.html.erb +0 -0
  38. data/lib/generators/reactive_ruby/test_app/test_app_generator.rb +0 -111
  39. data/lib/rails-helpers/top_level_rails_component.rb +0 -54
  40. data/lib/react-sources/react-server.js +0 -2
  41. data/lib/react/api.rb +0 -173
  42. data/lib/react/callbacks.rb +0 -41
  43. data/lib/react/children.rb +0 -30
  44. data/lib/react/component.rb +0 -168
  45. data/lib/react/component/api.rb +0 -50
  46. data/lib/react/component/base.rb +0 -13
  47. data/lib/react/component/class_methods.rb +0 -189
  48. data/lib/react/component/dsl_instance_methods.rb +0 -23
  49. data/lib/react/component/params.rb +0 -6
  50. data/lib/react/component/props_wrapper.rb +0 -78
  51. data/lib/react/component/should_component_update.rb +0 -94
  52. data/lib/react/component/tags.rb +0 -129
  53. data/lib/react/config.rb +0 -5
  54. data/lib/react/config/client.rb.erb +0 -19
  55. data/lib/react/config/server.rb +0 -23
  56. data/lib/react/element.rb +0 -169
  57. data/lib/react/event.rb +0 -76
  58. data/lib/react/ext/hash.rb +0 -9
  59. data/lib/react/ext/opal-jquery/element.rb +0 -26
  60. data/lib/react/ext/string.rb +0 -8
  61. data/lib/react/hash.rb +0 -13
  62. data/lib/react/native_library.rb +0 -87
  63. data/lib/react/object.rb +0 -15
  64. data/lib/react/react-source-browser.rb +0 -3
  65. data/lib/react/react-source-server.rb +0 -3
  66. data/lib/react/react-source.rb +0 -20
  67. data/lib/react/ref_callback.rb +0 -31
  68. data/lib/react/rendering_context.rb +0 -144
  69. data/lib/react/server.rb +0 -23
  70. data/lib/react/state_wrapper.rb +0 -23
  71. data/lib/react/test.rb +0 -16
  72. data/lib/react/test/dsl.rb +0 -17
  73. data/lib/react/test/matchers/render_html_matcher.rb +0 -56
  74. data/lib/react/test/rspec.rb +0 -15
  75. data/lib/react/test/session.rb +0 -37
  76. data/lib/react/test/utils.rb +0 -25
  77. data/lib/react/top_level.rb +0 -118
  78. data/lib/react/top_level_render.rb +0 -29
  79. data/lib/react/validator.rb +0 -136
  80. data/lib/reactive-ruby/component_loader.rb +0 -50
  81. data/lib/reactive-ruby/isomorphic_helpers.rb +0 -212
  82. data/lib/reactive-ruby/rails.rb +0 -7
  83. data/lib/reactive-ruby/rails/component_mount.rb +0 -46
  84. data/lib/reactive-ruby/rails/controller_helper.rb +0 -15
  85. data/lib/reactive-ruby/rails/railtie.rb +0 -33
  86. data/lib/reactive-ruby/serializers.rb +0 -15
  87. data/lib/reactive-ruby/server_rendering/contextual_renderer.rb +0 -42
  88. data/lib/reactive-ruby/version.rb +0 -3
  89. data/lib/reactrb/auto-import.rb +0 -27
  90. data/lib/reactrb/deep-compare.rb +0 -24
  91. data/lib/reactrb/new-event-name-convention.rb +0 -11
  92. data/logo1.png +0 -0
  93. data/logo2.png +0 -0
  94. data/logo3.png +0 -0
  95. data/path_release_steps.md +0 -9
  96. data/spec/controller_helper_spec.rb +0 -34
  97. data/spec/index.html.erb +0 -11
  98. data/spec/react/callbacks_spec.rb +0 -138
  99. data/spec/react/children_spec.rb +0 -76
  100. data/spec/react/component/base_spec.rb +0 -32
  101. data/spec/react/component_spec.rb +0 -884
  102. data/spec/react/dsl_spec.rb +0 -303
  103. data/spec/react/element_spec.rb +0 -136
  104. data/spec/react/event_spec.rb +0 -24
  105. data/spec/react/native_library_spec.rb +0 -322
  106. data/spec/react/observable_spec.rb +0 -42
  107. data/spec/react/opal_jquery_extensions_spec.rb +0 -68
  108. data/spec/react/param_declaration_spec.rb +0 -269
  109. data/spec/react/react_spec.rb +0 -215
  110. data/spec/react/refs_callback_spec.rb +0 -56
  111. data/spec/react/server_spec.rb +0 -25
  112. data/spec/react/state_spec.rb +0 -55
  113. data/spec/react/test/dsl_spec.rb +0 -43
  114. data/spec/react/test/matchers/render_html_matcher_spec.rb +0 -83
  115. data/spec/react/test/rspec_spec.rb +0 -62
  116. data/spec/react/test/session_spec.rb +0 -88
  117. data/spec/react/test/utils_spec.rb +0 -28
  118. data/spec/react/top_level_component_spec.rb +0 -101
  119. data/spec/react/tutorial/tutorial_spec.rb +0 -36
  120. data/spec/react/validator_spec.rb +0 -124
  121. data/spec/reactive-ruby/component_loader_spec.rb +0 -77
  122. data/spec/reactive-ruby/isomorphic_helpers_spec.rb +0 -160
  123. data/spec/reactive-ruby/rails/asset_pipeline_spec.rb +0 -10
  124. data/spec/reactive-ruby/rails/component_mount_spec.rb +0 -66
  125. data/spec/reactive-ruby/server_rendering/contextual_renderer_spec.rb +0 -35
  126. data/spec/spec_helper.rb +0 -149
  127. data/spec/support/react/spec_helpers.rb +0 -44
  128. data/spec/vendor/es5-shim.min.js +0 -6
  129. data/spec/vendor/jquery-2.2.4.min.js +0 -4
@@ -1,303 +0,0 @@
1
- require 'spec_helper'
2
-
3
- if opal?
4
- describe 'the React DSL', type: :component do
5
-
6
- context "render macro" do
7
-
8
- it "can define the render method with the render macro with a html tag container" do
9
- stub_const 'Foo', Class.new
10
- Foo.class_eval do
11
- include React::Component
12
- render(:div, class: :foo) do
13
- "hello"
14
- end
15
- end
16
-
17
- expect(Foo).to render_static_html('<div class="foo">hello</div>')
18
- end
19
-
20
- it "can define the render method with the render macro without a container" do
21
- stub_const 'Foo', Class.new
22
- Foo.class_eval do
23
- include React::Component
24
- render do
25
- "hello"
26
- end
27
- end
28
-
29
- expect(Foo).to render_static_html('<span>hello</span>')
30
- end
31
-
32
- it "can define the render method with the render macro with a application defined container" do
33
- stub_const 'Bar', Class.new(React::Component::Base)
34
- Bar.class_eval do
35
- param :p1
36
- render { "hello #{params.p1}" }
37
- end
38
- stub_const 'Foo', Class.new(React::Component::Base)
39
- Foo.class_eval do
40
- render Bar, p1: "fred"
41
- end
42
-
43
- expect(Foo).to render_static_html('<span>hello fred</span>')
44
- end
45
- end
46
-
47
- it "will turn the last string in a block into a element" do
48
- stub_const 'Foo', Class.new
49
- Foo.class_eval do
50
- include React::Component
51
- def render
52
- div { "hello" }
53
- end
54
- end
55
-
56
- expect(Foo).to render_static_html('<div>hello</div>')
57
- end
58
-
59
- it "will pass converted props through event handlers" do
60
- stub_const 'Foo', Class.new
61
- Foo.class_eval do
62
- include React::Component
63
- def render
64
- INPUT(data: {foo: 12}).on(:change) {}
65
- end
66
- end
67
-
68
- expect(React::Server.render_to_static_markup(React.create_element(Foo))).to match(/<input data-foo="12"(\/)?>/)
69
- end
70
-
71
- it "will turn the last string in a block into a element" do
72
- stub_const 'Foo', Class.new
73
- Foo.class_eval do
74
- include React::Component
75
- def render
76
- DIV { "hello" }
77
- end
78
- end
79
-
80
- expect(Foo).to render_static_html('<div>hello</div>')
81
- end
82
-
83
- it "has a .span short hand String method" do
84
- stub_const 'Foo', Class.new
85
- Foo.class_eval do
86
- include React::Component
87
- def render
88
- div { "hello".span; "goodby".span }
89
- end
90
- end
91
-
92
- expect(Foo).to render_static_html('<div><span>hello</span><span>goodby</span></div>')
93
- end
94
-
95
- it "has a .br short hand String method" do
96
- stub_const 'Foo', Class.new
97
- Foo.class_eval do
98
- include React::Component
99
- def render
100
- div { "hello".br }
101
- end
102
- end
103
-
104
- expect(React::Server.render_to_static_markup(React.create_element(Foo)).gsub("<br/>", "<br>")).to eq('<div><span>hello<br></span></div>')
105
- end
106
-
107
- it "has a .td short hand String method" do
108
- stub_const 'Foo', Class.new
109
- Foo.class_eval do
110
- include React::Component
111
- def render
112
- table {
113
- tbody {
114
- tr { "hello".td }
115
- }
116
- }
117
- end
118
- end
119
-
120
- expect(Foo).to render_static_html('<table><tbody><tr><td>hello</td></tr></tbody></table>')
121
- end
122
-
123
- it "has a .para short hand String method" do
124
- stub_const 'Foo', Class.new
125
- Foo.class_eval do
126
- include React::Component
127
- def render
128
- div { "hello".para }
129
- end
130
- end
131
-
132
- expect(Foo).to render_static_html('<div><p>hello</p></div>')
133
- end
134
-
135
- it 'can do a method call on a class name that is not a direct sibling' do
136
- stub_const 'Mod', Module.new
137
- stub_const 'Mod::NestedMod', Module.new
138
- stub_const 'Mod::Comp', Class.new(React::Component::Base)
139
- Mod::Comp.class_eval do
140
- render { 'Mod::Comp' }
141
- end
142
- stub_const 'Mod::NestedMod::NestedComp', Class.new(React::Component::Base)
143
- Mod::NestedMod::NestedComp.class_eval do
144
- render do
145
- Comp()
146
- end
147
- end
148
- expect(Mod::NestedMod::NestedComp)
149
- .to render_static_html('<span>Mod::Comp</span>')
150
- end
151
-
152
- it 'raises a meaningful error if a Constant Name is not actually a component' do
153
- stub_const 'Mod', Module.new
154
- stub_const 'Mod::NestedMod', Module.new
155
- stub_const 'Mod::Comp', Class.new
156
- stub_const 'Mod::NestedMod::NestedComp', Class.new(React::Component::Base)
157
- Mod::NestedMod::NestedComp.class_eval do
158
- backtrace :none
159
- render do
160
- Comp()
161
- end
162
- end
163
- expect { React::Server.render_to_static_markup(React.create_element(Mod::NestedMod::NestedComp)) }
164
- .to raise_error('Comp does not appear to be a react component.')
165
- end
166
-
167
- it 'raises a method missing error' do
168
- stub_const 'Foo', Class.new(React::Component::Base)
169
- Foo.class_eval do
170
- backtrace :none
171
- render do
172
- _undefined_method
173
- end
174
- end
175
- expect { React::Server.render_to_static_markup(React.create_element(Foo)) }
176
- .to raise_error(NoMethodError)
177
- end
178
-
179
- it "will treat the component class name as a first class component name" do
180
- stub_const 'Mod::Bar', Class.new
181
- Mod::Bar.class_eval do
182
- include React::Component
183
- def render
184
- "a man walks into a bar"
185
- end
186
- end
187
- stub_const 'Foo', Class.new(React::Component::Base)
188
- Foo.class_eval do
189
- def render
190
- Mod::Bar()
191
- end
192
- end
193
-
194
- expect(Foo).to render_static_html('<span>a man walks into a bar</span>')
195
- end
196
-
197
- it "can add class names by the haml .class notation" do
198
- stub_const 'Mod::Bar', Class.new
199
- Mod::Bar.class_eval do
200
- include React::Component
201
- collect_other_params_as :attributes
202
- def render
203
- "a man walks into a bar".span(params.attributes)
204
- end
205
- end
206
- stub_const 'Foo', Class.new(React::Component::Base)
207
- Foo.class_eval do
208
- def render
209
- Mod::Bar().the_class.other_class
210
- end
211
- end
212
-
213
- expect(Foo).to render_static_html('<span class="other-class the-class">a man walks into a bar</span>')
214
- end
215
-
216
- it "can use the 'class' keyword for classes" do
217
- stub_const 'Foo', Class.new
218
- Foo.class_eval do
219
- include React::Component
220
- def render
221
- span(class: "the-class") { "hello" }
222
- end
223
- end
224
-
225
- expect(Foo).to render_static_html('<span class="the-class">hello</span>')
226
- end
227
-
228
- it "can generate a unrendered node using the .as_node method" do # div { "hello" }.as_node
229
- stub_const 'Foo', Class.new #(React::Component::Base)
230
- Foo.class_eval do
231
- include React::Component
232
- def render
233
- span(data: {size: 12}) { "hello".span.as_node.class.name }.as_node.render
234
- end
235
- end
236
-
237
- expect(Foo)
238
- .to render_static_html('<span data-size="12">React::Element</span>')
239
- end
240
-
241
- it "can use the dangerously_set_inner_HTML param" do
242
- stub_const 'Foo', Class.new
243
- Foo.class_eval do
244
- include React::Component
245
- def render
246
- div(dangerously_set_inner_HTML: { __html: "Hello&nbsp;&nbsp;Goodby" })
247
- end
248
- end
249
-
250
- expect(Foo).to render_static_html('<div>Hello&nbsp;&nbsp;Goodby</div>')
251
- end
252
-
253
- it 'should convert a hash param to hyphenated html attributes if in React::HASH_ATTRIBUTES' do
254
- stub_const 'Foo', Class.new
255
- Foo.class_eval do
256
- include React::Component
257
- def render
258
- div(data: { foo: :bar }, aria: { label: "title" })
259
- end
260
- end
261
-
262
- expect(Foo)
263
- .to render_static_html('<div data-foo="bar" aria-label="title"></div>')
264
- end
265
-
266
- it 'should not convert a hash param to hyphenated html attributes if not in React::HASH_ATTRIBUTES' do
267
- stub_const 'Foo', Class.new
268
- Foo.class_eval do
269
- include React::Component
270
- def render
271
- div(title: { bar: :foo })
272
- end
273
- end
274
-
275
- expect(Foo)
276
- .to render_static_html(
277
- '<div title="{&quot;bar&quot;=&gt;&quot;foo&quot;}"></div>'
278
- )
279
- end
280
-
281
- it "will remove all elements passed as params from the rendering buffer" do
282
- stub_const 'X2', Class.new
283
- X2.class_eval do
284
- include React::Component
285
- def render
286
- div do
287
- params[:ele].render
288
- params[:ele].render
289
- end
290
- end
291
- end
292
- stub_const 'Test', Class.new
293
- Test.class_eval do
294
- include React::Component
295
- def render
296
- X2(ele: b { "hello" })
297
- end
298
- end
299
-
300
- expect(Test).to render_static_html('<div><b>hello</b><b>hello</b></div>')
301
- end
302
- end
303
- end
@@ -1,136 +0,0 @@
1
- require "spec_helper"
2
-
3
- if opal?
4
- # require 'reactrb/new-event-name-convention' # this require will get rid of any error messages but
5
- # the on method will no longer attach to the param prefixed with _on
6
- describe React::Element, type: :component do
7
- it 'bridges `type` of native React.Element attributes' do
8
- element = React.create_element('div')
9
- expect(element.element_type).to eq("div")
10
- end
11
-
12
- async 'is renderable' do
13
- element = React.create_element('span')
14
- div = `document.createElement("div")`
15
- React.render(element, div) do
16
- run_async {
17
- expect(`div.children[0].tagName`).to eq("SPAN")
18
- }
19
- end
20
- end
21
-
22
- describe "Event Subscription" do
23
- it "keeps the original params" do
24
- stub_const 'Foo', Class.new
25
- Foo.class_eval do
26
- include React::Component
27
- def render
28
- INPUT(value: nil, type: 'text').on(:change) {}
29
- end
30
- end
31
-
32
- expect(React::Server.render_to_static_markup(React.create_element(Foo))).to match(/<input (type="text" value=""|value="" type="text")(\/)?>/)
33
- end
34
- end
35
-
36
- describe 'Component Event Subscription' do
37
-
38
- it 'will subscribe to a component event param' do
39
- stub_const 'Foo', Class.new(React::Component::Base)
40
- Foo.class_eval do
41
- param :on_event, type: Proc, default: nil, allow_nil: true
42
- def render
43
- params.on_event
44
- end
45
- end
46
- expect(React::Server.render_to_static_markup(React.create_element(Foo).on(:event) {'works!'})).to eq('<span>works!</span>')
47
- end
48
-
49
- it 'will subscribe to multiple component event params' do
50
- stub_const 'Foo', Class.new(React::Component::Base)
51
- Foo.class_eval do
52
- param :on_event1, type: Proc, default: nil, allow_nil: true
53
- param :on_event2, type: Proc, default: nil, allow_nil: true
54
- def render
55
- params.on_event1+params.on_event2
56
- end
57
- end
58
- expect(React::Server.render_to_static_markup(React.create_element(Foo).on(:event1, :event2) {'works!'})).to eq('<span>works!works!</span>')
59
- end
60
-
61
- it 'will subscribe to a native components event param' do
62
- %x{
63
- window.NativeComponent = React.createClass({
64
- displayName: "HelloMessage",
65
- render: function render() {
66
- return React.createElement("span", null, this.props.onEvent());
67
- }
68
- })
69
- }
70
- stub_const 'Foo', Class.new(React::Component::Base)
71
- Foo.class_eval do
72
- imports "NativeComponent"
73
- end
74
- expect(React::Server.render_to_static_markup(React.create_element(Foo).on(:event) {'works!'})).to eq('<span>works!</span>')
75
- end
76
-
77
- it 'will subscribe to a component event param with a non-default name' do
78
- stub_const 'Foo', Class.new(React::Component::Base)
79
- Foo.class_eval do
80
- param :my_event, type: Proc, default: nil, allow_nil: true
81
- def render
82
- params.my_event
83
- end
84
- end
85
- expect(React::Server.render_to_static_markup(React.create_element(Foo).on("<my_event>") {'works!'})).to eq('<span>works!</span>')
86
- end
87
-
88
- it 'will subscribe to a component event param using the deprecated naming convention and generate a message' do
89
- stub_const 'Foo', Class.new(React::Component::Base)
90
- Foo.class_eval do
91
- param :_onEvent, type: Proc, default: nil, allow_nil: true
92
- def render
93
- params._onEvent
94
- end
95
- end
96
- %x{
97
- var log = [];
98
- var org_warn_console = window.console.warn;
99
- var org_error_console = window.console.error;
100
- window.console.warn = window.console.error = function(str){log.push(str)}
101
- }
102
- expect(React::Server.render_to_static_markup(React.create_element(Foo).on(:event) {'works!'})).to eq('<span>works!</span>')
103
- `window.console.warn = org_warn_console; window.console.error = org_error_console;`
104
- expect(`log[0]`).to match(/Warning: Failed prop( type|Type): In component `Foo`\nProvided prop `on_event` not specified in spec/)
105
- expect(`log[1]`).to eq("Warning: Deprecated feature used in Foo. In future releases React::Element#on('event') will no longer respond to the '_onEvent' emitter.\nRename your emitter param to 'on_event' or use .on('<_onEvent>')")
106
- end
107
- end
108
-
109
- describe 'Builtin Event subscription' do
110
- it 'is subscribable through `on(:event_name)` method' do
111
- expect { |b|
112
- element = React.create_element("div").on(:click, &b)
113
- dom_node = React::Test::Utils.render_into_document(element)
114
- React::Test::Utils.simulate(:click, dom_node)
115
- }.to yield_with_args(React::Event)
116
-
117
- expect { |b|
118
- element = React.create_element("div").on(:key_down, &b)
119
- dom_node = React::Test::Utils.render_into_document(element)
120
- React::Test::Utils.simulate(:keyDown, dom_node, {key: "Enter"})
121
- }.to yield_control
122
-
123
- expect { |b|
124
- element = React.create_element("form").on(:submit, &b)
125
- dom_node = React::Test::Utils.render_into_document(element)
126
- React::Test::Utils.simulate(:submit, dom_node)
127
- }.to yield_control
128
- end
129
-
130
- it 'returns self for `on` method' do
131
- element = React.create_element("div")
132
- expect(element.on(:click){}).to eq(element)
133
- end
134
- end
135
- end
136
- end
@@ -1,24 +0,0 @@
1
- require "spec_helper"
2
-
3
- if opal?
4
- describe React::Event do
5
- it "should bridge attributes of native SyntheticEvent (see http://facebook.github.io/react/docs/events.html#syntheticevent)" do
6
- element = React.create_element('div').on(:click) do |event|
7
- expect(event.bubbles).to eq(`#{event.to_n}.bubbles`)
8
- expect(event.cancelable).to eq(`#{event.to_n}.cancelable`)
9
- expect(event.current_target).to eq(`#{event.to_n}.currentTarget`)
10
- expect(event.default_prevented).to eq(`#{event.to_n}.defaultPrevented`)
11
- expect(event.event_phase).to eq(`#{event.to_n}.eventPhase`)
12
- expect(event.is_trusted?).to eq(`#{event.to_n}.isTrusted`)
13
- expect(event.native_event).to eq(`#{event.to_n}.nativeEvent`)
14
- expect(event.target).to eq(`#{event.to_n}.target`)
15
- expect(event.timestamp).to eq(`#{event.to_n}.timeStamp`)
16
- expect(event.event_type).to eq(`#{event.to_n}.type`)
17
- expect(event).to respond_to(:prevent_default)
18
- expect(event).to respond_to(:stop_propagation)
19
- end
20
- dom_node = React::Test::Utils.render_into_document(element)
21
- React::Test::Utils.simulate(:click, dom_node)
22
- end
23
- end
24
- end