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;