isomorfeus-react 16.6.8 → 16.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +39 -413
  3. data/lib/isomorfeus-react-base.rb +55 -0
  4. data/lib/isomorfeus-react-component.rb +20 -0
  5. data/lib/isomorfeus-react-lucid.rb +39 -0
  6. data/lib/isomorfeus-react-material-ui.rb +41 -0
  7. data/lib/isomorfeus-react-redux-component.rb +25 -0
  8. data/lib/isomorfeus-react.rb +4 -101
  9. data/lib/isomorfeus/config.rb +3 -8
  10. data/lib/isomorfeus/top_level_browser.rb +1 -1
  11. data/lib/lucid_app/api.rb +1 -12
  12. data/lib/lucid_app/mixin.rb +1 -0
  13. data/lib/lucid_app/native_component_constructor.rb +10 -0
  14. data/lib/lucid_component/api.rb +1 -1
  15. data/lib/lucid_component/initializer.rb +5 -5
  16. data/lib/lucid_component/mixin.rb +1 -0
  17. data/lib/lucid_component/native_component_constructor.rb +13 -3
  18. data/lib/lucid_material/app/base.rb +9 -0
  19. data/lib/lucid_material/app/mixin.rb +20 -0
  20. data/lib/lucid_material/app/native_component_constructor.rb +116 -0
  21. data/lib/lucid_material/component/api.rb +19 -0
  22. data/lib/lucid_material/component/base.rb +9 -0
  23. data/lib/lucid_material/component/mixin.rb +21 -0
  24. data/lib/lucid_material/component/native_component_constructor.rb +158 -0
  25. data/lib/react.rb +13 -5
  26. data/lib/react/children.rb +35 -0
  27. data/lib/react/component/api.rb +5 -91
  28. data/lib/react/component/callbacks.rb +103 -0
  29. data/lib/react/component/elements.rb +3 -23
  30. data/lib/react/component/features.rb +12 -29
  31. data/lib/react/component/initializer.rb +2 -2
  32. data/lib/react/component/mixin.rb +1 -0
  33. data/lib/react/component/native_component_constructor.rb +7 -0
  34. data/lib/react/component/props.rb +13 -1
  35. data/lib/react/component/resolution.rb +14 -15
  36. data/lib/react/component/styles.rb +23 -0
  37. data/lib/react/context_wrapper.rb +4 -0
  38. data/lib/react/function_component/api.rb +83 -0
  39. data/lib/react/function_component/base.rb +9 -0
  40. data/lib/react/function_component/creator.rb +19 -65
  41. data/lib/react/function_component/event_handler.rb +13 -0
  42. data/lib/react/function_component/mixin.rb +14 -0
  43. data/lib/react/function_component/resolution.rb +17 -15
  44. data/lib/react/memo_component/base.rb +9 -0
  45. data/lib/react/memo_component/creator.rb +32 -0
  46. data/lib/react/memo_component/mixin.rb +14 -0
  47. data/lib/react/native_constant_wrapper.rb +1 -11
  48. data/lib/react/pure_component/mixin.rb +2 -0
  49. data/lib/react/redux_component/api.rb +1 -93
  50. data/lib/react/redux_component/initializer.rb +5 -5
  51. data/lib/react/redux_component/mixin.rb +1 -0
  52. data/lib/react/redux_component/native_component_constructor.rb +13 -3
  53. data/lib/react/redux_component/reducers.rb +29 -35
  54. data/lib/react/ref.rb +4 -0
  55. data/lib/react/version.rb +1 -1
  56. data/lib/react_dom.rb +9 -3
  57. metadata +70 -8
  58. data/lib/lucid_router.rb +0 -18
  59. data/lib/react/function_component/runner.rb +0 -19
@@ -1,45 +1,39 @@
1
1
  module React
2
2
  module ReduxComponent
3
3
  module Reducers
4
- def self.add_component_reducers_to_store
5
- component_reducer = Redux.create_reducer do |prev_state, action|
6
- case action[:type]
7
- when 'COMPONENT_STATE'
8
- new_state = {}.merge!(prev_state) # make a copy of state
9
- new_state[action[:object_id]] = {} unless new_state.has_key?(action[:object_id])
10
- new_state[action[:object_id]].merge!(action[:name] => action[:value])
11
- new_state
12
- else
13
- prev_state
14
- end
15
- end
4
+ class << self
5
+ attr_reader :component_reducers_added
16
6
 
