isomorfeus-preact 10.5.0

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.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +62 -0
  3. data/lib/browser/delegate_native.rb +70 -0
  4. data/lib/browser/element.rb +176 -0
  5. data/lib/browser/element/canvas.rb +17 -0
  6. data/lib/browser/element/media.rb +78 -0
  7. data/lib/browser/event.rb +92 -0
  8. data/lib/browser/event_target.rb +39 -0
  9. data/lib/browser/file_list.rb +125 -0
  10. data/lib/browser/iterable.rb +15 -0
  11. data/lib/isomorfeus-preact.rb +109 -0
  12. data/lib/isomorfeus/preact/config.rb +189 -0
  13. data/lib/isomorfeus/preact/memcached_component_cache.rb +19 -0
  14. data/lib/isomorfeus/preact/redis_component_cache.rb +19 -0
  15. data/lib/isomorfeus/preact/thread_local_component_cache.rb +17 -0
  16. data/lib/isomorfeus/preact_view_helper.rb +188 -0
  17. data/lib/isomorfeus/props/validate_hash_proxy.rb +186 -0
  18. data/lib/isomorfeus/props/validator.rb +159 -0
  19. data/lib/isomorfeus/top_level.rb +101 -0
  20. data/lib/isomorfeus/top_level_ssr.rb +27 -0
  21. data/lib/isomorfeus_preact/lucid_app/api.rb +22 -0
  22. data/lib/isomorfeus_preact/lucid_app/base.rb +7 -0
  23. data/lib/isomorfeus_preact/lucid_app/mixin.rb +16 -0
  24. data/lib/isomorfeus_preact/lucid_app/native_component_constructor.rb +91 -0
  25. data/lib/isomorfeus_preact/lucid_component/api.rb +68 -0
  26. data/lib/isomorfeus_preact/lucid_component/app_store_proxy.rb +37 -0
  27. data/lib/isomorfeus_preact/lucid_component/base.rb +7 -0
  28. data/lib/isomorfeus_preact/lucid_component/class_store_proxy.rb +44 -0
  29. data/lib/isomorfeus_preact/lucid_component/initializer.rb +14 -0
  30. data/lib/isomorfeus_preact/lucid_component/instance_store_proxy.rb +44 -0
  31. data/lib/isomorfeus_preact/lucid_component/mixin.rb +15 -0
  32. data/lib/isomorfeus_preact/lucid_component/native_component_constructor.rb +84 -0
  33. data/lib/isomorfeus_preact/lucid_component/styles_api.rb +31 -0
  34. data/lib/isomorfeus_preact/lucid_component/styles_wrapper.rb +40 -0
  35. data/lib/isomorfeus_preact/lucid_func/base.rb +7 -0
  36. data/lib/isomorfeus_preact/lucid_func/initializer.rb +11 -0
  37. data/lib/isomorfeus_preact/lucid_func/mixin.rb +12 -0
  38. data/lib/isomorfeus_preact/lucid_func/native_component_constructor.rb +55 -0
  39. data/lib/isomorfeus_preact/preact/function_component/api.rb +123 -0
  40. data/lib/isomorfeus_preact/preact/function_component/base.rb +9 -0
  41. data/lib/isomorfeus_preact/preact/function_component/initializer.rb +10 -0
  42. data/lib/isomorfeus_preact/preact/function_component/mixin.rb +12 -0
  43. data/lib/isomorfeus_preact/preact/function_component/native_component_constructor.rb +48 -0
  44. data/lib/lucid_app/context.rb +24 -0
  45. data/lib/lucid_prop_declaration/mixin.rb +126 -0
  46. data/lib/preact.rb +309 -0
  47. data/lib/preact/component/api.rb +124 -0
  48. data/lib/preact/component/base.rb +9 -0
  49. data/lib/preact/component/callbacks.rb +102 -0
  50. data/lib/preact/component/elements.rb +64 -0
  51. data/lib/preact/component/initializer.rb +11 -0
  52. data/lib/preact/component/mixin.rb +15 -0
  53. data/lib/preact/component/native_component_constructor.rb +65 -0
  54. data/lib/preact/component/params.rb +18 -0
  55. data/lib/preact/component/props.rb +55 -0
  56. data/lib/preact/component/resolution.rb +97 -0
  57. data/lib/preact/component/state.rb +58 -0
  58. data/lib/preact/context_wrapper.rb +46 -0
  59. data/lib/preact/native_constant_wrapper.rb +29 -0
  60. data/lib/preact/options.rb +98 -0
  61. data/lib/preact/ref.rb +17 -0
  62. data/lib/preact/version.rb +3 -0
  63. metadata +301 -0
