Sha256: a514c2b2c1fc874b3185041eba5ba5f734b1aee6b2c89b82917881d06eb37b07
Contents?: true
Size: 1.53 KB
Versions: 47
Compression:
Stored size: 1.53 KB
Contents
module LucidComponent class InstanceStoreProxy def initialize(component_instance) @native = component_instance.to_n @component_instance = component_instance @component_object_id = component_instance.object_id.to_s end def [](key) method_missing(key) end def []=(key, value) method_missing(key, value) end def method_missing(key, *args, &block) if `args.length > 0` # set instance state, simply a dispatch action = { type: 'INSTANCE_STATE', object_id: @component_object_id, name: (`key.endsWith('=')` ? key.chop : key), value: args[0] } Isomorfeus.store.collect_and_defer_dispatch(action) else # get instance state if @native.JS[:props].JS[:iso_store] if @native.JS[:props].JS[:iso_store].JS[:instance_state] && @native.JS[:props].JS[:iso_store].JS[:instance_state].JS[@component_object_id] && @native.JS[:props].JS[:iso_store].JS[:instance_state].JS[@component_object_id].JS.hasOwnProperty(key) # check if we have a component local state value return @native.JS[:props].JS[:iso_store].JS[:instance_state].JS[@component_object_id].JS[key] end else a_state = Isomorfeus.store.get_state if a_state.key?(:instance_state) && a_state[:instance_state].key?(key) return a_state[:instance_state][key] end end # otherwise return nil return nil end end end end
Version data entries
47 entries across 47 versions & 1 rubygems