17
- component_class_reducer = Redux.create_reducer do |prev_state, action|
18
- case action[:type]
19
- when 'COMPONENT_CLASS_STATE'
20
- new_state = {}.merge!(prev_state) # make a copy of state
21
- new_state[action[:class]] = {} unless new_state.has_key?(action[:class])
22
- new_state[action[:class]].merge!(action[:name] => action[:value])
23
- new_state
24
- else
25
- prev_state
26
- end
27
- end
7
+ def add_component_reducers_to_store
8
+ unless component_reducers_added
9
+ @_component_reducers_added = true
10
+ component_reducer = Redux.create_reducer do |prev_state, action|
11
+ case action[:type]
12
+ when 'COMPONENT_STATE'
13
+ new_state = {}.merge!(prev_state) # make a copy of state
14
+ new_state[action[:object_id]] = {} unless new_state.has_key?(action[:object_id])
15
+ new_state[action[:object_id]].merge!(action[:name] => action[:value])
16
+ new_state
17
+ else
18
+ prev_state
19
+ end
20
+ end
21
+
22
+ component_class_reducer = Redux.create_reducer do |prev_state, action|
23
+ case action[:type]
24
+ when 'COMPONENT_CLASS_STATE'
25
+ new_state = {}.merge!(prev_state) # make a copy of state
26
+ new_state[action[:class]] = {} unless new_state.has_key?(action[:class])
27
+ new_state[action[:class]].merge!(action[:name] => action[:value])
28
+ new_state
29
+ else
30
+ prev_state
31
+ end
32
+ end
28
33
 
29
- # TODO move application_state to i-redux
30
- # TODO implement Isomomorfeus.store.app_store or Isomomorfeus.app_store
31
- app_reducer = Redux.create_reducer do |prev_state, action|
32
- case action[:type]
33
- when 'APPLICATION_STATE'
34
- new_state = {}.merge!(prev_state) # make a copy of state
35
- new_state.merge!(action[:name] => action[:value])
36
- new_state
37
- else
38
- prev_state
34
+ Redux::Store.add_reducers(component_state: component_reducer, component_class_state: component_class_reducer)
39
35
  end
40
36
  end
41
-
42
- Redux::Store.add_reducers(component_state: component_reducer, component_class_state: component_class_reducer, application_state: app_reducer)
43
37
  end
44
38
  end
45
39
  end
data/lib/react/ref.rb CHANGED
@@ -2,6 +2,10 @@ module React
2
2
  class Ref
3
3
  include ::Native::Wrapper
4
4
 
5
+ def is_wrapped_ref
6
+ true
7
+ end
8
+
5
9
  def initialize(native_ref)
6
10
  @native = native_ref
7
11
  end
data/lib/react/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module React
2
- VERSION = '16.6.8'
2
+ VERSION = '16.8.0'
3
3
  end
data/lib/react_dom.rb CHANGED
@@ -33,9 +33,15 @@ module ReactDOM
33
33
  result
34
34
  end
35
35
 
36
- def unmount_component_at_node(container)
37
- # container is a native DOM element
38
- `Opal.global.ReactDOM.unmountComponentAtNode(container)`
36
+ def unmount_component_at_node(element_or_query)
37
+ if `(typeof element_or_query === 'string')` || (`(typeof element_or_query.$class === 'function')` && element_or_query.class == String)
38
+ element = `document.body.querySelector(element_or_query)`
39
+ elsif `(typeof element_or_query.$is_a === 'function')` && element_or_query.is_a?(Browser::DOM::Node)
40
+ element = element_or_query.to_n
41
+ else
42
+ element = element_or_query
43
+ end
44
+ `Opal.global.ReactDOM.unmountComponentAtNode(element)`
39
45
  end
40
46
  end
41
47
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-react
3
3
  version: !ruby/object:Gem::Version
4
- version: 16.6.8
4
+ version: 16.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-05 00:00:00.000000000 Z
11
+ date: 2019-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -86,28 +86,70 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 4.0.4
89
+ version: 4.0.5
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 4.0.4
96
+ version: 4.0.5
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: isomorfeus-speednode
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.2.3
103
+ version: 0.2.4
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 0.2.3
110
+ version: 0.2.4
111
+ - !ruby/object:Gem::Dependency
112
+ name: isomorfeus-puppetmaster
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 0.2.7
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.2.7
125
+ - !ruby/object:Gem::Dependency
126
+ name: rake
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '3.6'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '3.6'
111
153
  description: Write React Components in Ruby.
