Sha256: bf135af3a5ab46bfdd4f174e49a65abc200b22df84ca2676e4bbbb67308a36a6
Contents?: true
Size: 1.3 KB
Versions: 1
Compression:
Stored size: 1.3 KB
Contents
module Isomorfeus class PreactSSR def initialize(component_name, props, session_id, location, locale) @session_id = session_id @component_name = component_name @props = props @location = location @locale = locale end def render(skip_ssr) Isomorfeus.browser_location = Browser::Location.new(@location) Isomorfeus.current_locale = @locale if @locale NanoCSS.instance = NanoCSS.new(given_renderer: NanoCSS.global_instance.renderer.deep_dup) Isomorfeus.init_store Isomorfeus.store.clear! Isomorfeus.store.dispatch(type: 'I18N_MERGE', data: { locale: @locale, domain: Isomorfeus.i18n_domain }) return '' if skip_ssr c = Isomorfeus.current_user if c.respond_to?(:reload) Thread.current[:isomorfeus_user] = LocalSystem.new begin c.reload ensure Thread.current[:isomorfeus_user] = c end end render_component_to_string(@component_name, @props) end def render_component_to_string(component_name, props) component = component_name.is_a?(String) ? self.class.const_get(component_name) : component_name ::Preact._vnode_id = 0 ::Preact.render_to_string(::Preact.create_element(component, props)) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
isomorfeus-preact-22.9.0.rc9 | lib/isomorfeus/preact/ssr.rb |