clearwater 0.3.1 → 1.0.0.beta1

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
  SHA1:
3
- metadata.gz: afbb0bbf131048da2de56cb1d537494ae700f50d
4
- data.tar.gz: 7f8af1b4c90ec41c1b364694236e413eab834033
3
+ metadata.gz: 7209c39df1f317e2f636b5b18d19c800c051313e
4
+ data.tar.gz: de84c3390eb8008f4e4bad72382816c78417c15e
5
5
  SHA512:
6
- metadata.gz: 1b38f6d804c0ce1f75f50f26f54fdb0d86145d2aadc3bad8fdd0dc1899bb54ef400490c56d13ee73754eb4007a011ec72599f5ac75671a3cdd7b7a9918f49d92
7
- data.tar.gz: c395b5559c0fe7cf55fc21da688ecbb5e71c4553a4af70ce46b3a7677953a69ff13ffd6b2e0b5e655890aa41969d4951c84d4ca3471338b20c16a6d914ab6f8b
6
+ metadata.gz: 241b9c7654b51e7600ad9d2d9e77547f923035373f128ed9d4f221d21395f9a60cb38a51a398af34c5247c4bc55a1742df094b93e1a9876c7de480bc6c6c503d
7
+ data.tar.gz: 93657a5db3cf006c60b146ea50fea5ce8f141b6513f424c8d7cc5601d9aca430996f47005871a4b102b241a06a53f4fac75520824c79141b3d5d4d8352abfaf7
@@ -1,3 +1,3 @@
1
1
  module Clearwater
2
- VERSION = "0.3.1"
2
+ VERSION = "1.0.0.beta1"
3
3
  end
data/lib/clearwater.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require "opal"
2
- require "opal/browser"
2
+ require "bowser"
3
3
 
4
4
  module Clearwater
5
5
  require_relative "clearwater/version"
@@ -1,7 +1,4 @@
1
- require 'browser'
2
- require 'browser/delay'
3
- require 'browser/event'
4
- require 'browser/animation_frame'
1
+ require 'bowser'
5
2
  require 'clearwater/router'
6
3
  require 'clearwater/application_registry'
7
4
  require 'native'
@@ -20,8 +17,8 @@ module Clearwater
20
17
  @router = options.fetch(:router) { Router.new }
21
18
  @component = options.fetch(:component) { nil }
22
19
  @element = options.fetch(:element) { nil }
23
- @document = options.fetch(:document) { $document }
24
- @window = options.fetch(:window) { $window }
20
+ @document = options.fetch(:document) { Bowser.document }
21
+ @window = options.fetch(:window) { Bowser.window }
25
22
  @on_render = []
26
23
 
27
24
  router.application = self
@@ -64,7 +61,7 @@ module Clearwater
64
61
  return
65
62
  end
66
63
 
67
- animation_frame { perform_render }
64
+ @window.animation_frame { perform_render }
68
65
 
69
66
  nil
70
67
  end
