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

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 42dc80deeb92bd2de37632efacae8b8d4a801c530d65937b7535018a2d3bc91a
4
- data.tar.gz: 142a8df3b61e46f55d0d56766cddff7e734fc01b5f7f594ea6a57900bc4e9e4c
3
+ metadata.gz: 407fc5c699f76a1d030f4f8c3c221806ce010cd473adb062fbba7f08d41f2a74
4
+ data.tar.gz: 9d139310c4721502f09b74477efdd4f4f6fe388bc4a410abf6abe87e7cee0f52
5
5
  SHA512:
6
- metadata.gz: 5306b0fd124bee54d7873b2b6a0f4d6713fd346e2efa3bf9ba9f0467df1348a919daf07aecedb55983e26f95076f8df67981774c3288d6eda3af346036fea791
7
- data.tar.gz: ea657f7f9aae7884b5602f3be778452f9088bf9a34ca2afef10ce98e10428412a2e53d5dad6abf55a65f7edc2041460b598b5bd12c6422cb608a29423b8d12ee
6
+ metadata.gz: aa213634e017097aa2562f00f29083017a12e345ba1abfe51bac88e7941b7e0f08f787f32f64871698b922e8518ec0e11bd34faa52a83c3c453f931a8ce97811
7
+ data.tar.gz: bf453d84ab0e93c94831a42cba2b3a3c364d18612071e7564b4d3f751d282c5fa04240f3c938e591e9f755f2dee619e69b885b90c4718f2da5199446ce380587
data/.gitignore CHANGED
@@ -41,3 +41,7 @@ spec/test_app/db
41
41
  # ignore IDE files
42
42
  .idea
43
43
  .vscode
44
+
45
+ # ignore Gemfile.locks https://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
46
+ /spec/test_app/Gemfile.lock
47
+ /Gemfile.lock
@@ -47,6 +47,6 @@ Gem::Specification.new do |spec|
47
47
  spec.add_development_dependency 'rake'
48
48
  spec.add_development_dependency 'rspec-rails'
49
49
  spec.add_development_dependency 'rubocop', '~> 0.51.0'
50
- spec.add_development_dependency 'sqlite3'
50
+ spec.add_development_dependency 'sqlite3', '~> 1.3.6' # see https://github.com/rails/rails/issues/35153
51
51
  spec.add_development_dependency 'timecop', '~> 0.8.1'
52
52
  end
@@ -33,6 +33,19 @@ module Hyperstack
33
33
  @native = native_element
34
34
  end
35
35
 
36
+ def _update_ref(x)
37
+ @ref = x
38
+ @_child_element._update_ref(x) if @_child_element
39
+ end
40
+
41
+ def ref
42
+ @ref || raise("#{self} has not been mounted yet")
43
+ end
44
+
45
+ def dom_node
46
+ @type.is_a?(String) ? ref : ref.dom_node
47
+ end
48
+
36
49
  # Attach event handlers.
37
50
 
38
51
  def on(*event_names, &block)
@@ -45,14 +58,14 @@ module Hyperstack
45
58
  # Used for elements that are not yet in DOM, i.e. they are provided as children
46
59
  # or they have been explicitly removed from the rendering context using the delete method.
47
60
 
48
- def render(*props, &new_block)
61
+ def render(*props)
49
62
  if props.empty?
50
63
  Hyperstack::Internal::Component::RenderingContext.render(self)
51
64
  else
52
- props = Hyperstack::Internal::Component::ReactWrapper.convert_props(props)
53
- Hyperstack::Internal::Component::RenderingContext.render(
65
+ props = Hyperstack::Internal::Component::ReactWrapper.convert_props(@type, @properties, *props)
66
+ @_child_element = Hyperstack::Internal::Component::RenderingContext.render(
54
67
  Element.new(`React.cloneElement(#{@native}, #{props.shallow_to_n})`,
55
- type, @properties.merge(props), block)
68
+ type, props, block)
56
69
  )
57
70
  end
58
71
  end
@@ -96,7 +109,7 @@ module Hyperstack
96
109
  end
97
110
  end
98
111
 
