lib/preact.rb in isomorfeus-preact-10.6.26 vs lib/preact.rb in isomorfeus-preact-10.6.27
- old
+ new
@@ -108,29 +108,10 @@
self.active_redux_components.pop();
}
self.active_components.pop();
};
- function isObject(obj) { return (obj && typeof obj === 'object'); }
-
- self.merge_deep = function(one, two) {
- return [one, two].reduce(function(pre, obj) {
- Object.keys(obj).forEach(function(key){
- let pVal = pre[key];
- let oVal = obj[key];
- if (Array.isArray(pVal) && Array.isArray(oVal)) {
- pre[key] = pVal.concat.apply(this, oVal);
- } else if (isObject(pVal) && isObject(oVal)) {
- pre[key] = self.merge_deep(pVal, oVal);
- } else {
- pre[key] = oVal;
- }
- });
- return pre;
- }, {});
- };
-
self.prop_dictionary = {};
self.to_native_preact_props = function(ruby_style_props) {
let result = {};
let keys = ruby_style_props.$$keys;
@@ -229,25 +210,18 @@
} else {
operabu[operabu.length - 1].push(Opal.global.Preact.createElement(component, native_props));
}
};
- self.deep_force_update = function(component) {
- if (component.forceUpdate) { component.forceUpdate(); }
- if (component.__c) { self.deep_force_update(component.__c); }
- else if (component.base) { self.update_components_from_dom(component.base); }
- };
-
- self.update_components_from_dom = function(node, fn) {
- let children = node.childNodes;
- for (let i=children && children.length; i--;) {
- let child = children[i];
- if (child.__c) { self.deep_force_update(child.__c); }
- else { self.update_components_from_dom(child, fn); }
+ self.deep_force_update = function(vnode) {
+ if (vnode.__c && vnode.__c.forceUpdate) { vnode.__c.forceUpdate(); }
+ if (vnode.__k) {
+ for (let i=vnode.__k.length-1; i>=0; i--) {
+ self.deep_force_update(vnode.__k[i]);
+ }
}
};
}
-
def self.create_element(type, props = nil, children = nil, &block)
%x{
const operabu = self.render_buffer;
let component = null;