Sha256: c27f94ba5e0bc7751acc1209d8cc2632e57144ac9183bdc7498161e01cc09886
Contents?: true
Size: 1.59 KB
Versions: 2
Compression:
Stored size: 1.59 KB
Contents
module LucidComponent class ClassStoreProxy def initialize(component_instance) @native_component_instance = component_instance.to_n @component_instance = component_instance @component_name = component_instance.class.to_s end def method_missing(key, *args, &block) @native_component_instance.JS.register_used_store_path(['component_class_state', @component_name, key]) if `args.length > 0` # set class state, simply a dispatch action = { type: 'COMPONENT_CLASS_STATE', class: @component_name, name: (`key.endsWith('=')` ? key.chop : key), value: args[0] } Isomorfeus.store.dispatch(action) else # get class state # check if we have a component local state value if @native_component_instance.JS['context'].JS[:component_class_state].JS[@component_name] && @native_component_instance.JS['context'].JS[:component_class_state].JS[@component_name].JS.hasOwnProperty(key) return @native_component_instance.JS['context'].JS[:component_class_state].JS[@component_name].JS[key] elsif @component_instance.class.default_class_store_defined && @component_instance.class.class_store.to_h.key?(key) # check if a default value was given return @component_instance.class.class_store.to_h[key] end # otherwise return nil return nil end end def dispatch(action) Isomorfeus.store.dispatch(action) end def subscribe(&block) Isomorfeus.store.subscribe(&block) end def unsubscribe(unsubscriber) `unsubscriber()` end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
isomorfeus-react-16.9.16 | lib/lucid_component/class_store_proxy.rb |
isomorfeus-react-16.9.15 | lib/lucid_component/class_store_proxy.rb |