clearwater 1.0.0.rc3 → 1.0.0.rc4

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: 2c9a840ae557659a4f0df595834d8ff94590de64
4
- data.tar.gz: af9368086749443938d6964c7fe85bc134a8185e
3
+ metadata.gz: 98660a461c2da1071bbc7a8f0cfd3db413ff2224
4
+ data.tar.gz: 53727157dec9793aafce8f6ec538099fc11c57d3
5
5
  SHA512:
6
- metadata.gz: 5191ef0e82b48af68a202a0fb987a0325193508f64fee64f9f2eaa237bd55cd8fd0c2b86b6e8e4dbddd8fb3828a647570a86507e9adc32c7592b14e8d5eb76bd
7
- data.tar.gz: abc0c95a41cfb1ccfb162025c408a092375d07188a3fa15204bfa556022f55ebcf4ddcefcb99a2128d95760006e913ae3544cba960b0470d4b0ebec7954ddada
6
+ metadata.gz: 1016b8ce23f014f05d8aa14df5e7721c59b1950896b45e7f60e498ec4722ab24dde35c58fbc24c2ecac9171c216bb9966fc5a0ace8e510f77de571a8dca1f521
7
+ data.tar.gz: 38d578979f4aaed936e475d80c577e77a64dc76ce595a4c645eec7bf55d5688b15af2d5d05d604bc4c7d8986d4efd16073975253d0b7fbdcb68b159e45c743e6
@@ -1,3 +1,3 @@
1
1
  module Clearwater
2
- VERSION = "1.0.0.rc3"
2
+ VERSION = "1.0.0.rc4"
3
3
  end
@@ -1,107 +1,115 @@
1
1
  require 'clearwater/virtual_dom/js/virtual_dom.js'
2
2
 
3
- module VirtualDOM
4
- def self.node(tag_name, attributes=nil, content=nil)
5
- %x{
6
- return virtualDom.h(
7
- tag_name,
8
- #{HashUtils.camelized_native(attributes)},
9
- #{sanitize_content(content)}
10
- );
11
- }
12
- end
13
-
14
- def self.svg(tag_name, attributes=nil, content=nil)
15
- %x{
16
- return virtualDom.svg(
17
- tag_name,
18
- #{HashUtils.camelized_native(attributes)},
19
- #{sanitize_content(content)}
20
- );
21
- }
22
- end
3
+ module Clearwater
4
+ module VirtualDOM
5
+ def self.node(tag_name, attributes=nil, content=nil)
6
+ %x{
7
+ return virtualDom.h(
8
+ tag_name,
9
+ #{HashUtils.camelized_native(attributes)},
10
+ #{sanitize_content(content)}
11
+ );
12
+ }
13
+ end
23
14
 
24
- def self.create_element(node)
25
- `virtualDom.create(node)`
26
- end
15
+ def self.svg(tag_name, attributes=nil, content=nil)
16
+ %x{
17
+ return virtualDom.svg(
18
+ tag_name,
19
+ #{HashUtils.camelized_native(attributes)},
20
+ #{sanitize_content(content)}
21
+ );
22
+ }
23
+ end
27
24
 
28
- def self.diff first, second
29
- `virtualDom.diff(first, second)`
30
- end
25
+ def self.create_element(node)
26
+ `virtualDom.create(node)`
27
+ end
31
28
 
32
- def self.patch node, diff
33
- `virtualDom.patch(node, diff)`
34
- end
29
+ def self.diff first, second
30
+ `virtualDom.diff(first, second)`
31
+ end
35
32
 
36
- def self.sanitize_content content
37
- %x{
38
- if(content === Opal.nil || content === undefined) return null;
39
- if(content.$$is_array)
40
- return #{content.map!{ |c| sanitize_content c }};
41
- return content;
42
- }
43
- end
33
+ def self.patch node, diff
34
+ `virtualDom.patch(node, diff)`
35
+ end
44
36
 
45
- class Document
46
- def initialize(root=Bowser.document.create_element('div'))
47
- @root = root
37
+ def self.sanitize_content content
38
+ %x{
39
+ if(content === Opal.nil || content === undefined) return null;
40
+ if(content.$$is_array)
41
+ return #{content.map!{ |c| sanitize_content c }};
42
+ return content;
43
+ }
48
44
  end
49
45
 
50
- def render node
51
- if rendered?
52
- diff = VirtualDOM.diff @node, node
53
- VirtualDOM.patch @tree, diff
54
- @node = node
55
- else
56
- @node = node
57
- @tree = create_element(node)
58
- @root.inner_dom = @tree
59
- @rendered = true
46
+ class Document
47
+ def initialize(root=Bowser.document.create_element('div'))
48
+ @root = root
60
49
  end