@@ -0,0 +1,67 @@
1
+ require 'bowser/element'
2
+ require 'clearwater/virtual_dom'
3
+
4
+ module Clearwater
5
+ module BlackBoxNode
6
+ def node
7
+ VirtualDOM.node :div
8
+ end
9
+
10
+ def mount node
11
+ end
12
+
13
+ def update previous, node
14
+ end
15
+
16
+ def unmount node
17
+ end
18
+
19
+ def render
20
+ Renderable.new(self)
21
+ end
22
+
23
+ class Renderable
24
+ def initialize delegate
25
+ @delegate = delegate
26
+ end
27
+
28
+ def wrap node
29
+ Bowser::Element.new(node)
30
+ end
31
+
32
+ def create_element
33
+ wrap(VirtualDOM.create_element(@delegate.node))
34
+ end
35
+
36
+ %x{
37
+ // Use the virtual-dom Widget type
38
+ Opal.defn(self, 'type', 'Widget');
39
+
40
+ // virtual-dom Widget init hook. Must return a real DOM node.
41
+ // We call the Ruby-land #mount method so we can define hooks for this
42
+ // in Ruby instead of requiring users to drop down to JS.
43
+ Opal.defn(self, 'init', function() {
44
+ var self = this;
45
+ var node = #{create_element};
46
+ #{@delegate.mount(`node`)};
47
+ return node.native;
48
+ });
49
+
50
+ // virtual-dom update hook
51
+ // previous: the instance of this object used in the previous render
52
+ // node: a Bowser-wrapped version of the DOM node
53
+ Opal.defn(self, 'update', function(previous, node) {
54
+ var self = this;
55
+ #{@delegate.update(`previous.delegate`, wrap(`node`))};
56
+ });
57
+
58
+ // virtual-dom destroy hook
59
+ // node: Bowser-wrapped version of the DOM node
60
+ Opal.defn(self, 'destroy', function(node) {
61
+ var self = this;
62
+ #{@delegate.unmount(wrap(`node`))};
63
+ });
64
+ }
65
+ end
66
+ end
67
+ end
@@ -1,13 +1,9 @@
1
1
  require 'clearwater/virtual_dom'
2
- require 'browser'
3
2
 
4
3
  module Clearwater
5
4
  module Component
6
5
  attr_accessor :router, :outlet
7
6
 
8
- def render
9
- end
10
-
11
7
  HTML_TAGS = %w(
12
8
  a
13
9
  abbr
@@ -122,27 +118,8 @@ module Clearwater
122
118
  wbr
123
119
  )
124
120
 
125
- HTML_TAGS.each do |tag_name|
126
- define_method(tag_name) do |attributes, content|
127
- tag(tag_name, attributes, content)
128
- end
129
- end
130
-
131
- def tag tag_name, attributes=nil, content=nil
132
- if !(`attributes.$$is_hash || attributes === #{nil}`)
133
- content = attributes
134
- attributes = nil
135
- end
136
-
137
- VirtualDOM.node(
138
- tag_name,
139
- Component.sanitize_attributes(attributes),
140
- Component.sanitize_content(content)
141
- )
142
- end
143
-
144
121
  def params
145
- router.params_for_path(router.current_path)
122
+ router.params
146
123
  end
147
124
 
148
125
  def self.sanitize_attributes attributes
@@ -162,7 +139,7 @@ module Clearwater
162
139
  attributes.each do |key, handler|
163
140
  if key[0, 2] == 'on'
164
141
  attributes[key] = proc do |event|
165
- handler.call(Browser::Event.new(event))
142
+ handler.call(Bowser::Event.new(event))
166
143
  end
167
144
  end
168
145
  end
@@ -192,6 +169,31 @@ module Clearwater
192
169
  }
193
170
  end
194
171
 
172
+ # Default render method for stubbing
173
+ def render
174
+ end
175
+
176
+ module_function
177
+
178
+ HTML_TAGS.each do |tag_name|
179
+ define_method(tag_name) do |attributes, content|
180
+ tag(tag_name, attributes, content)
181
+ end
182
+ end
183
+
184
+ def tag tag_name, attributes=nil, content=nil
185
+ if !(`attributes.$$is_hash || attributes === #{nil}`)
186
+ content = attributes
187
+ attributes = nil
188
+ end
189
+
190
+ VirtualDOM.node(
191
+ tag_name,
192
+ Component.sanitize_attributes(attributes),
193
+ Component.sanitize_content(content)
194
+ )
195
+ end
196
+
195
197
  def call &block
196
198
  Clearwater::Application::AppRegistry.render_all(&block)
197
199
  end
