hyper-component 1.0.alpha1.3 → 1.0.alpha1.8

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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -0
  3. data/Gemfile +5 -0
  4. data/hyper-component.gemspec +8 -16
  5. data/lib/hyper-component.rb +8 -1
  6. data/lib/hyperstack/component.rb +46 -10
  7. data/lib/hyperstack/component/children.rb +1 -1
  8. data/lib/hyperstack/component/element.rb +93 -21
  9. data/lib/hyperstack/component/event.rb +1 -1
  10. data/lib/hyperstack/component/free_render.rb +21 -0
  11. data/lib/hyperstack/component/isomorphic_helpers.rb +13 -10
  12. data/lib/hyperstack/component/version.rb +1 -1
  13. data/lib/hyperstack/component/while_loading.rb +1 -1
  14. data/lib/hyperstack/ext/component/array.rb +20 -0
  15. data/lib/hyperstack/ext/component/element.rb +5 -7
  16. data/lib/hyperstack/ext/component/enumerable.rb +18 -0
  17. data/lib/hyperstack/ext/component/kernel.rb +7 -0
  18. data/lib/hyperstack/ext/component/time.rb +5 -0
  19. data/lib/hyperstack/internal/component/class_methods.rb +4 -3
  20. data/lib/hyperstack/internal/component/haml.rb +3 -12
  21. data/lib/hyperstack/internal/component/props_wrapper.rb +13 -11
  22. data/lib/hyperstack/internal/component/rails/component_mount.rb +12 -0
  23. data/lib/hyperstack/internal/component/rails/controller_helper.rb +1 -1
  24. data/lib/hyperstack/internal/component/rails/railtie.rb +3 -2
  25. data/lib/hyperstack/internal/component/rails/server_rendering/contextual_renderer.rb +5 -1
  26. data/lib/hyperstack/internal/component/rails/server_rendering/hyper_asset_container.rb +4 -2
  27. data/lib/hyperstack/internal/component/react_wrapper.rb +77 -60
  28. data/lib/hyperstack/internal/component/rendering_context.rb +80 -44
  29. data/lib/hyperstack/internal/component/rescue_wrapper.rb +1 -1
  30. data/lib/hyperstack/internal/component/tags.rb +12 -3
  31. data/lib/react/react-source.rb +2 -2
  32. metadata +51 -89
  33. data/Gemfile.lock +0 -364
@@ -19,27 +19,41 @@ module Hyperstack
19
19
  raise NotQuiet.new("#{component} is waiting on resources")
20
20
  end
21
21
 
22
+ def render_string(string)
23
+ @buffer ||= []
24
+ @buffer << string
25
+ end
26
+
22
27
  def render(name, *args, &block)
23
28
  was_outer_most = !@not_outer_most
24
29
  @not_outer_most = true
25
30
  remove_nodes_from_args(args)
26
- @buffer ||= [] unless @buffer
31
+ @buffer ||= [] #unless @buffer
27
32
  if block
28
33
  element = build do
29
34
  saved_waiting_on_resources = nil #waiting_on_resources what was the purpose of this its used below to or in with the current elements waiting_for_resources
30
35
  self.waiting_on_resources = nil
31
- run_child_block(name.nil?, &block)
36
+ run_child_block(&block)
32
37
  if name
33
38
  buffer = @buffer.dup
34
39
  ReactWrapper.create_element(name, *args) { buffer }.tap do |element|
35
40
  element.waiting_on_resources = saved_waiting_on_resources || !!buffer.detect { |e| e.waiting_on_resources if e.respond_to?(:waiting_on_resources) }
36
41
  element.waiting_on_resources ||= waiting_on_resources if buffer.last.is_a?(String)
37
42
  end
38
- elsif @buffer.last.is_a? Hyperstack::Component::Element
39
- @buffer.last.tap { |element| element.waiting_on_resources ||= saved_waiting_on_resources }
40
43
  else
41
- buffer_s = @buffer.last.to_s
42
- RenderingContext.render(:span) { buffer_s }.tap { |element| element.waiting_on_resources = saved_waiting_on_resources }
44
+ buffer = @buffer.collect do |item|
45
+ if item.is_a? Hyperstack::Component::Element
46
+ item.waiting_on_resources ||= saved_waiting_on_resources
47
+ item
48
+ else
49
+ RenderingContext.render(:span) { item.to_s }.tap { |element| element.waiting_on_resources = saved_waiting_on_resources }
50
+ end
51
+ end
52
+ if buffer.length > 1
53
+ buffer
54
+ else
55
+ buffer.first
56
+ end
43
57
  end
