Sha256: cae66143ab956f4083593c19f0d1caae3db9757bce668d245d60d1cc5b0ae6e3

Contents?: true

Size: 1.64 KB

Versions: 27

Compression:

Stored size: 1.64 KB

Contents

module LucidComponent
  module Api
    def self.included(base)
      base.instance_exec do
        # store
        attr_accessor :app_store
        attr_accessor :class_store
        attr_accessor :store

        def class_store
          @class_store ||= ::LucidComponent::ClassStoreProxy.new(self.to_s)
        end

        # preloading
        def preload(&block)
          `base.preload_block = block`
          component_did_mount do
            unless self.state.preloaded
              @_preload_promise.then { self.state.preloaded = true }.fail do |result|
                err_text = "#{self.class.name}: preloading failed, last result: #{result.nil? ? 'nil' : result}!"
                `console.error(err_text)`
              end
            end
          end
        end

        def while_loading(option = nil, &block)
          wl_block = proc do
            if @_preload_promise.resolved?
              instance_exec(&`base.render_block`)
            else
              instance_exec(&block)
            end
          end
          `base.while_loading_block = wl_block`
        end
      end

      # stores
      def local_store
        LocalStore
      end

      def session_store
        SessionStore
      end

      def theme
        props.theme
      end

      # preloading
      def execute_preload_block
        @_preload_promise = instance_exec(&self.class.JS[:preload_block])
        @_preload_promise.resolved?
      end

      def preloaded?
        !!state.preloaded
      end

      # requires transport
      def current_user
        Isomorfeus.current_user
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
isomorfeus-preact-10.6.14 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.6.13 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.6.12 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.6.11 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.6.10 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.6.9 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.6.8 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.6.7 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.6.6 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.6.5 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.6.4 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.6.3 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.6.2 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.6.1 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.6.0 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.5.11 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.5.10 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.5.9 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.5.8 lib/isomorfeus_preact/lucid_component/api.rb
isomorfeus-preact-10.5.7 lib/isomorfeus_preact/lucid_component/api.rb