@@ -0,0 +1,97 @@
1
+ module Preact
2
+ module Component
3
+ module Resolution
4
+ def self.included(base)
5
+ base.instance_exec do
6
+ unless method_defined?(:_preact_component_class_resolution_original_const_missing)
7
+ alias _preact_component_class_resolution_original_const_missing const_missing
8
+ end
9
+
10
+ def const_missing(const_name)
11
+ %x{
12
+ if (typeof Opal.global[const_name] !== "undefined" && (const_name[0] === const_name[0].toUpperCase())) {
13
+ var new_const = #{Preact::NativeConstantWrapper.new(`Opal.global[const_name]`, const_name)};
14
+ new_const.preact_component = Opal.global[const_name];
15
+ #{Object.const_set(const_name, `new_const`)};
16
+ return new_const;
17
+ } else {
18
+ return #{_preact_component_class_resolution_original_const_missing(const_name)};
19
+ }
20
+ }
21
+ end
22
+
23
+ # this is required for autoloading support, as the component may not be loaded and so its method is not registered.
24
+ # must load it first, done by const_get, and next time the method will be there.
25
+ unless method_defined?(:_preact_component_class_resolution_original_method_missing)
26
+ alias _preact_component_class_resolution_original_method_missing method_missing
27
+ end
28
+
29
+ def method_missing(component_name, *args, &block)
30
+ # check for ruby component and render it
31
+ # otherwise pass on method missing
32
+ %x{
33
+ var constant;
34
+ if (typeof self.iso_preact_const_cache === 'undefined') { self.iso_preact_const_cache = {}; }
35
+ try {
36
+ if (typeof self.iso_preact_const_cache[component_name] !== 'undefined') {
37
+ constant = self.iso_preact_const_cache[component_name]
38
+ } else {
39
+ constant = self.$const_get(component_name);
40
+ self.iso_preact_const_cache[component_name] = constant;
41
+ }
42
+ if (typeof constant.preact_component !== 'undefined') {
43
+ return Opal.Preact.internal_prepare_args_and_render(constant.preact_component, args, block);
44
+ }
45
+ } catch(err) { }
46
+ return #{_preact_component_class_resolution_original_method_missing(component_name, *args, block)};
47
+ }
48
+ end
49
+ end
50
+ end
51
+
52
+ unless method_defined?(:_preact_component_resolution_original_method_missing)
53
+ alias _preact_component_resolution_original_method_missing method_missing
54
+ end
55
+
56
+ def method_missing(component_name, *args, &block)
57
+ # Further on it must check for modules, because $const_get does not take
58
+ # the full nesting into account, as usually its called via $$ with the
59
+ # nesting provided by the compiler.
60
+ %x{
61
+ var constant;
62
+ if (typeof self.iso_preact_const_cache === 'undefined') { self.iso_preact_const_cache = {}; }
63
+
64
+ if (typeof self.iso_preact_const_cache[component_name] !== 'undefined') {
65
+ constant = self.iso_preact_const_cache[component_name]
66
+ } else if (typeof self.$$is_a_module !== 'undefined') {
67
+ try {
68
+ constant = self.$const_get(component_name);
69
+ self.iso_preact_const_cache[component_name] = constant;
70
+ } catch(err) { }
71
+ } else {
72
+ let sc = self.$class();
73
+ try {
74
+ constant = sc.$const_get(component_name);
75
+ self.iso_preact_const_cache[component_name] = constant;
76
+ } catch(err) {
77
+ var module_names = sc.$to_s().split("::");
78
+ var module_name;
79
+ for (var i = module_names.length - 1; i > 0; i--) {
80
+ module_name = module_names.slice(0, i).join('::');
81
+ try {
82
+ constant = sc.$const_get(module_name).$const_get(component_name, false);
83
+ self.iso_preact_const_cache[component_name] = constant;
84
+ break;
85
+ } catch(err) { }
86
+ }
87
+ }
88
+ }
89
+ if (constant && typeof constant.preact_component !== 'undefined') {
90
+ return Opal.Preact.internal_prepare_args_and_render(constant.preact_component, args, block);
91
+ }
92
+ return #{_preact_component_resolution_original_method_missing(component_name, *args, block)};
93
+ }
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,58 @@
1
+ module Preact
2
+ module Component
3
+ class State
4
+ include ::Native::Wrapper
5
+
6
+ def initialize(native)
7
+ @native = native
8
+ end
9
+
10
+ def method_missing(key, *args, &block)
11
+ if `args.length > 0`
12
+ new_state = `{}`
13
+ new_state.JS[(`key.endsWith('=')` ? key.chop : key)] = args[0]
14
+ if block_given?
15
+ @native.JS.setState(new_state, `function() { block.$call(); }`)
16
+ else
17
+ @native.JS.setState(new_state, `null`)
18
+ end
19
+ else
20
+ %x{
21
+ if (typeof #@native.state[key] === 'undefined') { return nil; }
22
+ return #@native.state[key];
23
+ }
24
+ end
25
+ end
26
+
27
+ def set_state(updater, &block)
28
+ new_state = `{}`
29
+ updater.each do |key, value|
30
+ new_state.JS[key] = value
31
+ end
32
+ if block_given?
33
+ @native.JS.setState(new_state, `function() { block.$call(); }`)
34
+ else
35
+ @native.JS.setState(new_state, `null`)
36
+ end
37
+ end
38
+
39
+ def size
40
+ `Object.keys(#@native.state).length`;
41
+ end
42
+
43
+ def to_n
44
+ %x{
45
+ var new_native = {};
46
+ for (var key in #@native.state) {
47
+ if (typeof #@native.state[key].$to_n !== "undefined") {
48
+ new_native[key] = #@native.state[key].$to_n();
49
+ } else {
50
+ new_native[key] = #@native.state[key];
51
+ }
52
+ }
53
+ return new_native;
54
+ }
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,46 @@
1
+ module Preact
2
+ class ContextWrapper
3
+ include ::Native::Wrapper
4
+
5
+ def initialize(native)
6
+ @native = native
7
+ end
8
+
9
+ def is_wrapped_context
10
+ true
11
+ end
12
+
13
+ def Consumer(*args, &block)
14
+ %x{
15
+ let operabu = Opal.Preact.render_buffer;
16
+ let props = null;
17
+
18
+ if (args.length > 0) { props = Opal.Preact.to_native_preact_props(args[0]); }
19
+
20
+ let preact_element = Opal.global.Preact.createElement(this.native.Consumer, props, function(value) {
21
+ let children = null;
22
+ if (block !== nil) {
23
+ operabu.push([]);
24
+ // console.log("consumer pushed", operabu, operabu.toString());
25
+ let block_result = block.$call(value);
26
+ if (block_result && block_result !== nil) { Opal.Preact.render_block_result(block_result); }
27
+ // console.log("consumer popping", operabu, operabu.toString());
28
+ children = operabu.pop();
29
+ if (children.length === 1) { children = children[0]; }
30
+ else if (children.length === 0) { children = null; }
31
+ }
32
+ return children;
33
+ });
34
+ operabu[operabu.length - 1].push(preact_element);
35
+ }
36
+ end
37
+
38
+ def Provider(*args, &block)
39
+ %x{
40
+ var props = null;
41
+ if (args.length > 0) { props = Opal.Preact.to_native_preact_props(args[0]); }
42
+ Opal.Preact.internal_render(this.native.Provider, props, null, block);
43
+ }
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,29 @@
1
+ module Preact
2
+ class NativeConstantWrapper
3
+ include ::Native::Wrapper
4
+
5
+ def initialize(native, const_name)
6
+ @native = native
7
+ @const_name = const_name
8
+ end
9
+
10
+ def method_missing(name, *args, &block)
11
+ %x{
12
+ if (name[0] === 'u' && name[1] === 's' && name[2] === 'e') {
13
+ if (name.indexOf('_') > 0) { name = Opal.Preact.lower_camelize(name); }
14
+ return #@native[name].call(this, args);
15
+ }
16
+ var component = null;
17
+ var component_type = typeof #@native[name];
18
+ if (component_type === "function" || component_type === "object") {
19
+ component = #@native[name];
20
+ }
21
+ if (component) {
22
+ return Opal.Preact.internal_prepare_args_and_render(component, args, block);
23
+ } else {
24
+ #{Isomorfeus.raise_error(error_class: NameError, message: "No such native Component #@const_name.#{name}")};
25
+ }
26
+ }
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,98 @@
1
+ module Preact
2
+ class Options
3
+ class << self
4
+ def debounce_rendering(&block)
5
+ %x{
6
+ const old_hook = Opal.global.Preact.options.debounceRendering;
7
+ Opal.global.Preact.options.debounceRendering = function(callback) {
8
+ #{block.call};
9
+ if (old_hook) {
10
+ old_hook(callback);
11
+ }
12
+ }
13
+ }
14
+ nil
15
+ end
16
+
17
+ def diffed(&block)
18
+ # TODO wrap vnode
19
+ %x{
20
+ const old_hook = Opal.global.Preact.options.diffed;
21
+ Opal.global.Preact.options.diffed = function(vnode) {
22
+ #{block.call(`vnode`)};
23
+ if (old_hook) {
24
+ old_hook(vnode);
25
+ }
26
+ }
27
+ }
28
+ nil
29
+ end
30
+
31
+ def event(&block)
32
+ %x{
33
+ const old_hook = Opal.global.Preact.options.event;
34
+ Opal.global.Preact.options.event = function(event) {
35
+ ruby_event = #{Browser::Event.new(`event`)}
36
+ ruby_event = #{block.call(`ruby_event`)};
37
+ return ruby_event.native;
38
+ }
39
+ }
40
+ nil
41
+ end
42
+
43
+ def request_animation_frame(&block)
44
+ %x{
45
+ const old_hook = Opal.global.Preact.options.requestAnimationFrame;
46
+ Opal.global.Preact.options.requestAnimationFrame = function(callback) {
47
+ #{block.call};
48
+ if (old_hook) {
49
+ old_hook(callback);
50
+ }
51
+ }
52
+ }
53
+ nil
54
+ end
55
+
56
+ def unmount(&block)
57
+ # TODO wrap vnode
58
+ %x{
59
+ const old_hook = Opal.global.Preact.options.unmount;
60
+ Opal.global.Preact.options.unmount = function(vnode) {
61
+ #{block.call(`vnode`)};
62
+ if (old_hook) {
63
+ old_hook(vnode);
64
+ }
65
+ }
66
+ }
67
+ nil
68
+ end
69
+
70
+ def use_debug_value(&block)
71
+ %x{
72
+ const old_hook = Opal.global.Preact.options.useDebugValue;
73
+ Opal.global.Preact.options.useDebugValue = function(value) {
74
+ #{block.call(`value`)};
75
+ if (old_hook) {
76
+ old_hook(value);
77
+ }
78
+ }
79
+ }
80
+ nil
81
+ end
82
+
83
+ def vnode(&block)
84
+ %x{
85
+ const old_hook = Opal.global.Preact.options.unmount;
86
+ Opal.global.Preact.options.unmount = function(vnode) {
87
+ #{block.call(`vnode`)};
88
+ if (old_hook) {
89
+ old_hook(vnode);
90
+ }
91
+ }
92
+ }
93
+ nil
94
+ end
95
+
96
+ end
97
+ end
98
+ end
data/lib/preact/ref.rb ADDED
@@ -0,0 +1,17 @@
1
+ module Preact
2
+ class Ref
3
+ include ::Native::Wrapper
4
+
5
+ def initialize(native)
6
+ @native = native
7
+ end
8
+
9
+ def is_wrapped_ref
10
+ true
11
+ end
12
+
13
+ def current
14
+ `Opal.Preact.native_element_or_component_to_ruby(#@native.current)`
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,3 @@
1
+ module Preact
2
+ VERSION = '10.5.0'
3
+ end
metadata ADDED
@@ -0,0 +1,301 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: isomorfeus-preact
3
+ version: !ruby/object:Gem::Version
4
+ version: 10.5.0
5
+ platform: ruby
6
+ authors:
7
+ - Jan Biedermann
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-08-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: concurrent-ruby
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.1.9
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.1.9
27
+ - !ruby/object:Gem::Dependency
28
+ name: oj
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 3.12.3
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 3.12.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: opal
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 1.0.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: opal-activesupport
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.3.3
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.3.3
69
+ - !ruby/object:Gem::Dependency
70
+ name: opal-zeitwerk
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.2.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.2.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: opal-webpack-loader
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 0.11.4
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 0.11.4
97
+ - !ruby/object:Gem::Dependency
98
+ name: isomorfeus-redux
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 4.1.1
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 4.1.1
111
+ - !ruby/object:Gem::Dependency
112
+ name: isomorfeus-speednode
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 0.3.1
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 0.3.1
125
+ - !ruby/object:Gem::Dependency
126
+ name: dalli
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: 2.7.11
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: 2.7.11
139
+ - !ruby/object:Gem::Dependency
140
+ name: redis
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: 4.4.0
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: 4.4.0
153
+ - !ruby/object:Gem::Dependency
154
+ name: zeitwerk
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: 2.4.2
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: 2.4.2
167
+ - !ruby/object:Gem::Dependency
168
+ name: isomorfeus-puppetmaster
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 0.4.1
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 0.4.1
181
+ - !ruby/object:Gem::Dependency
182
+ name: rake
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: rspec
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '3.8'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '3.8'
209
+ description: Write Preact Components in Ruby.
210
+ email:
211
+ - jan@kursator.com
212
+ executables: []
213
+ extensions: []
214
+ extra_rdoc_files: []
215
+ files:
216
+ - README.md
217
+ - lib/browser/delegate_native.rb
218
+ - lib/browser/element.rb
219
+ - lib/browser/element/canvas.rb
220
+ - lib/browser/element/media.rb
221
+ - lib/browser/event.rb
222
+ - lib/browser/event_target.rb
223
+ - lib/browser/file_list.rb
224
+ - lib/browser/iterable.rb
225
+ - lib/isomorfeus-preact.rb
226
+ - lib/isomorfeus/preact/config.rb
227
+ - lib/isomorfeus/preact/memcached_component_cache.rb
228
+ - lib/isomorfeus/preact/redis_component_cache.rb
229
+ - lib/isomorfeus/preact/thread_local_component_cache.rb
230
+ - lib/isomorfeus/preact_view_helper.rb
231
+ - lib/isomorfeus/props/validate_hash_proxy.rb
232
+ - lib/isomorfeus/props/validator.rb
233
+ - lib/isomorfeus/top_level.rb
234
+ - lib/isomorfeus/top_level_ssr.rb
235
+ - lib/isomorfeus_preact/lucid_app/api.rb
236
+ - lib/isomorfeus_preact/lucid_app/base.rb
237
+ - lib/isomorfeus_preact/lucid_app/mixin.rb
238
+ - lib/isomorfeus_preact/lucid_app/native_component_constructor.rb
239
+ - lib/isomorfeus_preact/lucid_component/api.rb
240
+ - lib/isomorfeus_preact/lucid_component/app_store_proxy.rb
241
+ - lib/isomorfeus_preact/lucid_component/base.rb
242
+ - lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
243
+ - lib/isomorfeus_preact/lucid_component/initializer.rb
244
+ - lib/isomorfeus_preact/lucid_component/instance_store_proxy.rb
245
+ - lib/isomorfeus_preact/lucid_component/mixin.rb
246
+ - lib/isomorfeus_preact/lucid_component/native_component_constructor.rb
247
+ - lib/isomorfeus_preact/lucid_component/styles_api.rb
248
+ - lib/isomorfeus_preact/lucid_component/styles_wrapper.rb
249
+ - lib/isomorfeus_preact/lucid_func/base.rb
250
+ - lib/isomorfeus_preact/lucid_func/initializer.rb
251
+ - lib/isomorfeus_preact/lucid_func/mixin.rb
252
+ - lib/isomorfeus_preact/lucid_func/native_component_constructor.rb
253
+ - lib/isomorfeus_preact/preact/function_component/api.rb
254
+ - lib/isomorfeus_preact/preact/function_component/base.rb
255
+ - lib/isomorfeus_preact/preact/function_component/initializer.rb
256
+ - lib/isomorfeus_preact/preact/function_component/mixin.rb
257
+ - lib/isomorfeus_preact/preact/function_component/native_component_constructor.rb
258
+ - lib/lucid_app/context.rb
259
+ - lib/lucid_prop_declaration/mixin.rb
260
+ - lib/preact.rb
261
+ - lib/preact/component/api.rb
262
+ - lib/preact/component/base.rb
263
+ - lib/preact/component/callbacks.rb
264
+ - lib/preact/component/elements.rb
265
+ - lib/preact/component/initializer.rb
266
+ - lib/preact/component/mixin.rb
267
+ - lib/preact/component/native_component_constructor.rb
268
+ - lib/preact/component/params.rb
269
+ - lib/preact/component/props.rb
270
+ - lib/preact/component/resolution.rb
271
+ - lib/preact/component/state.rb
272
+ - lib/preact/context_wrapper.rb
273
+ - lib/preact/native_constant_wrapper.rb
274
+ - lib/preact/options.rb
275
+ - lib/preact/ref.rb
276
+ - lib/preact/version.rb
277
+ homepage: http://isomorfeus.com
278
+ licenses:
279
+ - MIT
280
+ metadata:
281
+ github_repo: ssh://github.com/isomorfeus/gems
282
+ post_install_message:
283
+ rdoc_options: []
284
+ require_paths:
285
+ - lib
286
+ required_ruby_version: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - ">="
289
+ - !ruby/object:Gem::Version
290
+ version: '0'
291
+ required_rubygems_version: !ruby/object:Gem::Requirement
292
+ requirements:
293
+ - - ">="
294
+ - !ruby/object:Gem::Version
295
+ version: '0'
296
+ requirements: []
297
+ rubygems_version: 3.2.15
298
+ signing_key:
299
+ specification_version: 4
300
+ summary: Preact for Opal Ruby.
301
+ test_files: []