Sha256: 6f2c4c8932af62837cd4d204072dc72b61f12b3aa083b4b86b776302fdd81d90
Contents?: true
Size: 1.05 KB
Versions: 4
Compression:
Stored size: 1.05 KB
Contents
module Inesita module Component include VirtualDOM def parent(component) @parent = component end def mount(element) @virtual_dom = NodeFactory.new(method(:render), self).nodes.first @mount_point = VirtualDOM.create(@virtual_dom) element.inner_dom = @mount_point end def update if @virtual_dom && @mount_point new_virtual_dom = NodeFactory.new(method(:render), self).nodes.first diff = VirtualDOM.diff(@virtual_dom, new_virtual_dom) VirtualDOM.patch(@mount_point, diff) @virtual_dom = new_virtual_dom else @parent.update end end def self.included(base) base.extend(ClassMethods) end module ClassMethods def component(name, instance) define_method name do unless instance_variable_get(:"@#{name}") instance_variable_set(:"@#{name}", instance) instance_variable_get(:"@#{name}").parent(self) end instance_variable_get(:"@#{name}") end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
inesita-0.0.6 | opal/inesita/component.rb |
inesita-0.0.5 | opal/inesita/component.rb |
inesita-0.0.4 | opal/inesita/component.rb |
inesita-0.0.3 | opal/inesita/component.rb |