Sha256: b8da0007b2c2f28ae2e7f379e47b1ac04ec86a9bc6104090fcbb81b74a559425

Contents?: true

Size: 1.23 KB

Versions: 33

Compression:

Stored size: 1.23 KB

Contents

module LucidComponent
  class ClassStoreProxy
    def initialize(component_name, native = nil)
      @component_name = component_name
      @native = native
    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 class state, simply a dispatch
        action = { type: 'CLASS_STATE', class: @component_name, name: (`key.endsWith('=')` ? key.chop : key), value: args[0] }
        Isomorfeus.store.collect_and_defer_dispatch(action)
      else
        # get class state
        # check if we have a component local state value
        if `#@native?.props?.iso_store?.class_state?.[#@component_name]?.hasOwnProperty?.(key)`
          return `#@native.props.iso_store.class_state[#@component_name][key]`
        else
          a_state = Isomorfeus.store.get_state
          if a_state.key?(:class_state) && a_state[:class_state].key?(@component_name) && a_state[:class_state][@component_name].key?(key)
            return a_state[:class_state][@component_name][key]
          end
        end
        # otherwise return nil
        return nil
      end
    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
isomorfeus-preact-10.9.0 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.8.2 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.8.1 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.8.0 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.7.3 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.7.2 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.7.1 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.7.0 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.6.62 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.6.61 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.6.60 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.6.59 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.6.58 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.6.57 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.6.56 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.6.55 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.6.54 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.6.53 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.6.52 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb
isomorfeus-preact-10.6.51 lib/isomorfeus_preact/lucid_component/class_store_proxy.rb