44
58
  end
45
59
  elsif name.is_a? Hyperstack::Component::Element
@@ -65,6 +79,7 @@ module Hyperstack
65
79
 
66
80
  def delete(element)
67
81
  @buffer.delete(element)
82
+ @last_deleted = element
68
83
  element
69
84
  end
70
85
  alias as_node delete
@@ -86,55 +101,74 @@ module Hyperstack
86
101
  end if args[0] && args[0].is_a?(Hash)
87
102
  end
88
103
 
89
- # run_child_block gathers the element(s) generated by a child block.
104
+ # run_child_block yields to the child rendering block which will put any
105
+ # elements to be rendered into the current rendering buffer.
106
+ #
90
107
  # for example when rendering this div: div { "hello".span; "goodby".span }
91
108
  # two child Elements will be generated.
92
109
  #
93
- # the final value of the block should either be
94
- # 1 an object that responds to :acts_as_string?
95
- # 2 a string,
96
- # 3 an element that is NOT yet pushed on the rendering buffer
97
- # 4 or the last element pushed on the buffer
110
+ # However the block itself will return a value, which in some cases should
111
+ # also added to the buffer:
112
+ #
113
+ # If the final value of the block is a
98
114
  #
99
- # in case 1 we render a span
100
- # in case 2 we automatically push the string onto the buffer
101
- # in case 3 we also push the Element onto the buffer IF the buffer is empty
102
- # case 4 requires no special processing
115
+ # a hyper model dummy value that is being loaded, then wrap it in a span and add it to the buffer
116
+ # a string (or if the buffer is empty any value), then add it to the buffer
117
+ # an Element, then add it on the buffer unless it has been just deleted
118
+ # #
119
+ # Note that the reason we don't always allow Strings to be automatically pushed is
120
+ # to avoid confusing results in situations like this:
121
+ # DIV { collection.each { |item| SPAN { item } } }
122
+ # If we accepted any object to be rendered this would generate:
123
+ # DIV { SPAN { collection[0] } SPAN { collection[n] } collection.to_s }
124
+ # which is probably not the desired output. If it was you would just append to_s
125
+ # to the end of the expression, to force it to be added to the output buffer.
103
126
  #
104
- # Once we have taken care of these special cases we do a check IF we are in an
105
- # outer rendering scope. In this case react only allows us to generate 1 Element
106
- # so we insure that is the case, and also check to make sure that element in the buffer
107
- # is the element returned
127
+ # However if the buffer is empty then it makes sense to automatically apply the `.to_s`
128
+ # to the value, and push it on the buffer, unless it is a falsy value or an array
108
129
 
109
- def run_child_block(is_outer_scope)
130
+ def run_child_block
110
131
  result = yield
111
- if result.respond_to?(:acts_as_string?) && result.acts_as_string?
112
- # hyper-mesh DummyValues respond to acts_as_string, and must
132
+ check_for_component_return(result)
133
+ if dummy_value?(result)
134
+ # hyper-mesh DummyValues must
113
135
  # be converted to spans INSIDE the parent, otherwise the waiting_on_resources
114
136
  # flag will get set in the wrong context
115
137
  RenderingContext.render(:span) { result.to_s }
116
- elsif result.is_a?(String) || (result.is_a?(Hyperstack::Component::Element) && @buffer.empty?)
117
- @buffer << result
138
+ elsif result.is_a?(Hyperstack::Component::Element)
139
+ @buffer << result if @buffer.empty? unless @last_deleted == result
140
+ elsif pushable_string?(result)
141
+ @buffer << result.to_s
118
142
  end
119
- raise_render_error(result) if is_outer_scope && @buffer != [result]
143
+ @last_deleted = nil
120
144
  end
121
145
 