112
154
  email:
113
155
  - jan@kursator.com
@@ -116,6 +158,11 @@ extensions: []
116
158
  extra_rdoc_files: []
117
159
  files:
118
160
  - README.md
161
+ - lib/isomorfeus-react-base.rb
162
+ - lib/isomorfeus-react-component.rb
163
+ - lib/isomorfeus-react-lucid.rb
164
+ - lib/isomorfeus-react-material-ui.rb
165
+ - lib/isomorfeus-react-redux-component.rb
119
166
  - lib/isomorfeus-react.rb
120
167
  - lib/isomorfeus/config.rb
121
168
  - lib/isomorfeus/execution_environment.rb
@@ -133,11 +180,19 @@ files:
133
180
  - lib/lucid_component/initializer.rb
134
181
  - lib/lucid_component/mixin.rb
135
182
  - lib/lucid_component/native_component_constructor.rb
136
- - lib/lucid_router.rb
183
+ - lib/lucid_material/app/base.rb
184
+ - lib/lucid_material/app/mixin.rb
185
+ - lib/lucid_material/app/native_component_constructor.rb
186
+ - lib/lucid_material/component/api.rb
187
+ - lib/lucid_material/component/base.rb
188
+ - lib/lucid_material/component/mixin.rb
189
+ - lib/lucid_material/component/native_component_constructor.rb
137
190
  - lib/react.rb
138
191
  - lib/react/active_support_support.rb
192
+ - lib/react/children.rb
139
193
  - lib/react/component/api.rb
140
194
  - lib/react/component/base.rb
195
+ - lib/react/component/callbacks.rb
141
196
  - lib/react/component/elements.rb
142
197
  - lib/react/component/event_handler.rb
143
198
  - lib/react/component/features.rb
@@ -152,11 +207,18 @@ files:
152
207
  - lib/react/component/resolution.rb
153
208
  - lib/react/component/should_component_update.rb
154
209
  - lib/react/component/state.rb
210
+ - lib/react/component/styles.rb
155
211
  - lib/react/component/unsafe_api.rb
156
212
  - lib/react/context_wrapper.rb
213
+ - lib/react/function_component/api.rb
214
+ - lib/react/function_component/base.rb
157
215
  - lib/react/function_component/creator.rb
216
+ - lib/react/function_component/event_handler.rb
217
+ - lib/react/function_component/mixin.rb
158
218
  - lib/react/function_component/resolution.rb
159
- - lib/react/function_component/runner.rb
219
+ - lib/react/memo_component/base.rb
220
+ - lib/react/memo_component/creator.rb
221
+ - lib/react/memo_component/mixin.rb
160
222
  - lib/react/native_constant_wrapper.rb
161
223
  - lib/react/pure_component/base.rb
162
224
  - lib/react/pure_component/mixin.rb
data/lib/lucid_router.rb DELETED
@@ -1,18 +0,0 @@
1
- # language=JS
2
- %x{
3
- class LucidRouter extends Opal.global.React.Component {
4
- constructor(props) {
5
- super(props);
6
- }
7
- render() {
8
- if (Opal.Isomorfeus["$on_ssr?"]()) {
9
- var new_props = Object.assign({}, this.props, { location: Opal.Isomorfeus.TopLevel.$ssr_route_path() });
10
- return Opal.global.React.createElement(Opal.global.StaticRouter, new_props);
11
- } else {
12
- return Opal.global.React.createElement(Opal.global.BrowserRouter, this.props);
13
- }
14
- }
15
- }
16
-
17
- Opal.global.LucidRouter = LucidRouter;
18
- }
@@ -1,19 +0,0 @@
1
- module React
2
- module FunctionComponent
3
- class Runner
4
- include ::React::Component::Elements
5
- include ::React::Component::Features
6
- include ::React::FunctionComponent::Resolution
7
-
8
- attr_accessor :props
9
-
10
- %x{
11
- self.event_handlers = {};
12
- }
13
-
14
- def initialize(props)
15
- @props = ::React::Component::Props.new(props)
16
- end
17
- end
18
- end
19
- end