Sha256: ffcac757b78a1d87a1a69961af8069b9838c4b4737e1fe6e81aa36cb36a1ebce

Contents?: true

Size: 1.34 KB

Versions: 71

Compression:

Stored size: 1.34 KB

Contents

module LucidComponent
  class ComponentClassStoreDefaults
    def initialize(state, component_name)
      @state = state
      @component_name = component_name
      if @state.isomorfeus_store
        @state.isomorfeus_store.merge!(component_class_state: { @component_name => {} })
      else
        @state.isomorfeus_store = { component_class_state: { @component_name => {} } }
      end
    end

    def method_missing(key, *args, &block)
      if `args.length > 0`
        # set initial class state
        key = key.chop if `key.endsWith('=')`
        @state.isomorfeus_store[:component_class_state][@component_name][key] = args[0]
        current_state = Isomorfeus.store.get_state
        if !(current_state[:component_class_state].key?(@component_name) && current_state[:component_class_state][@component_name].key?(key))
          Isomorfeus.store.dispatch(type: 'COMPONENT_CLASS_STATE', class: @component_name, name: key, value: args[0])
        end
      else
        # get class state

        # check if we have a component local state value

        if @state.isomorfeus_store[:component_class_state][@component_name].key?(key)
          return @state.isomorfeus_store[:component_class_state][@component_name][key]
        end
      end
      nil
    end

    def to_h
      @state.isomorfeus_store[:component_class_state][@component_name]
    end
  end
end

Version data entries

71 entries across 71 versions & 1 rubygems

Version Path
isomorfeus-react-16.12.24 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.23 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.22 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.21 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.20 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.19 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.18 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.17 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.16 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.15 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.14 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.13 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.12 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.11 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.10 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.9 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.8 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.7 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.6 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb
isomorfeus-react-16.12.5 lib/isomorfeus_react/lucid_component/component_class_store_defaults.rb