99
- def merge_built_in_event_prop!(prop_name)
112
+ def merge_built_in_event_prop!(prop_name, &block)
100
113
  @properties.merge!(
101
114
  prop_name => %x{
102
115
  function(){
@@ -106,9 +119,17 @@ module Hyperstack
106
119
  if (arguments.length > 1) {
107
120
  all_args = Array.prototype.slice.call(arguments);
108
121
  other_args = all_args.slice(1, arguments.length);
109
- return #{yield(Event.new(`react_event`), *(`other_args`))};
122
+ return #{
123
+ Internal::State::Mapper.ignore_bulk_updates(
124
+ Event.new(`react_event`), *(`other_args`), &block
125
+ )
126
+ };
110
127
  } else {
111
- return #{yield(Event.new(`react_event`))};
128
+ return #{
129
+ Internal::State::Mapper.ignore_bulk_updates(
130
+ Event.new(`react_event`), &block
131
+ )
132
+ };
112
133
  }
113
134
  }
114
135
  }
@@ -1,5 +1,5 @@
1
1
  module Hyperstack
2
2
  module Component
3
- VERSION = '1.0.alpha1.3' # '1.0.alpha1.3'
3
+ VERSION = '1.0.alpha1.4' # '1.0.alpha1.4'
4
4
  end
5
5
  end
@@ -27,7 +27,9 @@ module Hyperstack
27
27
  Hyperstack::Internal::Component::RenderingContext.replace(
28
28
  self,
29
29
  Hyperstack::Internal::Component::RenderingContext.build do
30
- Hyperstack::Internal::Component::RenderingContext.render(type, build_new_properties(class_name, args), &new_block)
30
+ Hyperstack::Internal::Component::RenderingContext.render(
31
+ type, @properties, args, class: haml_class_name(class_name), &new_block
32
+ )
31
33
  end
32
34
  )
33
35
  end
@@ -39,17 +41,6 @@ module Hyperstack
39
41
  def haml_class_name(class_name)
40
42
  class_name.gsub(/__|_/, '__' => '_', '_' => '-')
41
43
  end
42
-
43
- private
44
-
45
- def build_new_properties(class_name, args)
46
- class_name = haml_class_name(class_name)
47
- new_props = @properties.dup
48
- new_props[:className] = "\
49
- #{class_name} #{new_props[:className]} #{args.delete(:class)} #{args.delete(:className)}\
50
- ".split(' ').uniq.join(' ')
51
- new_props.merge! args
52
- end
53
44
  end
54
45
  end
55
46
  end
@@ -18,6 +18,10 @@ module Hyperstack
18
18
  class ReactWrapper
19
19
  @@component_classes = {}
20
20
 
21
+ def self.stateless?(ncc)
22
+ `typeof #{ncc} === 'function' && !(#{ncc}.prototype && #{ncc}.prototype.isReactComponent)`
23
+ end
24
+
21
25
  def self.import_native_component(opal_class, native_class)
22
26
  opal_class.instance_variable_set("@native_import", true)
23
27
  @@component_classes[opal_class] = native_class
@@ -29,9 +33,8 @@ module Hyperstack
29
33
  is_component_class = `#{component}.prototype !== undefined` &&
30
34
  (`!!#{component}.prototype.isReactComponent` ||
31
35
  `!!#{component}.prototype.render`)
32
- is_functional_component = `typeof #{component} === "function"`
33
36
  has_render_method = `typeof #{component}.render === "function"`
34
- unless is_component_class || is_functional_component || has_render_method
37
+ unless is_component_class || stateless?(component) || has_render_method
35
38
  raise 'does not appear to be a native react component'
36
39
  end
37
40
  component
@@ -178,7 +181,9 @@ module Hyperstack
178
181
  end
179
182
 
180
183
  # Convert Passed in properties
181
- properties = convert_props(args)
184
+ ele = nil # create nil var for the ref to use
185
+ ref = ->(ref) { ele._update_ref(ref) } unless stateless?(ncc)
186
+ properties = convert_props(type, { ref: ref }, *args)
182
187
  params << properties.shallow_to_n
183
188
 
184
189
  # Children Nodes
@@ -190,14 +195,17 @@ module Hyperstack
190
195
  }