61
- end
62
50
 
63
- def create_element node
64
- `virtualDom.create(node)`
65
- end
51
+ def render node
52
+ if rendered?
53
+ diff = VirtualDOM.diff @node, node
54
+ VirtualDOM.patch @tree, diff
55
+ @node = node
56
+ else
57
+ @node = node
58
+ @tree = create_element(node)
59
+ @root.inner_dom = @tree
60
+ @rendered = true
61
+ end
62
+ end
66
63
 
67
- def rendered?
68
- @rendered
64
+ def create_element node
65
+ `virtualDom.create(node)`
66
+ end
67
+
68
+ def rendered?
69
+ @rendered
70
+ end
69
71
  end
70
- end
71
72
 
72
- module StringUtils
73
- # Speed up camelization like whoa.
74
- %x{ var camelized_cache = {}; }
73
+ module StringUtils
74
+ # Speed up camelization like whoa.
75
+ %x{ var camelized_cache = {}; }
75
76
 
76
- def self.camelize string
77
- %x{
78
- if(camelized_cache.hasOwnProperty(string)) {
79
- return camelized_cache[string];
80
- } else {
81
- camelized_cache[string] = string.replace(/_(\w)/g, self.$_camelize_handler);
82
- return camelized_cache[string];
77
+ def self.camelize string
78
+ %x{
79
+ if(camelized_cache.hasOwnProperty(string)) {
80
+ return camelized_cache[string];
81
+ } else {
82
+ camelized_cache[string] = string.replace(/_(\w)/g, self.$_camelize_handler);
83
+ return camelized_cache[string];
84
+ }
83
85
  }
84
- }
85
- end
86
+ end
86
87
 
87
- def self._camelize_handler _, character_match
88
- `character_match.toUpperCase()`
88
+ def self._camelize_handler _, character_match
89
+ `character_match.toUpperCase()`
90
+ end
89
91
  end
90
- end
91
92
 
92
- module HashUtils
93
- def self.camelized_native hash
94
- return hash.to_n unless `!!hash.$$is_hash`
93
+ module HashUtils
94
+ def self.camelized_native hash
95
+ return hash.to_n unless `!!hash.$$is_hash`
95
96
 
96
- %x{
97
- var v, keys = #{hash.keys}, key, js_obj = {};
98
- for(var index = 0; index < keys.length; index++) {
99
- key = keys[index];
100
- v = #{hash[`key`]};
101
- js_obj[#{StringUtils.camelize(`key`)}] = v.$$is_hash ? self.$camelized_native(v) : v
97
+ %x{
98
+ var v, keys = #{hash.keys}, key, js_obj = {};
99
+ for(var index = 0; index < keys.length; index++) {
100
+ key = keys[index];
101
+ v = #{hash[`key`]};
102
+ js_obj[#{StringUtils.camelize(`key`)}] = v.$$is_hash
103
+ ? self.$camelized_native(v)
104
+ : (
105
+ (v && v.$$class) // If this is a Ruby object, nativize it
106
+ ? #{`v`.to_n}
107
+ : v
108
+ );
109
+ }
110
+ return js_obj;
102
111
  }
103
- return js_obj;
104
- }
112
+ end
105
113
  end
106
114
  end
107
115
  end
@@ -100,6 +100,23 @@ module Clearwater
100
100
  end
101
101
 
102
102
  def set_outlets targets=targets_for_path(current_path)
103
+ @old_targets = @targets || []
104
+ @targets = targets
105
+ navigating_from = @old_targets - @targets
106
+ navigating_to = @targets - @old_targets
107
+
108
+ navigating_from.each do |target|
109
+ if target.respond_to? :on_route_from
110
+ target.on_route_from
111
+ end
112
+ end
113
+
114
+ navigating_to.each do |target|
115
+ if target.respond_to? :on_route_to
116
+ target.on_route_to
117
+ end
118
+ end
119
+
103
120
  if targets.any?
104
121
  (targets.count).times do |index|
105
122
  targets[index].outlet = targets[index + 1]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clearwater
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc3
4
+ version: 1.0.0.rc4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamie Gaskins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-17 00:00:00.000000000 Z
11
+ date: 2016-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -164,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
164
  version: 1.3.1
165
165
  requirements: []
166
166
  rubyforge_project:
167
- rubygems_version: 2.6.6
167
+ rubygems_version: 2.4.8
168
168
  signing_key:
169
169
  specification_version: 4
170
170
  summary: Front-end Ruby web framework for fast, reasonable, and composable applications