Sha256: ea0a413e37a1e4c703419fd9f2e37a782574cde9145dbccc7335cfa482ed2ce5

Contents?: true

Size: 1.01 KB

Versions: 15

Compression:

Stored size: 1.01 KB

Contents

class Redirect < Preact::Component
  EVENT_PUSH_STATE = "pushState"
  EVENT_REPLACE_STATE = "replaceState"

  self.context_type = RouterContext

  def initialize(props, context)
    super(props, context)
    if RUBY_ENGINE == 'opal'
      @history = if `typeof window !== "undefined"`
                    `window.history`
                else
                    `{ length: 1, state: null, scrollRestoration: "auto", pushState: function(e,t,n){}, replaceState: function(e,t,n){} }`
                end
      @base = ''
    end
  end

  def navigate
    if RUBY_ENGINE == 'opal'
      to = props[:to] || props[:href]
      m = props[:replace] ? EVENT_REPLACE_STATE : EVENT_PUSH_STATE
      `#@history[m](null, "", to[0] === "~" ? to.slice(1) : #@base + to)`
      context[:router][:callback].call if context[:router].key?(:callback)
    end
  end

  render do
    if RUBY_ENGINE == 'opal'
      @base = context[:router][:base] if context[:router].key?(:base)
      navigate
    end
    nil
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
isomorfeus-preact-23.7.0.rc5 lib/redirect.rb
isomorfeus-preact-23.7.0.rc4 lib/redirect.rb
isomorfeus-preact-23.7.0.rc3 lib/redirect.rb
isomorfeus-preact-23.7.0.rc2 lib/redirect.rb
isomorfeus-preact-23.7.0.rc1 lib/redirect.rb
isomorfeus-preact-23.6.0.rc5 lib/redirect.rb
isomorfeus-preact-23.6.0.rc4 lib/redirect.rb
isomorfeus-preact-23.6.0.rc3 lib/redirect.rb
isomorfeus-preact-23.6.0.rc2 lib/redirect.rb
isomorfeus-preact-23.6.0.rc1 lib/redirect.rb
isomorfeus-preact-23.1.0.rc2 lib/redirect.rb
isomorfeus-preact-23.1.0.rc1 lib/redirect.rb
isomorfeus-preact-22.11.0.rc1 lib/redirect.rb
isomorfeus-preact-22.10.0.rc2 lib/redirect.rb
isomorfeus-preact-22.10.0.rc1 lib/redirect.rb