122
- # heurestically raise a meaningful error based on the situation
123
-
124
- def raise_render_error(result)
125
- improper_render 'A different element was returned than was generated within the DSL.',
126
- 'Possibly improper use of Element#delete.' if @buffer.count == 1
127
- improper_render "Instead #{@buffer.count} elements were generated.",
128
- 'Do you want to wrap your elements in a div?' if @buffer.count > 1
129
- improper_render "Instead the component #{result} was returned.",
130
- "Did you mean #{result}()?" if result.try :hyper_component?
131
- improper_render "Instead the #{result.class} #{result} was returned.",
132
- 'You may need to convert this to a string.'
146
+ def check_for_component_return(result)
147
+ # check for a common error of saying (for example) DIV (without parens)
148
+ # which returns the DIV component class instead of a rendered DIV
149
+ return unless result.try :hyper_component?
150
+
151
+ Hyperstack::Component::IsomorphicHelpers.log(
152
+ "a component's render method returned the component class #{result}, did you mean to say #{result}()",
153
+ :warning
154
+ )
155
+ end
156
+
157
+ def dummy_value?(result)
158
+ result.respond_to?(:loading?) && result.loading?
159
+ end
160
+
161
+ def pushable_string?(result)
162
+ # if the buffer is not empty we will only push on strings, and ignore anything else
163
+ return result.is_a?(String) unless @buffer.empty?
164
+
165
+ # if the buffer IS empty then we can push on anything except we avoid nil, false and arrays
166
+ # as these are almost never what you want to render, and if you do there are mechanisms
167
+ # to render them explicitly
168
+ result && result.respond_to?(:to_n) && !result.is_a?(Array)
133
169
  end
134
170
 
135
171
  def improper_render(message, solution)
136
- raise "a component's render method must generate and return exactly 1 element or a string.\n"\
137
- " #{message} #{solution}"
138
172
  end
139
173
  end
140
174
  end
@@ -143,7 +177,7 @@ module Hyperstack
143
177
  end
144
178
 
145
179
  class Object
146
- [:span, :td, :th].each do |tag|
180
+ %i[span td th].each do |tag|
147
181
  define_method(tag) do |*args, &block|
148
182
  args.unshift(tag)
149
183
  # legacy hyperloop allowed tags to be lower case as well so if self is a component
@@ -155,24 +189,26 @@ class Object
155
189
  # in the component.
156
190
  # If we fully deprecate lowercase tags, then this next line can go...
157
191
  return send(*args, &block) if respond_to?(:hyper_component?) && hyper_component?
192
+
158
193
  Hyperstack::Internal::Component::RenderingContext.render(*args) { to_s }
159
194
  end
160
195
  end
161
196
 
162
-
163
197
  def para(*args, &block)
164
198
  args.unshift(:p)
165
199
  # see above comment
166
200
  return send(*args, &block) if respond_to?(:hyper_component?) && hyper_component?
201
+
167
202
  Hyperstack::Internal::Component::RenderingContext.render(*args) { to_s }
168
203
  end
169
204
 
170
205
  def br
171
206
  # see above comment
172
207
  return send(:br) if respond_to?(:hyper_component?) && hyper_component?
173
- Hyperstack::Internal::Component::RenderingContext.render(:span) do
174
- Hyperstack::Internal::Component::RenderingContext.render(to_s)
175
- Hyperstack::Internal::Component::RenderingContext.render(:br)
208
+
209
+ Hyperstack::Internal::Component::RenderingContext.render(Hyperstack::Internal::Component::Tags::FRAGMENT) do
210
+ Hyperstack::Internal::Component::RenderingContext.render(Hyperstack::Internal::Component::Tags::FRAGMENT) { to_s }
211
+ Hyperstack::Internal::Component::RenderingContext.render(Hyperstack::Internal::Component::Tags::BR)
176
212
  end
177
213
  end
178
214
 
@@ -27,7 +27,7 @@ module Hyperstack
27
27
 
28
28
  after_error do |error, info|
29
29
  args = RescueWrapper.after_error_args || [error, info]
30
- found, * = @Child.run_callback(:__hyperstack_component_rescue_hook, found, *args) { |a| a }
30
+ found, * = @Child.run_callback(:__hyperstack_component_rescue_hook, found, *args)
31
31
  unless found
32
32
  RescueWrapper.after_error_args = args
33
33
  raise error
@@ -32,6 +32,14 @@ module Hyperstack
32
32
  const_set tag.upcase, tag
33
33
  end
34
34
 
35
+ const_set "FRAGMENT", (
36
+ Class.new do
37
+ include Hyperstack::Component
38
+ render {}
39
+ Hyperstack::Internal::Component::ReactWrapper.import_native_component(self, `React.Fragment`)
40
+ end
41
+ )
42
+
35
43
  # this is used for haml style (i.e. DIV.foo.bar) class tags which is deprecated
36
44
  def self.html_tag_class_for(tag)
37
45
  downcased_tag = tag.downcase
@@ -85,11 +93,12 @@ module Hyperstack
85
93
 
86
94
  def lookup_const(name)
87
95
  return nil unless name =~ /^[A-Z]/
