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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  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