@@ -0,0 +1,30 @@
1
+ module Clearwater
2
+ class DOMReference
3
+ def mount node, previous
4
+ @node = node
5
+ end
6
+
7
+ def unmount node, previous
8
+ end
9
+
10
+ def method_missing *args, &block
11
+ @node.public_send *args, &block
12
+ end
13
+
14
+ def wrap node
15
+ Bowser::Element.new(node)
16
+ end
17
+
18
+ %x{
19
+ Opal.defn(self, 'hook', function(node, name, previous) {
20
+ var self = this;
21
+ #{mount(wrap(`node`), `previous`)};
22
+ });
23
+
24
+ Opal.defn(self, 'unhook', function(node, name, previous) {
25
+ var self = this;
26
+ #{unmount(wrap(`node`), `previous`)};
27
+ });
28
+ }
29
+ end
30
+ end
@@ -1,22 +1,5 @@
1
1
  require 'clearwater/component'
2
- require 'browser'
3
- require 'browser/history'
4
-
5
- # TODO: Remove this once opal-browser supports coordinates natively
6
- # for touch events.
7
- module Browser
8
- class Event
9
- class Touch
10
- def x
11
- `#@native.pageX`
12
- end
13
-
14
- def y
15
- `#@native.pageY`
16
- end
17
- end
18
- end
19
- end
2
+ require 'bowser'
20
3
 
21
4
  class Link
22
5
  include Clearwater::Component
@@ -56,6 +39,8 @@ class Link
56
39
  end
57
40
 
58
41
  def handle_touch event
42
+ document = Bowser.document
43
+
59
44
  # All links will treat this as touch because this is a touch device
60
45
  @@touch = true
61
46
  moved = false
@@ -78,24 +63,32 @@ class Link
78
63
  navigate event
79
64
  end
80
65
 
81
- $document.off 'touchmove', &touch_move_handler
82
- $document.off 'touchend', &touch_end_handler
66
+ document.off 'touchmove', &touch_move_handler
67
+ document.off 'touchend', &touch_end_handler
83
68
  end
84
69
 
85
- $document.on 'touchmove', &touch_move_handler
86
- $document.on 'touchend', &touch_end_handler
70
+ document.on 'touchmove', &touch_move_handler
71
+ document.on 'touchend', &touch_end_handler
87
72
  end
88
73
 
89
74
  def navigate event
90
75
  # Don't handle middle-button clicks and clicks with modifier keys. Let them
91
76
  # pass through to the browser's default handling or the user's modified handling.
92
- unless event.meta? || event.shift? || event.ctrl? || event.alt? || (event.respond_to?(:button) && event.button == 1)
93
- event.prevent
94
- if href != $window.location.path
95
- $window.history.push href
96
- call
97
- $window.scroll.to x: 0, y: 0
98
- end
77
+ modified = (
78
+ event.meta? ||
79
+ event.shift? ||
80
+ event.ctrl? ||
81
+ event.alt? ||
82
+ event.button == 1
83
+ )
84
+
85
+ return if modified
86
+
87
+ event.prevent
88
+ window = Bowser.window
89
+ if href != window.location.path
90
+ Clearwater::Router.navigate_to href
91
+ window.scroll 0, 0
99
92
  end
100
93
  end
101
94
 
@@ -112,7 +105,7 @@ class Link
112
105
  end
113
106
 
114
107
  def check_active href