191
196
  }
192
197
  end
193
- Hyperstack::Component::Element.new(`React.createElement.apply(null, #{params})`, type, properties, block)
198
+ # assign to ele so that the ref callback can use it
199
+ ele = Hyperstack::Component::Element.new(
200
+ `React.createElement.apply(null, #{params})`, type, properties, block
201
+ )
194
202
  end
195
203
 
196
204
  def self.clear_component_class_cache
197
205
  @@component_classes = {}
198
206
  end
199
207
 
200
- def self.convert_props(args)
208
+ def self.convert_props(type, *args)
201
209
  # merge args together into a single properties hash
202
210
  properties = {}
203
211
  args.each do |arg|
@@ -234,33 +242,50 @@ module Hyperstack
234
242
  # process properties according to react rules
235
243
  props = {}
236
244
  properties.each do |key, value|
237
- if ["style", "dangerously_set_inner_HTML"].include? key
245
+ if %w[style dangerously_set_inner_HTML].include? key
238
246
  props[lower_camelize(key)] = value.to_n
239
247
 
240
- elsif key == "className"
248
+ elsif key == :className
241
249
  props[key] = value.join(' ')
242
250
 
243
- elsif key == "key"
244
- props["key"] = value.to_key
251
+ elsif key == :key
252
+ props[:key] = value.to_key
253
+
254
+ elsif key == :init
255
+ if %w[select textarea].include? type
256
+ key = :defaultValue
257
+ elsif type == :input
258
+ key = if %w[radio checkbox].include? properties[:type]
259
+ :defaultChecked
260
+ else
261
+ :defaultValue
262
+ end
263
+ end
264
+ props[key] = value
245
265
 
246
266
  elsif key == 'ref'
267
+ next unless value
247
268
  unless value.respond_to?(:call)
248
269
  raise "The ref and dom params must be given a Proc.\n"\
249
270
  "If you want to capture the ref in an instance variable use the `set` method.\n"\
250
271
  "For example `ref: set(:TheRef)` will capture assign the ref to `@TheRef`\n"
251
272
  end