88
- scopes = self.class.name.to_s.split('::').inject([Module]) do |nesting, next_const|
96
+ return Hyperstack::Internal::Component::Tags::FRAGMENT if name == "FRAGMENT"
97
+ scopes = self.class.name.to_s.split('::').inject([Object]) do |nesting, next_const|
89
98
  nesting + [nesting.last.const_get(next_const)]
90
99
  end.reverse
91
- scope = scopes.detect { |s| s.const_defined?(name) }
92
- scope.const_get(name) if scope
100
+ scope = scopes.detect { |s| s.const_defined?(name, false) }
101
+ scope.const_get(name, false) if scope
93
102
  end
94
103
  end
95
104
  end
@@ -11,7 +11,7 @@ if RUBY_ENGINE == 'opal'
11
11
  else
12
12
  require "hyperstack/internal/component"
13
13
  require "react/rails/asset_variant"
14
- variant = Hyperstack.env.production? ? 'production' : 'development'
15
- react_directory = React::Rails::AssetVariant.new({environment: variant}).react_directory
14
+ variant = Hyperstack.env.production? ? :production : :development
15
+ react_directory = React::Rails::AssetVariant.new({ variant: variant }).react_directory
16
16
  Opal.append_path react_directory.untaint
17
17
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyper-component
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.alpha1.3
4
+ version: 1.0.alpha1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Chang
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2019-01-17 00:00:00.000000000 Z
15
+ date: 2021-04-13 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: hyper-state
@@ -20,76 +20,28 @@ dependencies:
20
20
  requirements:
21
21
  - - '='
22
22
  - !ruby/object:Gem::Version
23
- version: 1.0.alpha1.3
23
+ version: 1.0.alpha1.8
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
28
  - - '='
29
29
  - !ruby/object:Gem::Version
30
- version: 1.0.alpha1.3
30
+ version: 1.0.alpha1.8
31
31
  - !ruby/object:Gem::Dependency
32
32
  name: hyperstack-config
33
33
  requirement: !ruby/object:Gem::Requirement
34
34
  requirements:
35
35
  - - '='
36
36
  - !ruby/object:Gem::Version
37
- version: 1.0.alpha1.3
37
+ version: 1.0.alpha1.8
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  requirements:
42
42
  - - '='
43
43
  - !ruby/object:Gem::Version
44
- version: 1.0.alpha1.3
45
- - !ruby/object:Gem::Dependency
46
- name: libv8
47
- requirement: !ruby/object:Gem::Requirement
48
- requirements:
49
- - - "~>"
50
- - !ruby/object:Gem::Version
51
- version: 6.7.0
52
- type: :runtime
53
- prerelease: false
54
- version_requirements: !ruby/object:Gem::Requirement
55
- requirements:
56
- - - "~>"
57
- - !ruby/object:Gem::Version
58
- version: 6.7.0
59
- - !ruby/object:Gem::Dependency
60
- name: mini_racer
61
- requirement: !ruby/object:Gem::Requirement
62
- requirements:
63
- - - "~>"
64
- - !ruby/object:Gem::Version
65
- version: 0.2.4
66
- type: :runtime
67
- prerelease: false
68
- version_requirements: !ruby/object:Gem::Requirement
69
- requirements:
70
- - - "~>"
71
- - !ruby/object:Gem::Version
72
- version: 0.2.4
73
- - !ruby/object:Gem::Dependency
74
- name: opal
75
- requirement: !ruby/object:Gem::Requirement
76
- requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- version: 0.11.0
80
- - - "<"
81
- - !ruby/object:Gem::Version
82
- version: 0.12.0
83
- type: :runtime
84
- prerelease: false
85
- version_requirements: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: 0.11.0
90
- - - "<"
91
- - !ruby/object:Gem::Version
92
- version: 0.12.0
44
+ version: 1.0.alpha1.8
93
45
  - !ruby/object:Gem::Dependency
94
46
  name: opal-activesupport
95
47
  requirement: !ruby/object:Gem::Requirement
@@ -130,20 +82,14 @@ dependencies:
130
82
  requirements:
131
83
  - - ">="
132
84
  - !ruby/object:Gem::Version
133
- version: 1.17.3
134
- - - "<"
135
- - !ruby/object:Gem::Version
136
- version: '2.1'
85
+ version: '0'
137
86
  type: :development
138
87
  prerelease: false
139
88
  version_requirements: !ruby/object:Gem::Requirement
140
89
  requirements:
141
90
  - - ">="
142
91
  - !ruby/object:Gem::Version
143
- version: 1.17.3
144
- - - "<"
145
- - !ruby/object:Gem::Version
146
- version: '2.1'
92
+ version: '0'
147
93
  - !ruby/object:Gem::Dependency
148
94
  name: chromedriver-helper
149
95
  requirement: !ruby/object:Gem::Requirement
@@ -164,14 +110,14 @@ dependencies:
164
110
  requirements:
165
111
  - - '='
166
112
  - !ruby/object:Gem::Version
167
- version: 1.0.alpha1.3
113
+ version: 1.0.alpha1.8
168
114
  type: :development
169
115
  prerelease: false
170
116
  version_requirements: !ruby/object:Gem::Requirement
171
117
  requirements:
172
118
  - - '='
173
119
  - !ruby/object:Gem::Version
174
- version: 1.0.alpha1.3
120
+ version: 1.0.alpha1.8
175
121
  - !ruby/object:Gem::Dependency
176
122
  name: jquery-rails
177
123
  requirement: !ruby/object:Gem::Requirement
@@ -215,7 +161,7 @@ dependencies:
215
161
  - !ruby/object:Gem::Version
216
162
  version: '0'
217
163
  - !ruby/object:Gem::Dependency
218
- name: nokogiri
164
+ name: mini_racer
219
165
  requirement: !ruby/object:Gem::Requirement
220
166
  requirements:
221
167
  - - ">="
@@ -229,7 +175,7 @@ dependencies:
229
175
  - !ruby/object:Gem::Version
230
176
  version: '0'
231
177
  - !ruby/object:Gem::Dependency
232
- name: opal-jquery
178
+ name: nokogiri
233
179
  requirement: !ruby/object:Gem::Requirement
234
180
  requirements:
235
181
  - - ">="
@@ -243,35 +189,41 @@ dependencies:
243
189
  - !ruby/object:Gem::Version
244
190
  version: '0'
245
191
  - !ruby/object:Gem::Dependency
246
- name: opal-rails
192
+ name: opal-jquery
247
193
  requirement: !ruby/object:Gem::Requirement
248
194
  requirements:
249
- - - "~>"
195
+ - - ">="
250
196
  - !ruby/object:Gem::Version
251
- version: 0.9.4
197
+ version: '0'
252
198
  type: :development
253
199
  prerelease: false
254
200
  version_requirements: !ruby/object:Gem::Requirement
255
201
  requirements:
256
- - - "~>"
202
+ - - ">="
257
203
  - !ruby/object:Gem::Version
258
- version: 0.9.4
204
+ version: '0'
259
205
  - !ruby/object:Gem::Dependency
260
- name: opal-rspec
206
+ name: opal-rails
261
207
  requirement: !ruby/object:Gem::Requirement
262
208
  requirements:
263
209
  - - ">="
264
210
  - !ruby/object:Gem::Version
265
- version: '0'
211
+ version: 0.9.4
212
+ - - "<"
213
+ - !ruby/object:Gem::Version
214
+ version: '2.0'
266
215
  type: :development
267
216
  prerelease: false
268
217
  version_requirements: !ruby/object:Gem::Requirement
269
218
  requirements:
270
219
  - - ">="
271
220
  - !ruby/object:Gem::Version
272
- version: '0'
221
+ version: 0.9.4
222
+ - - "<"
223
+ - !ruby/object:Gem::Version
224
+ version: '2.0'
273
225
  - !ruby/object:Gem::Dependency
274
- name: pry
226
+ name: pry-rescue
275
227
  requirement: !ruby/object:Gem::Requirement
276
228
  requirements:
277
229
  - - ">="
@@ -285,7 +237,7 @@ dependencies:
285
237
  - !ruby/object:Gem::Version
286
238
  version: '0'
287
239
  - !ruby/object:Gem::Dependency
288
- name: pry-rescue
240
+ name: pry-stack_explorer
289
241
  requirement: !ruby/object:Gem::Requirement
290
242
  requirements:
291
243
  - - ">="
@@ -318,14 +270,20 @@ dependencies:
318
270
  requirements:
319
271
  - - ">="
320
272
  - !ruby/object:Gem::Version
321
- version: 4.0.0
273
+ version: 5.0.0
274
+ - - "<"
275
+ - !ruby/object:Gem::Version
276
+ version: '7.0'
322
277
  type: :development
323
278
  prerelease: false
324
279
  version_requirements: !ruby/object:Gem::Requirement
