isomorfeus-preact 10.6.29 → 10.6.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/lib/isomorfeus/preact_view_helper.rb +9 -7
  4. data/lib/isomorfeus-preact.rb +15 -0
  5. data/lib/isomorfeus_preact/lucid_app/api.rb +30 -32
  6. data/lib/isomorfeus_preact/lucid_app/mixin.rb +12 -13
  7. data/lib/isomorfeus_preact/lucid_app/native_component_constructor.rb +86 -76
  8. data/lib/isomorfeus_preact/lucid_component/api.rb +96 -98
  9. data/lib/isomorfeus_preact/lucid_component/initializer.rb +8 -10
  10. data/lib/isomorfeus_preact/lucid_component/mixin.rb +11 -12
  11. data/lib/isomorfeus_preact/lucid_component/native_component_constructor.rb +75 -70
  12. data/lib/isomorfeus_preact/lucid_func/initializer.rb +7 -9
  13. data/lib/isomorfeus_preact/lucid_func/mixin.rb +8 -9
  14. data/lib/isomorfeus_preact/lucid_func/native_component_constructor.rb +48 -45
  15. data/lib/isomorfeus_preact/preact/function_component/api.rb +102 -106
  16. data/lib/isomorfeus_preact/preact/function_component/base.rb +5 -7
  17. data/lib/isomorfeus_preact/preact/function_component/initializer.rb +4 -8
  18. data/lib/isomorfeus_preact/preact/function_component/mixin.rb +6 -10
  19. data/lib/isomorfeus_preact/preact/function_component/native_component_constructor.rb +41 -40
  20. data/lib/preact/component/api.rb +99 -103
  21. data/lib/preact/component/base.rb +5 -7
  22. data/lib/preact/component/callbacks.rb +99 -90
  23. data/lib/preact/component/initializer.rb +5 -9
  24. data/lib/preact/component/mixin.rb +9 -13
  25. data/lib/preact/component/native_component_constructor.rb +69 -62
  26. data/lib/preact/component_resolution.rb +78 -80
  27. data/lib/preact/context_wrapper.rb +5 -3
  28. data/lib/preact/elements.rb +55 -57
  29. data/lib/preact/version.rb +1 -1
  30. data/lib/preact.rb +2 -0
  31. metadata +14 -13