115
- if $window.location.path == href
108
+ if Bowser.window.location.path == href
116
109
  class_name = (
117
110
  @attributes.delete(:class_name) ||
118
111
  @attributes.delete(:class) ||
@@ -6,9 +6,9 @@ module Clearwater
6
6
  attr_accessor :application
7
7
 
8
8
  def initialize options={}, &block
9
- @window = options.fetch(:window) { Native(`window`) }
10
- @location = options.fetch(:location) { window[:location] }
11
- @history = options.fetch(:history) { window[:history] }
9
+ @window = options.fetch(:window) { Bowser.window }
10
+ @location = options.fetch(:location) { window.location }
11
+ @history = options.fetch(:history) { window.history }
12
12
  @routes = RouteCollection.new(self)
13
13
  @application = options[:application]
14
14
 
@@ -32,17 +32,17 @@ module Clearwater
32
32
  routes_for_path(path).map(&:target)
33
33
  end
34
34
 
35
- def params_for_path path
35
+ def params path=current_path
36
36
  path_parts = path.split("/").reject(&:empty?)
37
37
  canonical_parts = canonical_path_for_path(path).split("/").reject(&:empty?)
38
38
 
39
39
  canonical_parts.each_with_index.reduce({}) { |params, (part, index)|
40
40
  if part.start_with? ":"
41
41
  param = part[1..-1]
42
- params.merge! param => path_parts[index]
43
- else
44
- params
42
+ params[param] = path_parts[index]
45
43
  end
44
+
45
+ params
46
46
  }
47
47
  end
48
48
 
@@ -50,21 +50,38 @@ module Clearwater
50
50
  end
51
51
 
52
52
  def current_path
53
- location[:pathname]
53
+ location.path
54
+ end
55
+
56
+ def self.current_path
57
+ location.path
58
+ end
59
+
60
+ def current_url
61
+ location.href
62
+ end
63
+
64
+ def self.current_url
65
+ location.href
66
+ end
67
+
68
+ def self.location
69
+ Bowser.window.location
54
70
  end
55
71
 
56
72
  def navigate_to path
57
- push_state path
73
+ history.push path
58
74
  set_outlets
59
75
  render_application
60
76
  end
61
77
 
62
- def navigate_to_remote path
63
- location[:href] = path
78
+ def self.navigate_to path
79
+ Bowser.window.history.push path
80
+ render_all_apps
64
81
  end
65
82
 
66
- def current_url
67
- location[:href]
83
+ def navigate_to_remote path
84
+ location.href = path
68
85
  end
69
86
 
70
87
  def back
@@ -85,14 +102,14 @@ module Clearwater
85
102
 
86
103
  private
87
104
 
88
- def push_state path
89
- history.pushState({}, nil, path)
90
- end
91
-
92
105
  def render_application
93
106
  if application && application.component
94
107
  application.component.call
95
108
  end
96
109
  end
110
+
111
+ def self.render_all_apps
112
+ Clearwater::Application.render
113
+ end
97
114
  end
98
115
  end
@@ -1,4 +1,3 @@
1
- require 'browser'
2
1
  require 'clearwater/virtual_dom/js/virtual_dom.js'
3
2
 
4
3
  module VirtualDOM
@@ -40,7 +39,7 @@ module VirtualDOM
40
39
  end
41
40
 
42
41
  class Document
43
- def initialize(root=$document.create_element('div'))
42
+ def initialize(root=Bowser.document.create_element('div'))
44
43
  @root = root
45
44
  end
46
45
 
data/opal/clearwater.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'browser'
2
1
  require 'clearwater/component'
3
2
  require 'clearwater/svg_component'
4
3
  require 'clearwater/cached_render'
@@ -1,5 +1,6 @@
1
1
  require 'clearwater'
2
2
  require 'clearwater/svg_component'
3
+ require 'bowser'
3
4
 
4
5
  module Clearwater
5
6
  RSpec.describe Application do
@@ -33,7 +34,7 @@ module Clearwater
33
34
  end
34
35
  end.new
35
36
  }
36
- let(:element) { $document.create_element('div') }
37
+ let(:element) { Bowser.document.create_element('div') }
37
38
 
38
39
  it 'renders to the specified element' do
39
40
  app.perform_render