252
- props[key] = %x{
253
- function(dom_node){
254
- if (dom_node !== null && dom_node.__opalInstance !== undefined && dom_node.__opalInstance !== null) {
255
- #{ Hyperstack::Internal::State::Mapper.ignore_mutations { value.call(`dom_node.__opalInstance`) } };
256
- } else if(dom_node !== null && ReactDOM.findDOMNode !== undefined && dom_node.nodeType === undefined) {
257
- #{ Hyperstack::Internal::State::Mapper.ignore_mutations { value.call(`ReactDOM.findDOMNode(dom_node)`) } };
258
- } else if(dom_node !== null){
259
- #{ Hyperstack::Internal::State::Mapper.ignore_mutations { value.call(`dom_node`) } };
260
- }
261
- }
273
+ unless `value.__hyperstack_component_ref_is_already_wrapped`
274
+ fn = value
275
+ value = %x{
276
+ function(dom_node){
277
+ if (dom_node !== null && dom_node.__opalInstance !== undefined && dom_node.__opalInstance !== null) {
278
+ #{ Hyperstack::Internal::State::Mapper.ignore_mutations { fn.call(`dom_node.__opalInstance`) } };
279
+ } else if(dom_node !== null && ReactDOM.findDOMNode !== undefined && dom_node.nodeType === undefined) {
280
+ #{ Hyperstack::Internal::State::Mapper.ignore_mutations { fn.call(`ReactDOM.findDOMNode(dom_node)`) } };
281
+ } else if(dom_node !== null){
282
+ #{ Hyperstack::Internal::State::Mapper.ignore_mutations { fn.call(`dom_node`) } };
262
283
  }
263
-
284
+ }
285
+ }
286
+ `value.__hyperstack_component_ref_is_already_wrapped = true`
287
+ end
288
+ props[key] = value
264
289
  elsif key == 'jq_ref'
265
290
  unless value.respond_to?(:call)
266
291
  raise "The ref and dom params must be given a Proc.\n"\
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.4
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: 2019-02-16 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: hyper-state
@@ -20,28 +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.4
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.4
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.4
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
44
+ version: 1.0.alpha1.4
45
45
  - !ruby/object:Gem::Dependency
46
46
  name: libv8
47
47
  requirement: !ruby/object:Gem::Requirement
@@ -164,14 +164,14 @@ dependencies:
164
164
  requirements:
165
165
  - - '='
166
166
  - !ruby/object:Gem::Version
167
- version: 1.0.alpha1.3
167
+ version: 1.0.alpha1.4
168
168
  type: :development
169
169
  prerelease: false
170
170
  version_requirements: !ruby/object:Gem::Requirement
171
171
  requirements:
172
172
  - - '='
173
173
  - !ruby/object:Gem::Version
174
- version: 1.0.alpha1.3
174
+ version: 1.0.alpha1.4
175
175
  - !ruby/object:Gem::Dependency
176
176
  name: jquery-rails
177
177
  requirement: !ruby/object:Gem::Requirement
@@ -386,16 +386,16 @@ dependencies:
386
386
  name: sqlite3
387
387
  requirement: !ruby/object:Gem::Requirement
388
388
  requirements:
389
- - - ">="
389
+ - - "~>"
390
390
  - !ruby/object:Gem::Version
391
- version: '0'
391
+ version: 1.3.6
392
392
  type: :development
393
393
  prerelease: false
394
394
  version_requirements: !ruby/object:Gem::Requirement
395
395
  requirements:
396
- - - ">="
396
+ - - "~>"
397
397
  - !ruby/object:Gem::Version
398
- version: '0'
398
+ version: 1.3.6
399
399
  - !ruby/object:Gem::Dependency
400
400
  name: timecop
401
401
  requirement: !ruby/object:Gem::Requirement
@@ -422,7 +422,6 @@ files:
422
422
  - ".travis.yml"
423
423
  - CHANGELOG.md
424
424
  - Gemfile
425
- - Gemfile.lock
426
425
  - Rakefile
427
426
  - how-component-name-lookup-works.md
428
427
  - hyper-component.gemspec
@@ -1,364 +0,0 @@
1
- PATH
2
- remote: ../hyper-spec
3
- specs:
4
- hyper-spec (1.0.alpha1.3)
5
- capybara
6
- chromedriver-helper (= 1.2.0)
7
- libv8
8
- method_source
9
- mini_racer (~> 0.2.4)
10
- opal (>= 0.11.0, < 0.12.0)
11
- parser (>= 2.3.3.1)
12
- pry
13
- rspec-rails
14
- selenium-webdriver
15
- timecop (~> 0.8.1)
16
- uglifier
17
- unparser (>= 0.2, < 0.4)
18
- webdrivers
19
-
20
- PATH
21
- remote: ../hyper-state
22
- specs:
23
- hyper-state (1.0.alpha1.3)
24
- hyperstack-config (= 1.0.alpha1.3)
25
- opal (>= 0.11.0, < 0.12.0)
26
-
27
- PATH
28
- remote: ../hyper-store
29
- specs:
30
- hyper-store (1.0.alpha1.3)
31
- hyper-state (= 1.0.alpha1.3)
32
- hyperstack-config (= 1.0.alpha1.3)
33
- opal (>= 0.11.0, < 0.12.0)
34
-
35
- PATH
36
- remote: ../hyperstack-config
37
- specs:
38
- hyperstack-config (1.0.alpha1.3)
39
- listen (~> 3.0)
40
- mini_racer (~> 0.2.4)
41
- opal (>= 0.11.0, < 0.12.0)
42
- opal-browser (~> 0.2.0)
43
- uglifier
44
- websocket
45
-
46
- PATH
47
- remote: .
48
- specs:
49
- hyper-component (1.0.alpha1.3)
50
- hyper-state (= 1.0.alpha1.3)
51
- hyperstack-config (= 1.0.alpha1.3)
52
- libv8 (~> 6.7.0)
53
- mini_racer (~> 0.2.4)
54
- opal (>= 0.11.0, < 0.12.0)
55
- opal-activesupport (~> 0.3.1)
56
- react-rails (>= 2.4.0, < 2.5.0)
57
-
58
- GEM
59
- remote: https://rubygems.org/
60
- specs:
61
- abstract_type (0.0.7)
62
- actioncable (5.2.1)
63
- actionpack (= 5.2.1)
64
- nio4r (~> 2.0)
65
- websocket-driver (>= 0.6.1)
66
- actionmailer (5.2.1)
67
- actionpack (= 5.2.1)
68
- actionview (= 5.2.1)
69
- activejob (= 5.2.1)
70
- mail (~> 2.5, >= 2.5.4)
71
- rails-dom-testing (~> 2.0)
72
- actionpack (5.2.1)
73
- actionview (= 5.2.1)
74
- activesupport (= 5.2.1)
75
- rack (~> 2.0)
76
- rack-test (>= 0.6.3)
77
- rails-dom-testing (~> 2.0)
78
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
79
- actionview (5.2.1)
80
- activesupport (= 5.2.1)
81
- builder (~> 3.1)
82
- erubi (~> 1.4)
83
- rails-dom-testing (~> 2.0)
84
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
85
- activejob (5.2.1)
86
- activesupport (= 5.2.1)
87
- globalid (>= 0.3.6)
88
- activemodel (5.2.1)
89
- activesupport (= 5.2.1)
90
- activerecord (5.2.1)
91
- activemodel (= 5.2.1)
92
- activesupport (= 5.2.1)
93
- arel (>= 9.0)
94
- activestorage (5.2.1)
95
- actionpack (= 5.2.1)
96
- activerecord (= 5.2.1)
97
- marcel (~> 0.3.1)
98
- activesupport (5.2.1)
99
- concurrent-ruby (~> 1.0, >= 1.0.2)
100
- i18n (>= 0.7, < 2)
101
- minitest (~> 5.1)
102
- tzinfo (~> 1.1)
103
- adamantium (0.2.0)
104
- ice_nine (~> 0.11.0)
105
- memoizable (~> 0.4.0)
106
- addressable (2.5.2)
107
- public_suffix (>= 2.0.2, < 4.0)
108
- archive-zip (0.11.0)
109
- io-like (~> 0.3.0)
110
- arel (9.0.0)
111
- ast (2.4.0)
112
- babel-source (5.8.35)
113
- babel-transpiler (0.7.0)
114
- babel-source (>= 4.0, < 6)
115
- execjs (~> 2.0)
116
- builder (3.2.3)
117
- capybara (3.12.0)
118
- addressable
119
- mini_mime (>= 0.1.3)
120
- nokogiri (~> 1.8)
121
- rack (>= 1.6.0)
122
- rack-test (>= 0.6.3)
123
- regexp_parser (~> 1.2)
124
- xpath (~> 3.2)
125
- childprocess (0.9.0)
126
- ffi (~> 1.0, >= 1.0.11)
127
- chromedriver-helper (1.2.0)
128
- archive-zip (~> 0.10)
129
- nokogiri (~> 1.8)
130
- coderay (1.1.2)
131
- concord (0.1.5)
132
- adamantium (~> 0.2.0)
133
- equalizer (~> 0.0.9)
134
- concurrent-ruby (1.0.5)
135
- connection_pool (2.2.2)
136
- crass (1.0.4)
137
- diff-lcs (1.3)
138
- equalizer (0.0.11)
139
- erubi (1.7.1)
140
- execjs (2.7.0)
141
- ffi (1.9.25)
142
- globalid (0.4.1)
143
- activesupport (>= 4.2.0)
144
- hike (1.2.3)
145
- i18n (1.1.1)
146
- concurrent-ruby (~> 1.0)
147
- ice_nine (0.11.2)
148
- interception (0.5)
149
- io-like (0.3.0)
150
- jquery-rails (4.3.3)
151
- rails-dom-testing (>= 1, < 3)
152
- railties (>= 4.2.0)
153
- thor (>= 0.14, < 2.0)
154
- libv8 (6.7.288.46.1)
155
- listen (3.1.5)
156
- rb-fsevent (~> 0.9, >= 0.9.4)
157
- rb-inotify (~> 0.9, >= 0.9.7)
158
- ruby_dep (~> 1.2)
159
- loofah (2.2.2)
160
- crass (~> 1.0.2)
161
- nokogiri (>= 1.5.9)
162
- mail (2.7.1)
163
- mini_mime (>= 0.1.1)
164
- marcel (0.3.3)
165
- mimemagic (~> 0.3.2)
166
- memoizable (0.4.2)
167
- thread_safe (~> 0.3, >= 0.3.1)
168
- method_source (0.9.0)
169
- mime-types (3.2.2)
170
- mime-types-data (~> 3.2015)
171
- mime-types-data (3.2018.0812)
172
- mimemagic (0.3.2)
173
- mini_mime (1.0.1)
174
- mini_portile2 (2.3.0)
175
- mini_racer (0.2.4)
176
- libv8 (>= 6.3)
177
- minitest (5.11.3)
178
- net_http_ssl_fix (0.0.10)
179
- nio4r (2.3.1)
180
- nokogiri (1.8.5)
181
- mini_portile2 (~> 2.3.0)
182
- opal (0.11.3)
183
- ast (>= 2.3.0)
184
- hike (~> 1.2)
185
- parser (= 2.3.3.1)
186
- sourcemap (~> 0.1.0)
187
- opal-activesupport (0.3.1)
188
- opal (>= 0.5.0, < 1.0.0)
189
- opal-browser (0.2.0)
190
- opal
191
- paggio
192
- opal-jquery (0.4.3)
193
- opal (>= 0.10.0, < 0.12.0)
194
- opal-rails (0.9.5)
195
- jquery-rails
196
- opal (>= 0.11.0, < 0.12)
197
- opal-activesupport (>= 0.0.5)
198
- opal-jquery (~> 0.4.0)
199
- opal-sprockets (~> 0.4.2)
200
- rails (>= 4.1, < 6.0)
201
- sprockets-rails (>= 2.3.3, < 4.0)
202
- opal-rspec (0.6.1)
203
- opal (>= 0.10.0, < 0.12)
204
- opal-sprockets (0.4.2.0.11.0.3.1)
205
- opal (~> 0.11.0)
206
- sprockets (~> 3.1)
207
- tilt (>= 1.4)
208
- paggio (0.2.6)
209
- parallel (1.12.1)
210
- parser (2.3.3.1)
211
- ast (~> 2.2)
212
- powerpack (0.1.2)
213
- procto (0.0.3)
214
- pry (0.11.3)
215
- coderay (~> 1.1.0)
216
- method_source (~> 0.9.0)
217
- pry-rescue (1.4.5)
218
- interception (>= 0.5)
219
- pry
220
- public_suffix (3.0.3)
221
- puma (3.12.0)
222
- rack (2.0.5)
223
- rack-test (1.1.0)
224
- rack (>= 1.0, < 3)
225
- rails (5.2.1)
226
- actioncable (= 5.2.1)
227
- actionmailer (= 5.2.1)
228
- actionpack (= 5.2.1)
229
- actionview (= 5.2.1)
230
- activejob (= 5.2.1)
231
- activemodel (= 5.2.1)
232
- activerecord (= 5.2.1)
233
- activestorage (= 5.2.1)
234
- activesupport (= 5.2.1)
235
- bundler (>= 1.3.0)
236
- railties (= 5.2.1)
237
- sprockets-rails (>= 2.0.0)
238
- rails-controller-testing (1.0.2)
239
- actionpack (~> 5.x, >= 5.0.1)
240
- actionview (~> 5.x, >= 5.0.1)
241
- activesupport (~> 5.x)
242
- rails-dom-testing (2.0.3)
243
- activesupport (>= 4.2.0)
244
- nokogiri (>= 1.6)
245
- rails-html-sanitizer (1.0.4)
246
- loofah (~> 2.2, >= 2.2.2)
247
- railties (5.2.1)
248
- actionpack (= 5.2.1)
249
- activesupport (= 5.2.1)
250
- method_source
251
- rake (>= 0.8.7)
252
- thor (>= 0.19.0, < 2.0)
253
- rainbow (2.2.2)
254
- rake
255
- rake (12.3.1)
256
- rb-fsevent (0.10.3)
257
- rb-inotify (0.9.10)
258
- ffi (>= 0.5.0, < 2)
259
- react-rails (2.4.7)
260
- babel-transpiler (>= 0.7.0)
261
- connection_pool
262
- execjs
263
- railties (>= 3.2)
264
- tilt
265
- regexp_parser (1.3.0)
266
- rspec-core (3.8.0)
267
- rspec-support (~> 3.8.0)
268
- rspec-expectations (3.8.2)
269
- diff-lcs (>= 1.2.0, < 2.0)
270
- rspec-support (~> 3.8.0)
271
- rspec-mocks (3.8.0)
272
- diff-lcs (>= 1.2.0, < 2.0)
273
- rspec-support (~> 3.8.0)
274
- rspec-rails (3.8.1)
275
- actionpack (>= 3.0)
276
- activesupport (>= 3.0)
277
- railties (>= 3.0)
278
- rspec-core (~> 3.8.0)
279
- rspec-expectations (~> 3.8.0)
280
- rspec-mocks (~> 3.8.0)
281
- rspec-support (~> 3.8.0)
282
- rspec-support (3.8.0)
283
- rubocop (0.51.0)
284
- parallel (~> 1.10)
285
- parser (>= 2.3.3.1, < 3.0)
286
- powerpack (~> 0.1)
287
- rainbow (>= 2.2.2, < 3.0)
288
- ruby-progressbar (~> 1.7)
289
- unicode-display_width (~> 1.0, >= 1.0.1)
290
- ruby-progressbar (1.10.0)
291
- ruby_dep (1.5.0)
292
- rubyzip (1.2.2)
293
- selenium-webdriver (3.141.0)
294
- childprocess (~> 0.5)
295
- rubyzip (~> 1.2, >= 1.2.2)
296
- sourcemap (0.1.1)
297
- sprockets (3.7.2)
298
- concurrent-ruby (~> 1.0)
299
- rack (> 1, < 3)
300
- sprockets-rails (3.2.1)
301
- actionpack (>= 4.0)
302
- activesupport (>= 4.0)
303
- sprockets (>= 3.0.0)
304
- sqlite3 (1.3.13)
305
- thor (0.20.0)
306
- thread_safe (0.3.6)
307
- tilt (2.0.8)
308
- timecop (0.8.1)
309
- tzinfo (1.2.5)
310
- thread_safe (~> 0.1)
311
- uglifier (4.1.20)
312
- execjs (>= 0.3.0, < 3)
313
- unicode-display_width (1.4.0)
314
- unparser (0.2.8)
315
- abstract_type (~> 0.0.7)
316
- adamantium (~> 0.2.0)
317
- concord (~> 0.1.5)
318
- diff-lcs (~> 1.3)
319
- equalizer (~> 0.0.9)
320
- parser (>= 2.3.1.2, < 2.6)
321
- procto (~> 0.0.2)
322
- webdrivers (3.6.0)
323
- net_http_ssl_fix
324
- nokogiri (~> 1.6)
325
- rubyzip (~> 1.0)
326
- selenium-webdriver (~> 3.0)
327
- websocket (1.2.8)
328
- websocket-driver (0.7.0)
329
- websocket-extensions (>= 0.1.0)
330
- websocket-extensions (0.1.3)
331
- xpath (3.2.0)
332
- nokogiri (~> 1.8)
333
-
334
- PLATFORMS
335
- ruby
336
-
337
- DEPENDENCIES
338
- bundler (>= 1.17.3, < 2.1)
339
- chromedriver-helper
340
- hyper-component!
341
- hyper-spec!
342
- hyper-state!
343
- hyper-store!
344
- hyperstack-config!
345
- jquery-rails
346
- listen
347
- mime-types
348
- nokogiri
349
- opal-jquery
350
- opal-rails (~> 0.9.4)
351
- opal-rspec
352
- pry
353
- pry-rescue
354
- puma
355
- rails (>= 4.0.0)
356
- rails-controller-testing
357
- rake
358
- rspec-rails
359
- rubocop (~> 0.51.0)
360
- sqlite3
361
- timecop (~> 0.8.1)
362
-
363
- BUNDLED WITH
364
- 2.0.1