325
280
  requirements:
326
281
  - - ">="
327
282
  - !ruby/object:Gem::Version
328
- version: 4.0.0
283
+ version: 5.0.0
284
+ - - "<"
285
+ - !ruby/object:Gem::Version
286
+ version: '7.0'
329
287
  - !ruby/object:Gem::Dependency
330
288
  name: rails-controller-testing
331
289
  requirement: !ruby/object:Gem::Requirement
@@ -372,30 +330,30 @@ dependencies:
372
330
  name: rubocop
373
331
  requirement: !ruby/object:Gem::Requirement
374
332
  requirements:
375
- - - "~>"
333
+ - - ">="
376
334
  - !ruby/object:Gem::Version
377
- version: 0.51.0
335
+ version: '0'
378
336
  type: :development
379
337
  prerelease: false
380
338
  version_requirements: !ruby/object:Gem::Requirement
381
339
  requirements:
382
- - - "~>"
340
+ - - ">="
383
341
  - !ruby/object:Gem::Version
384
- version: 0.51.0
342
+ version: '0'
385
343
  - !ruby/object:Gem::Dependency
386
344
  name: sqlite3
387
345
  requirement: !ruby/object:Gem::Requirement
388
346
  requirements:
389
- - - ">="
347
+ - - "~>"
390
348
  - !ruby/object:Gem::Version
391
- version: '0'
349
+ version: 1.4.2
392
350
  type: :development
393
351
  prerelease: false
394
352
  version_requirements: !ruby/object:Gem::Requirement
395
353
  requirements:
396
- - - ">="
354
+ - - "~>"
397
355
  - !ruby/object:Gem::Version
398
- version: '0'
356
+ version: 1.4.2
399
357
  - !ruby/object:Gem::Dependency
400
358
  name: timecop
401
359
  requirement: !ruby/object:Gem::Requirement
@@ -422,7 +380,6 @@ files:
422
380
  - ".travis.yml"
423
381
  - CHANGELOG.md
424
382
  - Gemfile
425
- - Gemfile.lock
426
383
  - Rakefile
427
384
  - how-component-name-lookup-works.md
428
385
  - hyper-component.gemspec
@@ -432,6 +389,7 @@ files:
432
389
  - lib/hyperstack/component/children.rb
433
390
  - lib/hyperstack/component/element.rb
434
391
  - lib/hyperstack/component/event.rb
392
+ - lib/hyperstack/component/free_render.rb
435
393
  - lib/hyperstack/component/haml.rb
436
394
  - lib/hyperstack/component/isomorphic_helpers.rb
437
395
  - lib/hyperstack/component/jquery.rb
@@ -440,13 +398,17 @@ files:
440
398
  - lib/hyperstack/component/server.rb
441
399
  - lib/hyperstack/component/version.rb
442
400
  - lib/hyperstack/component/while_loading.rb
401
+ - lib/hyperstack/ext/component/array.rb
443
402
  - lib/hyperstack/ext/component/boolean.rb
444
403
  - lib/hyperstack/ext/component/element.rb
404
+ - lib/hyperstack/ext/component/enumerable.rb
445
405
  - lib/hyperstack/ext/component/hash.rb
406
+ - lib/hyperstack/ext/component/kernel.rb
446
407
  - lib/hyperstack/ext/component/number.rb
447
408
  - lib/hyperstack/ext/component/object.rb
448
409
  - lib/hyperstack/ext/component/serializers.rb
449
410
  - lib/hyperstack/ext/component/string.rb
411
+ - lib/hyperstack/ext/component/time.rb
450
412
  - lib/hyperstack/internal/component.rb
451
413
  - lib/hyperstack/internal/component/class_methods.rb
452
414
  - lib/hyperstack/internal/component/haml.rb
@@ -471,7 +433,7 @@ files:
471
433
  - lib/react/react-source-server.rb
472
434
  - lib/react/react-source.rb
473
435
  - unmounting-objects.md
474
- homepage: http://ruby-hyperloop.org
436
+ homepage: http://hyperstack.org
475
437
  licenses:
476
438
  - MIT
477
439
  metadata: {}
@@ -490,7 +452,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
490
452
  - !ruby/object:Gem::Version
491
453
  version: 1.3.1
492
454
  requirements: []
493
- rubygems_version: 3.0.2
455
+ rubygems_version: 3.0.8
494
456
  signing_key:
495
457
  specification_version: 4
496
458
  summary: Opal Ruby wrapper of React.js library.