@@ -0,0 +1,64 @@
1
+ require 'clearwater/black_box_node'
2
+
3
+ module Clearwater
4
+ describe BlackBoxNode do
5
+ let(:object) {
6
+ Class.new do
7
+ include Clearwater::BlackBoxNode
8
+
9
+ attr_reader :last_update
10
+
11
+ def node
12
+ VirtualDOM.node :span, { id: 'foo' }, ['hi']
13
+ end
14
+
15
+ def mount node
16
+ @mounted = true
17
+ end
18
+
19
+ def update
20
+ @last_update = Time.now
21
+ end
22
+
23
+ def unmount
24
+ @mounted = false
25
+ end
26
+
27
+ def mounted?
28
+ !!@mounted
29
+ end
30
+ end.new
31
+ }
32
+ let(:renderable) { BlackBoxNode::Renderable.new(object) }
33
+
34
+ it 'has the special type of "Widget"' do
35
+ r = renderable
36
+ expect(`r.type`).to eq 'Widget'
37
+ end
38
+
39
+ it 'uses the delegate node to render into the DOM' do
40
+ r = renderable
41
+ expect(`#{renderable.create_element}.native.outerHTML`).to eq '<span id="foo">hi</span>'
42
+ end
43
+
44
+ it 'calls mount when inserted into the DOM' do
45
+ r = renderable
46
+ `r.init()`
47
+ expect(object).to be_mounted
48
+ end
49
+
50
+ it 'calls unmount when removed from the DOM' do
51
+ r = renderable
52
+ `r.init()`
53
+ `r.destroy()`
54
+ expect(object).not_to be_mounted
55
+ end
56
+
57
+ it 'calls update when updated in the DOM' do
58
+ r = renderable
59
+ `r.update({})`
60
+
61
+ expect(object.last_update).not_to be_nil
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,15 @@
1
+ require 'clearwater/dom_reference'
2
+
3
+ module Clearwater
4
+ describe DOMReference do
5
+ let(:ref) { DOMReference.new }
6
+
7
+ it 'delegates to the DOM node passed in on mount' do
8
+ r = ref
9
+
10
+ `r.hook({ value: 'hi' })`
11
+
12
+ expect(r.value).to eq 'hi'
13
+ end
14
+ end
15
+ end
@@ -1,4 +1,5 @@
1
1
  require 'clearwater/router'
2
+ require 'ostruct'
2
3
 
3
4
  module Clearwater
4
5
  RSpec.describe Router do
@@ -22,7 +23,7 @@ module Clearwater
22
23
  end
23
24
 
24
25
  it 'gets the params for a given path' do
25
- expect(router.params_for_path('/articles/foo')).to eq article_id: 'foo'
26
+ expect(router.params('/articles/foo')).to eq article_id: 'foo'
26
27
  end
27
28
 
28
29
  it 'gets the components for a given path' do
@@ -34,18 +35,18 @@ module Clearwater
34
35
  end
35
36
 
36
37
  it 'gets the current path' do
37
- location = { pathname: '/foo' }
38
+ location = OpenStruct.new(path: '/foo')
38
39
  router = Router.new(location: location)
39
40
 
40
41
  expect(router.current_path).to eq '/foo'
41
42
 
42
- location[:pathname] = '/bar'
43
+ location.path = '/bar'
43
44
 
44
45
  expect(router.current_path).to eq '/bar'
45
46
  end
46
47
 
47
48
  it 'gets the params from the path' do
48
- expect(router.params_for_path('/articles/123')).to eq({ article_id: '123' })
49
+ expect(router.params('/articles/123')).to eq({ article_id: '123' })
49
50
  end
50
51
  end
51
52
  end
@@ -1,15 +1,5 @@
1
1
  require 'clearwater/component'
2
2
 
3
- # When running specs from the CLI, it doesn't define this class
4
- unless defined? Browser::Event
5
- module Browser
6
- class Event
7
- def initialize event
8
- end
9
- end
10
- end
11
- end
12
-
13
3
  module Clearwater
14
4
  RSpec.describe Component do