@@ -1,70 +1,77 @@
1
- module Preact
2
- module Component
3
- module NativeComponentConstructor
4
- # for should_component_update we apply ruby semantics for comparing props
5
- # to do so, we convert the props to ruby hashes and then compare
6
- # this makes sure, that for example rubys Nil object gets handled properly
7
- def self.extended(base)
8
- component_name = base.to_s
9
- %x{
10
- base.preact_component = class extends Opal.global.Preact.Component {
11
- constructor(props) {
12
- super(props);
13
- if (base.$default_state_defined()) {
14
- this.state = base.$state().$to_n();
15
- } else {
16
- this.state = {};
17
- };
18
- this.__ruby_instance = base.$new(this);
19
- var defined_refs = #{base.defined_refs};
20
- for (var ref in defined_refs) {
21
- if (defined_refs[ref] != null) {
22
- let r = ref; // to ensure closure for function below gets correct ref name
23
- this[ref] = function(element) {
24
- const oper = Opal.Preact;
25
- element = oper.native_element_or_component_to_ruby(element);
26
- oper.register_active_component(this);
27
- #{`this.__ruby_instance`.instance_exec(`element`, &`defined_refs[r]`)}
28
- oper.unregister_active_component(this);
29
- }
30
- this[ref] = this[ref].bind(this);
31
- } else {
32
- this[ref] = Opal.global.Preact.createRef();
33
- }
34
- }
35
- }
36
- static get displayName() {
37
- return #{component_name};
38
- }
39
- render(props, state) {
40
- const oper = Opal.Preact;
41
- oper.render_buffer.push([]);
42
- oper.register_active_component(this);
43
- let block_result = #{`this.__ruby_instance`.instance_exec(&`base.render_block`)};
44
- if (block_result && block_result !== nil) { oper.render_block_result(block_result); }
45
- oper.unregister_active_component(this);
46
- let result = oper.render_buffer.pop();
47
- return (result.length === 1) ? result[0] : result;
48
- }
49
- shouldComponentUpdate(next_props, next_state) {
50
- const oper = Opal.Preact;
51
- if (base.should_component_update_block) {
1
+ module Preact::Component::NativeComponentConstructor
2
+ # for should_component_update we apply ruby semantics for comparing props
3
+ # to do so, we convert the props to ruby hashes and then compare
4
+ # this makes sure, that for example rubys Nil object gets handled properly
5
+ def self.extended(base)
6
+ component_name = base.to_s
7
+ %x{
8
+ base.preact_component = class extends Opal.global.Preact.Component {
9
+ constructor(props) {
10
+ super(props);
11
+ if (base.$default_state_defined()) {
12
+ this.state = base.$state().$to_n();
13
+ } else {
14
+ this.state = {};
15
+ };
16
+ this.__ruby_instance = base.$new(this);
17
+ var defined_refs = #{base.defined_refs};
18
+ for (var ref in defined_refs) {
19
+ if (defined_refs[ref] != null) {
20
+ let r = ref; // to ensure closure for function below gets correct ref name
21
+ this[ref] = function(element) {
22
+ const oper = Opal.Preact;
23
+ element = oper.native_element_or_component_to_ruby(element);
52
24
  oper.register_active_component(this);
53
- return #{!!`this.__ruby_instance`.instance_exec(`oper.Props.$new({props: next_props})`, `oper.State.$new({state: next_state })`, &`base.should_component_update_block`)};
25
+ try {
26
+ #{`this.__ruby_instance`.instance_exec(`element`, &`defined_refs[r]`)}
27
+ } catch (e) { console.error(e.message === nil ? 'error at' : e.message, e.stack); }
54
28
  oper.unregister_active_component(this);
55
29
  }
56
- if (!oper.props_are_equal(this.props, next_props)) { return true; }
57
- if (oper.state_is_not_equal(this.state, next_state)) { return true; }
58
- return false;
59
- }
60
- validateProp(props, propName, componentName) {
61
- try { base.$validate_prop(propName, props[propName]) }
62
- catch (e) { return new Error(componentName + " Error: prop validation failed: " + e.message); }
63
- return null;
30
+ this[ref] = this[ref].bind(this);
31
+ } else {
32
+ this[ref] = Opal.global.Preact.createRef();
64
33
  }
65
34
  }
66
35
  }
67
- end
68
- end
36
+ static get displayName() {
37
+ return #{component_name};
38
+ }
39
+ render(props, state) {
40
+ const oper = Opal.Preact;
41
+ oper.render_buffer.push([]);
42
+ oper.register_active_component(this);
43
+ try {
44
+ let block_result = #{`this.__ruby_instance`.instance_exec(&`base.render_block`)};
45
+ if (block_result && block_result !== nil) { oper.render_block_result(block_result); }
46
+ } catch (e) {
47
+ if (oper.using_did_catch) { throw e; }
48
+ else { console.error(e.message === nil ? 'error at' : e.message, e.stack); }
49
+ }
50
+ oper.unregister_active_component(this);
51
+ let result = oper.render_buffer.pop();
52
+ return (result.length === 1) ? result[0] : result;
53
+ }
54
+ shouldComponentUpdate(next_props, next_state) {
55
+ const oper = Opal.Preact;
56
+ if (base.should_component_update_block) {
57
+ oper.register_active_component(this);
58
+ let result;
59
+ try {
60
+ result = #{!!`this.__ruby_instance`.instance_exec(`oper.Props.$new({props: next_props})`, `oper.State.$new({state: next_state })`, &`base.should_component_update_block`)};
61
+ } catch (e) { console.error(e.message === nil ? 'error at' : e.message, e.stack); }
62
+ oper.unregister_active_component(this);
63
+ return result;
64
+ }
65
+ if (!oper.props_are_equal(this.props, next_props)) { return true; }
66
+ if (oper.state_is_not_equal(this.state, next_state)) { return true; }
67
+ return false;
68
+ }
69
+ validateProp(props, propName, componentName) {
70
+ try { base.$validate_prop(propName, props[propName]) }
71
+ catch (e) { return new Error(componentName + " Error: prop validation failed: " + e.message); }
72
+ return null;
73
+ }
74
+ }
75
+ }
69
76
  end
70
77
  end
@@ -1,94 +1,92 @@
1
- module Preact
2
- module ComponentResolution
3
- def self.included(base)
4
- base.instance_exec do
5
- unless method_defined?(:_preact_component_class_resolution_original_const_missing)
6
- alias _preact_component_class_resolution_original_const_missing const_missing
7
- end
1
+ module Preact::ComponentResolution
2
+ def self.included(base)
3
+ base.instance_exec do
4
+ unless method_defined?(:_preact_component_class_resolution_original_const_missing)
5
+ alias _preact_component_class_resolution_original_const_missing const_missing
6
+ end
8
7
 
9
- def const_missing(const_name)
10
- %x{
11
- if (typeof Opal.global[const_name] !== "undefined" && (const_name[0] === const_name[0].toUpperCase())) {
12
- var new_const = Opal.Preact.NativeConstantWrapper.$new(Opal.global[const_name], const_name);
13
- new_const.preact_component = Opal.global[const_name];
14
- Opal.Object.$const_set(const_name, new_const);
15
- return new_const;
16
- } else {
17
- return #{_preact_component_class_resolution_original_const_missing(const_name)};
18
- }
8
+ def const_missing(const_name)
9
+ %x{
10
+ if (typeof Opal.global[const_name] !== "undefined" && (const_name[0] === const_name[0].toUpperCase())) {
11
+ var new_const = Opal.Preact.NativeConstantWrapper.$new(Opal.global[const_name], const_name);
12
+ new_const.preact_component = Opal.global[const_name];
13
+ Opal.Object.$const_set(const_name, new_const);
14
+ return new_const;
15
+ } else {
16
+ return #{_preact_component_class_resolution_original_const_missing(const_name)};
19
17
  }
20
- end
18
+ }
19
+ end
21
20
 
22
- # this is required for autoloading support, as the component may not be loaded and so its method is not registered.
23
- # must load it first, done by const_get, and next time the method will be there.
24
- unless method_defined?(:_preact_component_class_resolution_original_method_missing)
25
- alias _preact_component_class_resolution_original_method_missing method_missing
26
- end
21
+ # this is required for autoloading support, as the component may not be loaded and so its method is not registered.
22
+ # must load it first, done by const_get, and next time the method will be there.
23
+ unless method_defined?(:_preact_component_class_resolution_original_method_missing)
24
+ alias _preact_component_class_resolution_original_method_missing method_missing
25
+ end
27
26
 
28
- def method_missing(component_name, *args, &block)
29
- # check for ruby component and render it
30
- # otherwise pass on method missing
31
- %x{
32
- var constant = null;
33
- if (typeof self.iso_preact_const_cache === 'undefined') { self.iso_preact_const_cache = {}; }
34
- if (typeof self.iso_preact_const_cache[component_name] !== 'undefined') {
35
- constant = self.iso_preact_const_cache[component_name]
36
- } else {
37
- try {
38
- constant = self.$const_get(component_name);
39
- self.iso_preact_const_cache[component_name] = constant;
40
- } catch(err) { }
41
- }
42
- if (constant && typeof constant.preact_component !== 'undefined') {
43
- return Opal.Preact.internal_prepare_args_and_render(constant.preact_component, args, block);
44
- }
45
- return #{_preact_component_class_resolution_original_method_missing(component_name, *args, block)};
27
+ def method_missing(component_name, *args, &block)
28
+ # check for ruby component and render it
29
+ # otherwise pass on method missing
30
+ %x{
31
+ var constant = null;
32
+ if (typeof self.iso_preact_const_cache === 'undefined') { self.iso_preact_const_cache = {}; }
33
+ if (typeof self.iso_preact_const_cache[component_name] !== 'undefined') {
34
+ constant = self.iso_preact_const_cache[component_name]
35
+ } else {
36
+ try {
37
+ constant = self.$const_get(component_name);
38
+ self.iso_preact_const_cache[component_name] = constant;
39
+ } catch(err) { }
40
+ }
41
+ if (constant && typeof constant.preact_component !== 'undefined') {
42
+ return Opal.Preact.internal_prepare_args_and_render(constant.preact_component, args, block);
46
43
  }
47
- end
44
+ return #{_preact_component_class_resolution_original_method_missing(component_name, *args, block)};
45
+ }
48
46
  end
49
47
  end
48
+ end
50
49
 
51
- unless method_defined?(:_preact_component_resolution_original_method_missing)
52
- alias _preact_component_resolution_original_method_missing method_missing
53
- end
50
+ unless method_defined?(:_preact_component_resolution_original_method_missing)
51
+ alias _preact_component_resolution_original_method_missing method_missing
52
+ end
54
53
 
55
- def method_missing(component_name, *args, &block)
56
- # Further on it must check for modules, because $const_get does not take
57
- # the full nesting into account, as usually its called via $$ with the
58
- # nesting provided by the compiler.
59
- %x{
60
- var constant;
61
- if (typeof self.iso_preact_const_cache === 'undefined') { self.iso_preact_const_cache = {}; }
62
- if (typeof self.iso_preact_const_cache[component_name] !== 'undefined') {
63
- constant = self.iso_preact_const_cache[component_name]
64
- } else if (typeof self.$$is_a_module !== 'undefined') {
65
- try {
66
- constant = self.$const_get(component_name);
67
- self.iso_preact_const_cache[component_name] = constant;
68
- } catch(err) { }
69
- } else {
70
- let sc = self.$class();
71
- try {
72
- constant = sc.$const_get(component_name);
73
- self.iso_preact_const_cache[component_name] = constant;
74
- } catch(err) {
75
- var module_names = sc.$to_s().split("::");
76
- var module_name;
77
- for (var i = module_names.length - 1; i > 0; i--) {
78
- module_name = module_names.slice(0, i).join('::');
79
- try {
80
- constant = sc.$const_get(module_name).$const_get(component_name, false);
81
- self.iso_preact_const_cache[component_name] = constant;
82
- break;
83
- } catch(err) { }
84
- }
54
+ def method_missing(component_name, *args, &block)
55
+ # Further on it must check for modules, because $const_get does not take
56
+ # the full nesting into account, as usually its called via $$ with the
57
+ # nesting provided by the compiler.
58
+ %x{
59
+ var constant;
60
+ if (typeof self.iso_preact_const_cache === 'undefined') { self.iso_preact_const_cache = {}; }
61
+ if (typeof self.iso_preact_const_cache[component_name] !== 'undefined') {
62
+ constant = self.iso_preact_const_cache[component_name]
63
+ } else if (typeof self.$$is_a_module !== 'undefined') {
64
+ try {
65
+ constant = self.$const_get(component_name);
66
+ self.iso_preact_const_cache[component_name] = constant;
67
+ } catch(err) { }
68
+ } else {
69
+ let sc = self.$class();
70
+ try {
71
+ constant = sc.$const_get(component_name);
72
+ self.iso_preact_const_cache[component_name] = constant;
73
+ } catch(err) {
74
+ var module_names = sc.$to_s().split("::");
75
+ var module_name;
76
+ for (var i = module_names.length - 1; i > 0; i--) {
77
+ module_name = module_names.slice(0, i).join('::');
78
+ try {
79
+ constant = sc.$const_get(module_name).$const_get(component_name, false);
80
+ self.iso_preact_const_cache[component_name] = constant;
81
+ break;
82
+ } catch(err) { }
85
83
  }
86
84
  }
87
- if (constant && typeof constant.preact_component !== 'undefined') {
88
- return Opal.Preact.internal_prepare_args_and_render(constant.preact_component, args, block);
89
- }
90
- return #{_preact_component_resolution_original_method_missing(component_name, *args, block)};
91
85
  }
92
- end
86
+ if (constant && typeof constant.preact_component !== 'undefined') {
87
+ return Opal.Preact.internal_prepare_args_and_render(constant.preact_component, args, block);
88
+ }
89
+ return #{_preact_component_resolution_original_method_missing(component_name, *args, block)};
90
+ }
93
91
  end
94
92
  end
@@ -5,7 +5,7 @@ module Preact
5
5
  def initialize(native)
6
6
  @native = native
7
7
  end
8
-
8
+
9
9
  def is_wrapped_context
10
10
  true
11
11
  end
@@ -22,8 +22,10 @@ module Preact
22
22
  if (block !== nil) {
23
23
  operabu.push([]);
24
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); }
25
+ try {
26
+ let block_result = block.$call(value);
27
+ if (block_result && block_result !== nil) { Opal.Preact.render_block_result(block_result); }
28
+ } catch (e) { console.error(e.message === nil ? 'error at' : e.message, e.stack); }
27
29
  // console.log("consumer popping", operabu, operabu.toString());
28
30
  children = operabu.pop();
29
31
  if (children.length === 1) { children = children[0]; }
@@ -1,62 +1,60 @@
1
- module Preact
2
- module Elements
3
- # https://www.w3.org/TR/html52/fullindex.html#index-elements
4
- # https://www.w3.org/TR/SVG11/eltindex.html
5
- SUPPORTED_HTML_AND_SVG_ELEMENTS = %w[
6
- a abbr address area article aside audio
7
- b base bdi bdo blockquote body br button
8
- canvas caption cite code col colgroup
9
- data datalist dd del details dfn dialog div dl dt
10
- em embed
11
- fieldset figcaption figure footer form
12
- h1 h2 h3 h4 h5 h6 head header hr html
13
- i iframe img input ins
14
- kbd
15
- label legend li link
16
- main map mark meta meter
17
- nav noscript
18
- object ol optgroup option output
19
- p param picture pre progress
20
- q
21
- rp rt rtc ruby
22
- s samp script section select small source span strong style sub summary sup
23
- table tbody td template textarea tfoot th thead time title tr track
24
- u ul
25
- var video
26
- wbr
27
- altGlyph altGlyphDef altGlyphItem animate animateColor animateMotion animateTransform
28
- circle clipPath color-profile cursor
29
- defs desc
30
- ellipse
31
- feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting
32
- feDisplacementMap feDistantLight feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur
33
- feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting
34
- feSpotLight feTile feTurbulence
35
- filter font font-face font-face-format font-face-name font-face-src font-face-uri foreignObject
36
- g glyph glyphRef
37
- hkern
38
- image
39
- line linearGradient
40
- marker mask metadata missing-glyph mpath
41
- path pattern polygon polyline
42
- radialGradient rect
43
- script set stop style svg switch symbol
44
- text textPath tref tspan
45
- use
46
- view vkern
47
- ]
1
+ module Preact::Elements
2
+ # https://www.w3.org/TR/html52/fullindex.html#index-elements
3
+ # https://www.w3.org/TR/SVG11/eltindex.html
4
+ SUPPORTED_HTML_AND_SVG_ELEMENTS = %w[
5
+ a abbr address area article aside audio
6
+ b base bdi bdo blockquote body br button
7
+ canvas caption cite code col colgroup
8
+ data datalist dd del details dfn dialog div dl dt
9
+ em embed
10
+ fieldset figcaption figure footer form
11
+ h1 h2 h3 h4 h5 h6 head header hr html
12
+ i iframe img input ins
13
+ kbd
14
+ label legend li link
15
+ main map mark meta meter
16
+ nav noscript
17
+ object ol optgroup option output
18
+ p param picture pre progress
19
+ q
20
+ rp rt rtc ruby
21
+ s samp script section select small source span strong style sub summary sup
22
+ table tbody td template textarea tfoot th thead time title tr track
23
+ u ul
24
+ var video
25
+ wbr
26
+ altGlyph altGlyphDef altGlyphItem animate animateColor animateMotion animateTransform
27
+ circle clipPath color-profile cursor
28
+ defs desc
29
+ ellipse
30
+ feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting
31
+ feDisplacementMap feDistantLight feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur
32
+ feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting
33
+ feSpotLight feTile feTurbulence
34
+ filter font font-face font-face-format font-face-name font-face-src font-face-uri foreignObject
35
+ g glyph glyphRef
36
+ hkern
37
+ image
38
+ line linearGradient
39
+ marker mask metadata missing-glyph mpath
40
+ path pattern polygon polyline
41
+ radialGradient rect
42
+ script set stop style svg switch symbol
43
+ text textPath tref tspan
44
+ use
45
+ view vkern
46
+ ]
48
47
 
49
- SUPPORTED_HTML_AND_SVG_ELEMENTS.each do |element|
50
- define_method(element) do |*args, &block|
51
- `Opal.Preact.internal_prepare_args_and_render(element, args, block)`
52
- end
53
- define_method(`element.toUpperCase()`) do |*args, &block|
54
- `Opal.Preact.internal_prepare_args_and_render(element, args, block)`
55
- end
48
+ SUPPORTED_HTML_AND_SVG_ELEMENTS.each do |element|
49
+ define_method(element) do |*args, &block|
50
+ `Opal.Preact.internal_prepare_args_and_render(element, args, block)`
56
51
  end
57
-
58
- def Fragment(*args, &block)
59
- `Opal.Preact.internal_prepare_args_and_render(Opal.global.Preact.Fragment, args, block)`
52
+ define_method(`element.toUpperCase()`) do |*args, &block|
53
+ `Opal.Preact.internal_prepare_args_and_render(element, args, block)`
60
54
  end
61
55
  end
56
+
57
+ def Fragment(*args, &block)
58
+ `Opal.Preact.internal_prepare_args_and_render(Opal.global.Preact.Fragment, args, block)`
59
+ end
62
60
  end
@@ -1,3 +1,3 @@
1
1
  module Preact
2
- VERSION = '10.6.29'
2
+ VERSION = '10.6.33'
3
3
  end
data/lib/preact.rb CHANGED
@@ -80,6 +80,8 @@ module Preact
80
80
  } else { operain(component, null, null, block); }
81
81
  };
82
82
 
83
+ self.using_did_catch = false;
84
+
83
85
  self.active_components = [];
84
86
 
85
87
  self.active_component = function() {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-preact
3
3
  version: !ruby/object:Gem::Version
4
- version: 10.6.29
4
+ version: 10.6.33
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-02-05 00:00:00.000000000 Z
11
+ date: 2022-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -86,42 +86,42 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.14.8
89
+ version: 0.14.9
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: 0.14.8
96
+ version: 0.14.9
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: isomorfeus-redux
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 4.1.11
103
+ version: 4.1.15
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: 4.1.11
110
+ version: 4.1.15
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: isomorfeus-speednode
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.4.8
117
+ version: 0.4.9
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 0.4.8
124
+ version: 0.4.9
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: dalli
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: 0.6.4
173
+ version: 0.6.5
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: 0.6.4
180
+ version: 0.6.5
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: rake
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -206,7 +206,7 @@ dependencies:
206
206
  - - "~>"
207
207
  - !ruby/object:Gem::Version
208
208
  version: '3.10'
209
- description: Write Preact Components in Ruby.
209
+ description: Write Preact Components in Ruby, including styles and reactive data access.
210
210
  email:
211
211
  - jan@kursator.com
212
212
  executables: []
@@ -449,11 +449,12 @@ files:
449
449
  - node_modules/wouter-preact/use-location.d.ts
450
450
  - node_modules/wouter-preact/use-location.js
451
451
  - package.json
452
- homepage: http://isomorfeus.com
452
+ homepage: https://isomorfeus.com
453
453
  licenses:
454
454
  - MIT
455
455
  metadata:
456
456
  github_repo: ssh://github.com/isomorfeus/gems
457
+ source_code_uri: https://github.com/isomorfeus/isomorfeus-preact
457
458
  post_install_message:
458
459
  rdoc_options: []
459
460
  require_paths:
@@ -472,5 +473,5 @@ requirements: []
472
473
  rubygems_version: 3.3.3
473
474
  signing_key:
474
475
  specification_version: 4
475
- summary: Preact for the Isomorfeus Framework Project.
476
+ summary: Preact Components for Isomorfeus.
476
477
  test_files: []