hyper-component 0.99.6 → 1.0.alpha1
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 +4 -4
- data/CHANGELOG.md +3 -3
- data/Gemfile +4 -3
- data/Gemfile.lock +51 -36
- data/{misc/how-component-name-lookup-works.md → how-component-name-lookup-works.md} +1 -1
- data/hyper-component.gemspec +9 -8
- data/lib/hyper-component.rb +31 -43
- data/lib/hyperstack/component.rb +145 -0
- data/lib/hyperstack/component/auto-import.rb +44 -0
- data/lib/hyperstack/component/children.rb +40 -0
- data/lib/hyperstack/component/element.rb +129 -0
- data/lib/hyperstack/component/event.rb +78 -0
- data/lib/hyperstack/component/haml.rb +18 -0
- data/lib/hyperstack/component/isomorphic_helpers.rb +235 -0
- data/lib/hyperstack/component/jquery.rb +2 -0
- data/lib/hyperstack/component/native_library.rb +92 -0
- data/lib/hyperstack/component/react_api.rb +142 -0
- data/lib/hyperstack/component/server.rb +21 -0
- data/lib/hyperstack/component/version.rb +5 -0
- data/lib/hyperstack/ext/component/boolean.rb +14 -0
- data/lib/{react/ext/opal-jquery → hyperstack/ext/component}/element.rb +17 -12
- data/lib/{react/ext → hyperstack/ext/component}/hash.rb +0 -0
- data/lib/{react/to_key.rb → hyperstack/ext/component/number.rb} +0 -12
- data/lib/hyperstack/ext/component/object.rb +32 -0
- data/lib/{reactive-ruby → hyperstack/ext/component}/serializers.rb +0 -0
- data/lib/{react/ext → hyperstack/ext/component}/string.rb +0 -0
- data/lib/hyperstack/internal/component.rb +16 -0
- data/lib/hyperstack/internal/component/class_methods.rb +212 -0
- data/lib/hyperstack/internal/component/haml.rb +56 -0
- data/lib/hyperstack/internal/component/instance_methods.rb +92 -0
- data/lib/hyperstack/internal/component/props_wrapper.rb +125 -0
- data/lib/hyperstack/internal/component/rails.rb +11 -0
- data/lib/hyperstack/internal/component/rails/component_loader.rb +49 -0
- data/lib/hyperstack/internal/component/rails/component_mount.rb +52 -0
- data/lib/{reactive-ruby → hyperstack/internal/component}/rails/controller_helper.rb +0 -0
- data/lib/hyperstack/internal/component/rails/railtie.rb +24 -0
- data/lib/hyperstack/internal/component/rails/server_rendering/contextual_renderer.rb +52 -0
- data/lib/hyperstack/internal/component/rails/server_rendering/hyper_asset_container.rb +52 -0
- data/lib/hyperstack/internal/component/react_wrapper.rb +308 -0
- data/lib/hyperstack/internal/component/rendering_context.rb +165 -0
- data/lib/hyperstack/internal/component/should_component_update.rb +101 -0
- data/lib/hyperstack/internal/component/tags.rb +109 -0
- data/lib/hyperstack/internal/component/top_level_rails_component.rb +83 -0
- data/lib/hyperstack/internal/component/validator.rb +149 -0
- data/lib/react/react-source.rb +2 -2
- data/unmounting-objects.md +78 -0
- metadata +73 -85
- data/DOCS.md +0 -1515
- data/LICENSE +0 -19
- data/README.md +0 -49
- data/lib/hyper-component/jquery.rb +0 -2
- data/lib/rails-helpers/top_level_rails_component.rb +0 -79
- data/lib/react/api.rb +0 -272
- data/lib/react/callbacks.rb +0 -42
- data/lib/react/children.rb +0 -38
- data/lib/react/component.rb +0 -189
- data/lib/react/component/api.rb +0 -70
- data/lib/react/component/base.rb +0 -13
- data/lib/react/component/class_methods.rb +0 -175
- data/lib/react/component/dsl_instance_methods.rb +0 -23
- data/lib/react/component/params.rb +0 -6
- data/lib/react/component/props_wrapper.rb +0 -90
- data/lib/react/component/should_component_update.rb +0 -99
- data/lib/react/component/tags.rb +0 -116
- data/lib/react/config.rb +0 -5
- data/lib/react/element.rb +0 -167
- data/lib/react/event.rb +0 -76
- data/lib/react/native_library.rb +0 -87
- data/lib/react/object.rb +0 -15
- data/lib/react/ref_callback.rb +0 -31
- data/lib/react/rendering_context.rb +0 -149
- data/lib/react/server.rb +0 -19
- data/lib/react/state_wrapper.rb +0 -23
- data/lib/react/test.rb +0 -16
- data/lib/react/test/dsl.rb +0 -17
- data/lib/react/test/matchers/render_html_matcher.rb +0 -56
- data/lib/react/test/rspec.rb +0 -15
- data/lib/react/test/session.rb +0 -37
- data/lib/react/test/utils.rb +0 -71
- data/lib/react/top_level.rb +0 -110
- data/lib/react/top_level_render.rb +0 -30
- data/lib/react/validator.rb +0 -132
- data/lib/reactive-ruby/component_loader.rb +0 -43
- data/lib/reactive-ruby/isomorphic_helpers.rb +0 -233
- data/lib/reactive-ruby/rails.rb +0 -8
- data/lib/reactive-ruby/rails/component_mount.rb +0 -48
- data/lib/reactive-ruby/rails/railtie.rb +0 -20
- data/lib/reactive-ruby/server_rendering/contextual_renderer.rb +0 -46
- data/lib/reactive-ruby/server_rendering/hyper_asset_container.rb +0 -46
- data/lib/reactive-ruby/version.rb +0 -5
- data/lib/reactrb/auto-import.rb +0 -27
- data/misc/generators/reactive_ruby/test_app/templates/assets/javascripts/components.rb +0 -3
- data/misc/generators/reactive_ruby/test_app/templates/assets/javascripts/server_rendering.js +0 -5
- data/misc/generators/reactive_ruby/test_app/templates/assets/javascripts/test_application.rb +0 -2
- data/misc/generators/reactive_ruby/test_app/templates/boot.rb.erb +0 -6
- data/misc/generators/reactive_ruby/test_app/templates/script/rails +0 -5
- data/misc/generators/reactive_ruby/test_app/templates/test_application.rb.erb +0 -13
- data/misc/generators/reactive_ruby/test_app/templates/views/components/hello_world.rb +0 -11
- data/misc/generators/reactive_ruby/test_app/templates/views/components/todo.rb +0 -14
- data/misc/generators/reactive_ruby/test_app/templates/views/layouts/test_layout.html.erb +0 -0
- data/misc/generators/reactive_ruby/test_app/test_app_generator.rb +0 -121
- data/misc/hyperloop-logo-small-pink.png +0 -0
- data/misc/logo1.png +0 -0
- data/misc/logo2.png +0 -0
- data/misc/logo3.png +0 -0
- data/path_release_steps.md +0 -9
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8f4d73fa137be90a6669fde5e74f3398c33503882a6af53bbcdcedca1ecfcba4
|
|
4
|
+
data.tar.gz: b2b61ace1614403cc7f682465571d1ae389f716ea84e2aa0edb76b7a34f6f344
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f0e0166388bd05c172e2925b5179ebc6717b5a25c036eebb81db2d6afb8c2bac50a8ece0cec4755aa0b972957fab466917b7bbcb51603c2b5139e8b0e71ffed1
|
|
7
|
+
data.tar.gz: 7ad7cf61f431a260ad32f6ce40bf0687339e36c186e9358987de7d034fb974caa94bd23aa301c1512348aad06ed95b5fd994a406071b676244bdb62441204230
|
data/CHANGELOG.md
CHANGED
|
@@ -32,7 +32,7 @@ Whitespace conventions:
|
|
|
32
32
|
### Deprecated
|
|
33
33
|
|
|
34
34
|
- Current ref callback behavior is deprecated. Require `"react/ref_callback"` to get the updated behavior. (#188)
|
|
35
|
-
- `
|
|
35
|
+
- `Hyperstack::Component::ReactAPI.render_to_string` & `Hyperstack::Component::ReactAPI.render_to_static_markup` is deprecated, use `React::Server.render_to_string` & `React::Server.render_to_static_markup` instead. (#186)
|
|
36
36
|
- `react/react-source` is deprecated, use `react/react-source-browser` or `react/react-source-server` instead. For most usecase, `react/react-source-browser` is sufficient. If you are using the built-in server side rendering feature, the actual `ReactDOMServer` is already provided by the `react-rails` gem. Therefore, unless you are building a custom server side rendering mechanism, it's not suggested to use `react/react-source-server` in browser code. (#186)
|
|
37
37
|
|
|
38
38
|
### Removed
|
|
@@ -57,8 +57,8 @@ Whitespace conventions:
|
|
|
57
57
|
|
|
58
58
|
### Deprecated
|
|
59
59
|
|
|
60
|
-
- Current `
|
|
61
|
-
- `React.is_valid_element` is deprecated in favor of `
|
|
60
|
+
- Current `Hyperstack::Component::ReactAPI.render` behavior is deprecated. Require `"react/top_level_render"` to get the updated behavior. (#187)
|
|
61
|
+
- `React.is_valid_element` is deprecated in favor of `Hyperstack::Component::ReactAPI.is_valid_element?`.
|
|
62
62
|
- `expect(component).to render('<div />')` is now deprecated in favor of `expect(component).to render_static_html('<div />')`, which is much clearer.
|
|
63
63
|
|
|
64
64
|
### Fixed
|
data/Gemfile
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
source 'https://rubygems.org'
|
|
2
2
|
#gem "opal-jquery", git: "https://github.com/opal/opal-jquery.git", branch: "master"
|
|
3
|
-
gem 'hyper-spec',
|
|
4
|
-
gem '
|
|
5
|
-
gem 'hyper-store',
|
|
3
|
+
gem 'hyper-spec', path: '../hyper-spec'
|
|
4
|
+
gem 'hyperstack-config', path: '../hyperstack-config'
|
|
5
|
+
gem 'hyper-store', path: '../hyper-store'
|
|
6
|
+
gem 'hyper-state', path: '../hyper-state'
|
|
6
7
|
#gem 'puma', '~> 3.11.0' # As of adding, version 3.12.0 isn't working so we are locking
|
|
7
8
|
gemspec
|
data/Gemfile.lock
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: ../hyper-spec
|
|
3
3
|
specs:
|
|
4
|
-
hyper-spec (0.
|
|
4
|
+
hyper-spec (1.0.rc1)
|
|
5
5
|
capybara
|
|
6
6
|
chromedriver-helper (= 1.2.0)
|
|
7
|
-
libv8 (~> 6.
|
|
7
|
+
libv8 (~> 6.3.0)
|
|
8
8
|
method_source
|
|
9
|
-
mini_racer (~> 0.
|
|
9
|
+
mini_racer (~> 0.1.15)
|
|
10
10
|
opal (>= 0.11.0, < 0.12.0)
|
|
11
11
|
parser (>= 2.3.3.1)
|
|
12
12
|
pry
|
|
@@ -14,34 +14,44 @@ PATH
|
|
|
14
14
|
selenium-webdriver
|
|
15
15
|
timecop (~> 0.8.1)
|
|
16
16
|
uglifier
|
|
17
|
-
unparser
|
|
17
|
+
unparser
|
|
18
18
|
webdrivers
|
|
19
19
|
|
|
20
|
+
PATH
|
|
21
|
+
remote: ../hyper-state
|
|
22
|
+
specs:
|
|
23
|
+
hyper-state (1.0.rc1)
|
|
24
|
+
hyperstack-config (= 1.0.rc1)
|
|
25
|
+
opal (>= 0.11.0, < 0.12.0)
|
|
26
|
+
|
|
20
27
|
PATH
|
|
21
28
|
remote: ../hyper-store
|
|
22
29
|
specs:
|
|
23
|
-
hyper-store (0.
|
|
24
|
-
|
|
30
|
+
hyper-store (1.0.rc1)
|
|
31
|
+
hyper-state (= 1.0.rc1)
|
|
32
|
+
hyperstack-config (= 1.0.rc1)
|
|
25
33
|
opal (>= 0.11.0, < 0.12.0)
|
|
26
34
|
|
|
27
35
|
PATH
|
|
28
|
-
remote: ../
|
|
36
|
+
remote: ../hyperstack-config
|
|
29
37
|
specs:
|
|
30
|
-
|
|
31
|
-
libv8 (~> 6.
|
|
32
|
-
|
|
38
|
+
hyperstack-config (1.0.rc1)
|
|
39
|
+
libv8 (~> 6.3.0)
|
|
40
|
+
listen (~> 3.0)
|
|
41
|
+
mini_racer (~> 0.1.15)
|
|
33
42
|
opal (>= 0.11.0, < 0.12.0)
|
|
34
43
|
opal-browser (~> 0.2.0)
|
|
35
44
|
uglifier
|
|
45
|
+
websocket
|
|
36
46
|
|
|
37
47
|
PATH
|
|
38
48
|
remote: .
|
|
39
49
|
specs:
|
|
40
|
-
hyper-component (0.
|
|
41
|
-
hyper-
|
|
42
|
-
|
|
43
|
-
libv8 (~> 6.
|
|
44
|
-
mini_racer (~> 0.
|
|
50
|
+
hyper-component (1.0.rc1)
|
|
51
|
+
hyper-state (= 1.0.rc1)
|
|
52
|
+
hyperstack-config (= 1.0.rc1)
|
|
53
|
+
libv8 (~> 6.3.0)
|
|
54
|
+
mini_racer (~> 0.1.15)
|
|
45
55
|
opal (>= 0.11.0, < 0.12.0)
|
|
46
56
|
opal-activesupport (~> 0.3.1)
|
|
47
57
|
react-rails (>= 2.4.0, < 2.5.0)
|
|
@@ -94,7 +104,7 @@ GEM
|
|
|
94
104
|
adamantium (0.2.0)
|
|
95
105
|
ice_nine (~> 0.11.0)
|
|
96
106
|
memoizable (~> 0.4.0)
|
|
97
|
-
addressable (2.
|
|
107
|
+
addressable (2.5.2)
|
|
98
108
|
public_suffix (>= 2.0.2, < 4.0)
|
|
99
109
|
archive-zip (0.11.0)
|
|
100
110
|
io-like (~> 0.3.0)
|
|
@@ -105,7 +115,7 @@ GEM
|
|
|
105
115
|
babel-source (>= 4.0, < 6)
|
|
106
116
|
execjs (~> 2.0)
|
|
107
117
|
builder (3.2.3)
|
|
108
|
-
capybara (3.
|
|
118
|
+
capybara (3.10.1)
|
|
109
119
|
addressable
|
|
110
120
|
mini_mime (>= 0.1.3)
|
|
111
121
|
nokogiri (~> 1.8)
|
|
@@ -133,15 +143,16 @@ GEM
|
|
|
133
143
|
globalid (0.4.1)
|
|
134
144
|
activesupport (>= 4.2.0)
|
|
135
145
|
hike (1.2.3)
|
|
136
|
-
i18n (1.1.
|
|
146
|
+
i18n (1.1.1)
|
|
137
147
|
concurrent-ruby (~> 1.0)
|
|
138
148
|
ice_nine (0.11.2)
|
|
149
|
+
interception (0.5)
|
|
139
150
|
io-like (0.3.0)
|
|
140
151
|
jquery-rails (4.3.3)
|
|
141
152
|
rails-dom-testing (>= 1, < 3)
|
|
142
153
|
railties (>= 4.2.0)
|
|
143
154
|
thor (>= 0.14, < 2.0)
|
|
144
|
-
libv8 (6.
|
|
155
|
+
libv8 (6.3.292.48.1-x86_64-darwin-15)
|
|
145
156
|
listen (3.1.5)
|
|
146
157
|
rb-fsevent (~> 0.9, >= 0.9.4)
|
|
147
158
|
rb-inotify (~> 0.9, >= 0.9.7)
|
|
@@ -149,9 +160,9 @@ GEM
|
|
|
149
160
|
loofah (2.2.2)
|
|
150
161
|
crass (~> 1.0.2)
|
|
151
162
|
nokogiri (>= 1.5.9)
|
|
152
|
-
mail (2.7.
|
|
163
|
+
mail (2.7.1)
|
|
153
164
|
mini_mime (>= 0.1.1)
|
|
154
|
-
marcel (0.3.
|
|
165
|
+
marcel (0.3.3)
|
|
155
166
|
mimemagic (~> 0.3.2)
|
|
156
167
|
memoizable (0.4.2)
|
|
157
168
|
thread_safe (~> 0.3, >= 0.3.1)
|
|
@@ -162,12 +173,11 @@ GEM
|
|
|
162
173
|
mimemagic (0.3.2)
|
|
163
174
|
mini_mime (1.0.1)
|
|
164
175
|
mini_portile2 (2.3.0)
|
|
165
|
-
mini_racer (0.
|
|
166
|
-
libv8 (
|
|
176
|
+
mini_racer (0.1.15)
|
|
177
|
+
libv8 (~> 6.3)
|
|
167
178
|
minitest (5.11.3)
|
|
168
|
-
net_http_ssl_fix (0.0.10)
|
|
169
179
|
nio4r (2.3.1)
|
|
170
|
-
nokogiri (1.8.
|
|
180
|
+
nokogiri (1.8.5)
|
|
171
181
|
mini_portile2 (~> 2.3.0)
|
|
172
182
|
opal (0.11.3)
|
|
173
183
|
ast (>= 2.3.0)
|
|
@@ -204,8 +214,11 @@ GEM
|
|
|
204
214
|
pry (0.11.3)
|
|
205
215
|
coderay (~> 1.1.0)
|
|
206
216
|
method_source (~> 0.9.0)
|
|
217
|
+
pry-rescue (1.4.5)
|
|
218
|
+
interception (>= 0.5)
|
|
219
|
+
pry
|
|
207
220
|
public_suffix (3.0.3)
|
|
208
|
-
puma (3.
|
|
221
|
+
puma (3.12.0)
|
|
209
222
|
rack (2.0.5)
|
|
210
223
|
rack-test (1.1.0)
|
|
211
224
|
rack (>= 1.0, < 3)
|
|
@@ -249,16 +262,16 @@ GEM
|
|
|
249
262
|
execjs
|
|
250
263
|
railties (>= 3.2)
|
|
251
264
|
tilt
|
|
252
|
-
regexp_parser (1.
|
|
265
|
+
regexp_parser (1.2.0)
|
|
253
266
|
rspec-core (3.8.0)
|
|
254
267
|
rspec-support (~> 3.8.0)
|
|
255
|
-
rspec-expectations (3.8.
|
|
268
|
+
rspec-expectations (3.8.2)
|
|
256
269
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
257
270
|
rspec-support (~> 3.8.0)
|
|
258
271
|
rspec-mocks (3.8.0)
|
|
259
272
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
260
273
|
rspec-support (~> 3.8.0)
|
|
261
|
-
rspec-rails (3.8.
|
|
274
|
+
rspec-rails (3.8.1)
|
|
262
275
|
actionpack (>= 3.0)
|
|
263
276
|
activesupport (>= 3.0)
|
|
264
277
|
railties (>= 3.0)
|
|
@@ -295,10 +308,10 @@ GEM
|
|
|
295
308
|
timecop (0.8.1)
|
|
296
309
|
tzinfo (1.2.5)
|
|
297
310
|
thread_safe (~> 0.1)
|
|
298
|
-
uglifier (4.1.
|
|
311
|
+
uglifier (4.1.19)
|
|
299
312
|
execjs (>= 0.3.0, < 3)
|
|
300
313
|
unicode-display_width (1.4.0)
|
|
301
|
-
unparser (0.
|
|
314
|
+
unparser (0.2.8)
|
|
302
315
|
abstract_type (~> 0.0.7)
|
|
303
316
|
adamantium (~> 0.2.0)
|
|
304
317
|
concord (~> 0.1.5)
|
|
@@ -306,11 +319,11 @@ GEM
|
|
|
306
319
|
equalizer (~> 0.0.9)
|
|
307
320
|
parser (>= 2.3.1.2, < 2.6)
|
|
308
321
|
procto (~> 0.0.2)
|
|
309
|
-
webdrivers (3.
|
|
310
|
-
net_http_ssl_fix
|
|
322
|
+
webdrivers (3.4.3)
|
|
311
323
|
nokogiri (~> 1.6)
|
|
312
324
|
rubyzip (~> 1.0)
|
|
313
325
|
selenium-webdriver (~> 3.0)
|
|
326
|
+
websocket (1.2.8)
|
|
314
327
|
websocket-driver (0.7.0)
|
|
315
328
|
websocket-extensions (>= 0.1.0)
|
|
316
329
|
websocket-extensions (0.1.3)
|
|
@@ -321,12 +334,13 @@ PLATFORMS
|
|
|
321
334
|
ruby
|
|
322
335
|
|
|
323
336
|
DEPENDENCIES
|
|
324
|
-
bundler (~> 1.16)
|
|
337
|
+
bundler (~> 1.16.0)
|
|
325
338
|
chromedriver-helper
|
|
326
339
|
hyper-component!
|
|
327
340
|
hyper-spec!
|
|
341
|
+
hyper-state!
|
|
328
342
|
hyper-store!
|
|
329
|
-
|
|
343
|
+
hyperstack-config!
|
|
330
344
|
jquery-rails
|
|
331
345
|
listen
|
|
332
346
|
mime-types
|
|
@@ -335,6 +349,7 @@ DEPENDENCIES
|
|
|
335
349
|
opal-rails (~> 0.9.4)
|
|
336
350
|
opal-rspec
|
|
337
351
|
pry
|
|
352
|
+
pry-rescue
|
|
338
353
|
puma
|
|
339
354
|
rails (>= 4.0.0)
|
|
340
355
|
rails-controller-testing
|
|
@@ -345,4 +360,4 @@ DEPENDENCIES
|
|
|
345
360
|
timecop (~> 0.8.1)
|
|
346
361
|
|
|
347
362
|
BUNDLED WITH
|
|
348
|
-
1.
|
|
363
|
+
1.16.1
|
|
@@ -107,7 +107,7 @@ def register_component_dsl_method(component)
|
|
|
107
107
|
parent = split_name.inject([Module]) { |nesting, next_const| nesting + [nesting.last.const_get(next_const)] }[-2]
|
|
108
108
|
class << parent
|
|
109
109
|
define_method component_name do |*args, &block|
|
|
110
|
-
|
|
110
|
+
RenderingContext.render(name, *args, &block)
|
|
111
111
|
end
|
|
112
112
|
define_method "#{component_name}_as_node" do |*args, &block|
|
|
113
113
|
React::Component.deprecation_warning("..._as_node is deprecated. Render component and then use the .node method instead")
|
data/hyper-component.gemspec
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
2
|
$:.push File.expand_path('../lib/', __FILE__)
|
|
3
|
-
require '
|
|
3
|
+
require 'hyperstack/component/version'
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |spec|
|
|
6
6
|
spec.name = 'hyper-component'
|
|
7
|
-
spec.version =
|
|
7
|
+
spec.version = Hyperstack::Component::VERSION
|
|
8
8
|
|
|
9
9
|
spec.authors = ['David Chang', 'Adam Jahn', 'Mitch VanDuyn', 'Jan Biedermann', 'Adam Creekroad']
|
|
10
10
|
spec.email = ['mitch@catprint.com']
|
|
@@ -21,17 +21,17 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
22
22
|
spec.require_paths = ['lib']
|
|
23
23
|
|
|
24
|
-
spec.add_dependency 'hyper-
|
|
25
|
-
spec.add_dependency '
|
|
26
|
-
spec.add_dependency 'libv8', '~> 6.
|
|
27
|
-
spec.add_dependency 'mini_racer', '~> 0.
|
|
24
|
+
spec.add_dependency 'hyper-state', Hyperstack::Component::VERSION
|
|
25
|
+
spec.add_dependency 'hyperstack-config', Hyperstack::Component::VERSION
|
|
26
|
+
spec.add_dependency 'libv8', '~> 6.3.0' # see https://github.com/discourse/mini_racer/issues/92
|
|
27
|
+
spec.add_dependency 'mini_racer', '~> 0.1.15'
|
|
28
28
|
spec.add_dependency 'opal', '>= 0.11.0', '< 0.12.0'
|
|
29
29
|
spec.add_dependency 'opal-activesupport', '~> 0.3.1'
|
|
30
30
|
spec.add_dependency 'react-rails', '>= 2.4.0', '< 2.5.0'
|
|
31
31
|
|
|
32
|
-
spec.add_development_dependency 'bundler', '~> 1.16'
|
|
32
|
+
spec.add_development_dependency 'bundler', '~> 1.16.0'
|
|
33
33
|
spec.add_development_dependency 'chromedriver-helper'
|
|
34
|
-
spec.add_development_dependency 'hyper-spec',
|
|
34
|
+
spec.add_development_dependency 'hyper-spec', Hyperstack::Component::VERSION
|
|
35
35
|
spec.add_development_dependency 'jquery-rails'
|
|
36
36
|
spec.add_development_dependency 'listen'
|
|
37
37
|
spec.add_development_dependency 'mime-types'
|
|
@@ -40,6 +40,7 @@ Gem::Specification.new do |spec|
|
|
|
40
40
|
spec.add_development_dependency 'opal-rails', '~> 0.9.4'
|
|
41
41
|
spec.add_development_dependency 'opal-rspec'
|
|
42
42
|
spec.add_development_dependency 'pry'
|
|
43
|
+
spec.add_development_dependency 'pry-rescue'
|
|
43
44
|
spec.add_development_dependency 'puma'
|
|
44
45
|
spec.add_development_dependency 'rails', '>= 4.0.0'
|
|
45
46
|
spec.add_development_dependency 'rails-controller-testing'
|
data/lib/hyper-component.rb
CHANGED
|
@@ -1,52 +1,40 @@
|
|
|
1
|
-
require '
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
require 'hyperstack/internal/component'
|
|
2
|
+
|
|
3
|
+
Hyperstack.import 'hyper-state'
|
|
4
|
+
Hyperstack.js_import 'react/react-source-browser', client_only: true, defines: %w[ReactDOM React]
|
|
5
|
+
Hyperstack.js_import 'react/react-source-server', server_only: true, defines: 'React'
|
|
6
|
+
Hyperstack.import 'browser/delay', client_only: true
|
|
7
|
+
Hyperstack.js_import 'react_ujs', defines: 'ReactRailsUJS'
|
|
8
|
+
Hyperstack.import 'hyper-component' # TODO: confirm this does not break anything. Added while converting hyperloop->hyperstack
|
|
9
|
+
Hyperstack.import 'hyperstack/component/auto-import' # TODO: confirm we can cancel the import
|
|
7
10
|
|
|
8
11
|
if RUBY_ENGINE == 'opal'
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
end
|
|
12
|
-
end
|
|
12
|
+
require 'hyperstack/internal/callbacks'
|
|
13
|
+
require 'hyperstack/internal/auto_unmount'
|
|
13
14
|
require 'native'
|
|
14
|
-
require '
|
|
15
|
-
require '
|
|
16
|
-
require '
|
|
17
|
-
require '
|
|
18
|
-
require '
|
|
19
|
-
require '
|
|
20
|
-
require '
|
|
21
|
-
require '
|
|
22
|
-
require '
|
|
23
|
-
require '
|
|
24
|
-
require '
|
|
25
|
-
require '
|
|
26
|
-
require '
|
|
27
|
-
require '
|
|
28
|
-
|
|
29
|
-
require '
|
|
30
|
-
require 'react/top_level'
|
|
31
|
-
require 'react/top_level_render'
|
|
32
|
-
require 'rails-helpers/top_level_rails_component'
|
|
33
|
-
require 'reactive-ruby/version'
|
|
34
|
-
module Hyperloop
|
|
35
|
-
class Component
|
|
36
|
-
def self.inherited(child)
|
|
37
|
-
child.include(Mixin)
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
15
|
+
require 'hyperstack/state/observer'
|
|
16
|
+
require 'hyperstack/internal/component/validator'
|
|
17
|
+
require 'hyperstack/component/element'
|
|
18
|
+
require 'hyperstack/internal/component/react_wrapper'
|
|
19
|
+
require 'hyperstack/component'
|
|
20
|
+
require 'hyperstack/internal/component/should_component_update'
|
|
21
|
+
require 'hyperstack/internal/component/tags'
|
|
22
|
+
require 'hyperstack/component/event'
|
|
23
|
+
require 'hyperstack/internal/component/rendering_context'
|
|
24
|
+
require 'hyperstack/ext/component/object'
|
|
25
|
+
require 'hyperstack/ext/component/number'
|
|
26
|
+
require 'hyperstack/ext/component/boolean'
|
|
27
|
+
require 'hyperstack/component/isomorphic_helpers'
|
|
28
|
+
require 'hyperstack/component/react_api'
|
|
29
|
+
require 'hyperstack/internal/component/top_level_rails_component'
|
|
30
|
+
require 'hyperstack/component/version'
|
|
41
31
|
else
|
|
42
32
|
require 'opal'
|
|
43
|
-
|
|
44
|
-
require 'hyper-store'
|
|
45
33
|
require 'opal-activesupport'
|
|
46
|
-
require '
|
|
47
|
-
require '
|
|
48
|
-
require '
|
|
49
|
-
require '
|
|
34
|
+
require 'hyperstack/component/version'
|
|
35
|
+
require 'hyperstack/internal/component/rails'
|
|
36
|
+
require 'hyperstack/component/isomorphic_helpers'
|
|
37
|
+
require 'hyperstack/ext/component/serializers'
|
|
50
38
|
|
|
51
39
|
Opal.append_path File.expand_path('../', __FILE__).untaint
|
|
52
40
|
require 'react/react-source'
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
require 'hyperstack/ext/component/string'
|
|
2
|
+
require 'hyperstack/ext/component/hash'
|
|
3
|
+
require 'active_support/core_ext/class/attribute'
|
|
4
|
+
require 'hyperstack/internal/auto_unmount'
|
|
5
|
+
require 'hyperstack/internal/component/rendering_context'
|
|
6
|
+
require 'hyperstack/internal/component'
|
|
7
|
+
require 'hyperstack/internal/component/instance_methods'
|
|
8
|
+
require 'hyperstack/internal/component/class_methods'
|
|
9
|
+
require 'hyperstack/internal/component/props_wrapper'
|
|
10
|
+
module Hyperstack
|
|
11
|
+
|
|
12
|
+
module Component
|
|
13
|
+
|
|
14
|
+
def self.included(base)
|
|
15
|
+
base.include(Hyperstack::State::Observer)
|
|
16
|
+
base.include(Hyperstack::Internal::Component::InstanceMethods)
|
|
17
|
+
base.include(Hyperstack::Internal::AutoUnmount) # pulls in the CallBacks module as well
|
|
18
|
+
base.include(Hyperstack::Internal::Component::Tags)
|
|
19
|
+
base.include(Hyperstack::Internal::Component::ShouldComponentUpdate)
|
|
20
|
+
base.class_eval do
|
|
21
|
+
class_attribute :initial_state
|
|
22
|
+
define_callback :before_mount
|
|
23
|
+
define_callback :after_mount
|
|
24
|
+
define_callback :before_receive_props
|
|
25
|
+
define_callback :before_update
|
|
26
|
+
define_callback :after_update
|
|
27
|
+
#define_callback :before_unmount defined already by Async module
|
|
28
|
+
define_callback(:after_error) { Hyperstack::Internal::Component::ReactWrapper.add_after_error_hook(base) }
|
|
29
|
+
end
|
|
30
|
+
base.extend(Hyperstack::Internal::Component::ClassMethods)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.force_update!
|
|
34
|
+
components = Hyperstack::Internal::Component.mounted_components.to_a
|
|
35
|
+
components.each do |comp|
|
|
36
|
+
next unless Hyperstack::Internal::Component.mounted_components.include? comp
|
|
37
|
+
comp.force_update!
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def self.deprecation_warning(message)
|
|
42
|
+
Hyperstack.deprecation_warning(name, message)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def deprecation_warning(message)
|
|
46
|
+
Hyperstack.deprecation_warning(self.class.name, message)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def initialize(native_element)
|
|
50
|
+
@__hyperstack_component_native = native_element
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def emit(event_name, *args)
|
|
54
|
+
if Event::BUILT_IN_EVENTS.include?(built_in_event_name = "on#{event_name.to_s.event_camelize}")
|
|
55
|
+
params[built_in_event_name].call(*args)
|
|
56
|
+
else
|
|
57
|
+
params["on_#{event_name}"].call(*args)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def component_will_mount
|
|
62
|
+
@__hyperstack_component_params_wrapper = self.class.props_wrapper.new(self)
|
|
63
|
+
IsomorphicHelpers.load_context(true) if IsomorphicHelpers.on_opal_client?
|
|
64
|
+
observing(immediate_update: true) do
|
|
65
|
+
Hyperstack::Internal::Component.mounted_components << self
|
|
66
|
+
run_callback(:before_mount, props)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def component_did_mount
|
|
71
|
+
observing(update_objects: true) do
|
|
72
|
+
run_callback(:after_mount)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def component_will_receive_props(next_props)
|
|
77
|
+
# need to rethink how this works in opal-react, or if its actually that useful within the react.rb environment
|
|
78
|
+
# for now we are just using it to clear processed_params
|
|
79
|
+
observing(immediate_update: true) { run_callback(:before_receive_props, next_props) }
|
|
80
|
+
@__hyperstack_component_receiving_props = true
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def component_will_update(next_props, next_state)
|
|
84
|
+
observing { run_callback(:before_update, next_props, next_state) }
|
|
85
|
+
if @__hyperstack_component_receiving_props
|
|
86
|
+
@__hyperstack_component_params_wrapper.reload(next_props)
|
|
87
|
+
end
|
|
88
|
+
@__hyperstack_component_receiving_props = false
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def component_did_update(prev_props, prev_state)
|
|
92
|
+
observing(update_objects: true) { run_callback(:after_update, prev_props, prev_state) }
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def component_will_unmount
|
|
96
|
+
observing do
|
|
97
|
+
unmount # runs unmount callbacks as well
|
|
98
|
+
remove
|
|
99
|
+
Hyperstack::Internal::Component.mounted_components.delete self
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def component_did_catch(error, info)
|
|
104
|
+
observing { run_callback(:after_error, error, info) }
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def mutations(_objects)
|
|
108
|
+
# if we have to we may have to require that all objects respond to a "name" method (see legacy method update_react_js_state below)
|
|
109
|
+
set_state('***_state_updated_at-***' => `Date.now() + Math.random()`)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def update_react_js_state(object, name, value)
|
|
113
|
+
if object
|
|
114
|
+
name = "#{object.class}.#{name}" unless object == self
|
|
115
|
+
# Date.now() has only millisecond precision, if several notifications of
|
|
116
|
+
# observer happen within a millisecond, updates may get lost.
|
|
117
|
+
# to mitigate this the Math.random() appends some random number
|
|
118
|
+
# this way notifactions will happen as expected by the rest of hyperloop
|
|
119
|
+
set_state(
|
|
120
|
+
'***_state_updated_at-***' => `Date.now() + Math.random()`,
|
|
121
|
+
name => value
|
|
122
|
+
)
|
|
123
|
+
else
|
|
124
|
+
set_state name => value
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def render
|
|
129
|
+
raise 'no render defined'
|
|
130
|
+
end unless method_defined?(:render)
|
|
131
|
+
|
|
132
|
+
def waiting_on_resources
|
|
133
|
+
@__hyperstack_component_waiting_on_resources
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def _render_wrapper
|
|
137
|
+
observing(rendering: true) do
|
|
138
|
+
element = Hyperstack::Internal::Component::RenderingContext.render(nil) { render || '' }
|
|
139
|
+
@__hyperstack_component_waiting_on_resources =
|
|
140
|
+
element.waiting_on_resources if element.respond_to? :waiting_on_resources
|
|
141
|
+
element
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|