15
5
  let(:component_class) {
@@ -32,13 +22,13 @@ module Clearwater
32
22
  it 'sanitizes element attributes' do
33
23
  attributes = Component.sanitize_attributes({
34
24
  class: 'foo',
35
- onclick: proc { |event| expect(event).to be_a Browser::Event },
25
+ onclick: proc { |event| expect(event).to be_a Bowser::Event },
36
26
  })
37
27
 
38
28
  # Renames :class to :class_name
39
29
  expect(attributes[:class_name]).to eq 'foo'
40
30
 
41
- # Wraps yielded events in a Browser::Event
31
+ # Wraps yielded events in a Bowser::Event
42
32
  attributes[:onclick].call(`document.createEvent('MouseEvent')`)
43
33
  end
44
34
 
@@ -57,7 +47,7 @@ module Clearwater
57
47
  it 'retrieves params from the router' do
58
48
  router = double('Router')
59
49
  params = { article_id: 123 }
60
- allow(router).to receive(:params_for_path) { params }
50
+ allow(router).to receive(:params) { params }
61
51
  allow(router).to receive(:current_path) { '/articles/123' }
62
52
  component.router = router
63
53
 
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clearwater
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 1.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamie Gaskins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-04 00:00:00.000000000 Z
11
+ date: 2016-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.7'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.7'
27
27
  - !ruby/object:Gem::Dependency
28
- name: opal-browser
28
+ name: bowser
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.1.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 0.1.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '1.3'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.3'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: opal-rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: 0.5.0.beta2
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.5.0.beta2
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ~>
74
74
  - !ruby/object:Gem::Version
75
75
  version: '10.1'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: '10.1'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: pry
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0.9'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0.9'
97
97
  description: Front-end web framework built on Opal
@@ -101,22 +101,26 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
- - lib/clearwater.rb
105
104
  - lib/clearwater/version.rb
106
- - opal/clearwater.rb
105
+ - lib/clearwater.rb
107
106
  - opal/clearwater/application.rb
108
107
  - opal/clearwater/application_registry.rb
108
+ - opal/clearwater/black_box_node.rb
109
109
  - opal/clearwater/cached_render.rb
110
110
  - opal/clearwater/component.rb
111
+ - opal/clearwater/dom_reference.rb
111
112
  - opal/clearwater/link.rb
112
- - opal/clearwater/router.rb
113
113
  - opal/clearwater/router/route.rb
114
114
  - opal/clearwater/router/route_collection.rb
115
+ - opal/clearwater/router.rb
115
116
  - opal/clearwater/svg_component.rb
116
- - opal/clearwater/virtual_dom.rb
117
117
  - opal/clearwater/virtual_dom/js/virtual_dom.js
118
+ - opal/clearwater/virtual_dom.rb
119
+ - opal/clearwater.rb
118
120
  - spec/clearwater/application_spec.rb
121
+ - spec/clearwater/black_box_node_spec.rb
119
122
  - spec/clearwater/cached_render_spec.rb
123
+ - spec/clearwater/dom_reference_spec.rb
120
124
  - spec/clearwater/router_spec.rb
121
125
  - spec/component_spec.rb
122
126
  homepage: https://clearwater-rb.github.io/
@@ -129,22 +133,24 @@ require_paths:
129
133
  - lib
130
134
  required_ruby_version: !ruby/object:Gem::Requirement
131
135
  requirements:
132
- - - ">="
136
+ - - '>='
133
137
  - !ruby/object:Gem::Version
134
138
  version: '0'
135
139
  required_rubygems_version: !ruby/object:Gem::Requirement
136
140
  requirements:
137
- - - ">="
141
+ - - '>'
138
142
  - !ruby/object:Gem::Version
139
- version: '0'
143
+ version: 1.3.1
140
144
  requirements: []
141
145
  rubyforge_project:
142
- rubygems_version: 2.4.8
146
+ rubygems_version: 2.0.14
143
147
  signing_key:
144
148
  specification_version: 4
145
149
  summary: Front-end web framework built on Opal
146
150
  test_files:
147
151
  - spec/clearwater/application_spec.rb
152
+ - spec/clearwater/black_box_node_spec.rb
148
153
  - spec/clearwater/cached_render_spec.rb
154
+ - spec/clearwater/dom_reference_spec.rb
149
155
  - spec/clearwater/router_spec.rb
150
156
  - spec/component_spec.rb